aot: Make precheck functions use short-call for xtensa (#3418)
Note: this breaks AOT ABI for xtensa again because of a revert of an ABI-breaking change.
This commit is contained in:
@ -2522,26 +2522,15 @@ load_function_section(const uint8 *buf, const uint8 *buf_end, AOTModule *module,
|
||||
const uint8 *p = buf, *p_end = buf_end;
|
||||
uint32 i;
|
||||
uint64 size, text_offset;
|
||||
uint32 func_count = module->func_count;
|
||||
|
||||
#if defined(BUILD_TARGET_XTENSA)
|
||||
/*
|
||||
* For Xtensa XIP, real func_count is doubled, including aot_func and
|
||||
* aot_func_internal, so need to multiply func_count by 2 here.
|
||||
*/
|
||||
if (module->is_indirect_mode) {
|
||||
func_count *= 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
size = sizeof(void *) * (uint64)func_count;
|
||||
size = sizeof(void *) * (uint64)module->func_count;
|
||||
if (size > 0
|
||||
&& !(module->func_ptrs =
|
||||
loader_malloc(size, error_buf, error_buf_size))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < func_count; i++) {
|
||||
for (i = 0; i < module->func_count; i++) {
|
||||
if (sizeof(void *) == 8) {
|
||||
read_uint64(p, p_end, text_offset);
|
||||
}
|
||||
@ -2576,14 +2565,14 @@ load_function_section(const uint8 *buf, const uint8 *buf_end, AOTModule *module,
|
||||
module->start_function = NULL;
|
||||
}
|
||||
|
||||
size = sizeof(uint32) * (uint64)func_count;
|
||||
size = sizeof(uint32) * (uint64)module->func_count;
|
||||
if (size > 0
|
||||
&& !(module->func_type_indexes =
|
||||
loader_malloc(size, error_buf, error_buf_size))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < func_count; i++) {
|
||||
for (i = 0; i < module->func_count; i++) {
|
||||
read_uint32(p, p_end, module->func_type_indexes[i]);
|
||||
if (module->func_type_indexes[i] >= module->type_count) {
|
||||
set_error_buf(error_buf, error_buf_size, "unknown type");
|
||||
|
||||
@ -1153,21 +1153,10 @@ init_func_ptrs(AOTModuleInstance *module_inst, AOTModule *module,
|
||||
{
|
||||
uint32 i;
|
||||
void **func_ptrs;
|
||||
uint32 func_count = module->func_count;
|
||||
#if defined(BUILD_TARGET_XTENSA)
|
||||
/*
|
||||
* For Xtensa XIP, real func_count is doubled, including aot_func and
|
||||
* aot_func_internal, so need to multiply func_count by 2 here.
|
||||
*/
|
||||
if (module->is_indirect_mode) {
|
||||
func_count *= 2;
|
||||
}
|
||||
#endif
|
||||
uint64 total_size = ((uint64)module->import_func_count + module->func_count)
|
||||
* sizeof(void *);
|
||||
|
||||
uint64 total_size =
|
||||
((uint64)module->import_func_count + func_count) * sizeof(void *);
|
||||
|
||||
if (module->import_func_count + func_count == 0)
|
||||
if (module->import_func_count + module->func_count == 0)
|
||||
return true;
|
||||
|
||||
/* Allocate memory */
|
||||
@ -1189,8 +1178,8 @@ init_func_ptrs(AOTModuleInstance *module_inst, AOTModule *module,
|
||||
}
|
||||
|
||||
/* Set defined function pointers */
|
||||
bh_memcpy_s(func_ptrs, sizeof(void *) * func_count, module->func_ptrs,
|
||||
sizeof(void *) * func_count);
|
||||
bh_memcpy_s(func_ptrs, sizeof(void *) * module->func_count,
|
||||
module->func_ptrs, sizeof(void *) * module->func_count);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1200,21 +1189,10 @@ init_func_type_indexes(AOTModuleInstance *module_inst, AOTModule *module,
|
||||
{
|
||||
uint32 i;
|
||||
uint32 *func_type_index;
|
||||
uint32 func_count = module->func_count;
|
||||
#if defined(BUILD_TARGET_XTENSA)
|
||||
/*
|
||||
* For Xtensa XIP, real func_count is doubled, including aot_func and
|
||||
* aot_func_internal, so need to multiply func_count by 2 here.
|
||||
*/
|
||||
if (module->is_indirect_mode) {
|
||||
func_count *= 2;
|
||||
}
|
||||
#endif
|
||||
uint64 total_size = ((uint64)module->import_func_count + module->func_count)
|
||||
* sizeof(uint32);
|
||||
|
||||
uint64 total_size =
|
||||
((uint64)module->import_func_count + func_count) * sizeof(uint32);
|
||||
|
||||
if (module->import_func_count + func_count == 0)
|
||||
if (module->import_func_count + module->func_count == 0)
|
||||
return true;
|
||||
|
||||
/* Allocate memory */
|
||||
@ -1228,8 +1206,8 @@ init_func_type_indexes(AOTModuleInstance *module_inst, AOTModule *module,
|
||||
for (i = 0; i < module->import_func_count; i++, func_type_index++)
|
||||
*func_type_index = module->import_funcs[i].func_type_index;
|
||||
|
||||
bh_memcpy_s(func_type_index, sizeof(uint32) * func_count,
|
||||
module->func_type_indexes, sizeof(uint32) * func_count);
|
||||
bh_memcpy_s(func_type_index, sizeof(uint32) * module->func_count,
|
||||
module->func_type_indexes, sizeof(uint32) * module->func_count);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user