Refine codes and fix several issues (#1094)
Add aot relocation for ".rodata.str" symbol to support more cases Fix some coding style issues Fix aot block/value stack destroy issue Refine classic/fast interpreter codes Clear compile warning of libc_builtin_wrapper.c in 32-bit platform
This commit is contained in:
@ -694,7 +694,7 @@ static inline int64
|
||||
sign_ext_8_64(int8 val)
|
||||
{
|
||||
if (val & 0x80)
|
||||
return (int64)val | (int64)0xffffffffffffff00;
|
||||
return (int64)val | (int64)0xffffffffffffff00LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -702,7 +702,7 @@ static inline int64
|
||||
sign_ext_16_64(int16 val)
|
||||
{
|
||||
if (val & 0x8000)
|
||||
return (int64)val | (int64)0xffffffffffff0000;
|
||||
return (int64)val | (int64)0xffffffffffff0000LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -710,15 +710,19 @@ static inline int64
|
||||
sign_ext_32_64(int32 val)
|
||||
{
|
||||
if (val & (int32)0x80000000)
|
||||
return (int64)val | (int64)0xffffffff00000000;
|
||||
return (int64)val | (int64)0xffffffff00000000LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void
|
||||
word_copy(uint32 *dest, uint32 *src, unsigned num)
|
||||
{
|
||||
for (; num > 0; num--)
|
||||
*dest++ = *src++;
|
||||
if (dest != src) {
|
||||
/* No overlap buffer */
|
||||
bh_assert(!((src < dest) && (dest < src + num)));
|
||||
for (; num > 0; num--)
|
||||
*dest++ = *src++;
|
||||
}
|
||||
}
|
||||
|
||||
static inline WASMInterpFrame *
|
||||
@ -1067,7 +1071,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
||||
{
|
||||
value_type = *frame_ip++;
|
||||
param_cell_num = 0;
|
||||
cell_num = wasm_value_type_cell_num(value_type);
|
||||
cell_num = 0;
|
||||
handle_op_loop:
|
||||
PUSH_CSP(LABEL_TYPE_LOOP, param_cell_num, cell_num, frame_ip);
|
||||
HANDLE_OP_END();
|
||||
|
||||
@ -764,7 +764,7 @@ static inline int64
|
||||
sign_ext_8_64(int8 val)
|
||||
{
|
||||
if (val & 0x80)
|
||||
return (int64)val | (int64)0xffffffffffffff00;
|
||||
return (int64)val | (int64)0xffffffffffffff00LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -772,7 +772,7 @@ static inline int64
|
||||
sign_ext_16_64(int16 val)
|
||||
{
|
||||
if (val & 0x8000)
|
||||
return (int64)val | (int64)0xffffffffffff0000;
|
||||
return (int64)val | (int64)0xffffffffffff0000LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -780,15 +780,19 @@ static inline int64
|
||||
sign_ext_32_64(int32 val)
|
||||
{
|
||||
if (val & (int32)0x80000000)
|
||||
return (int64)val | (int64)0xffffffff00000000;
|
||||
return (int64)val | (int64)0xffffffff00000000LL;
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline void
|
||||
word_copy(uint32 *dest, uint32 *src, unsigned num)
|
||||
{
|
||||
for (; num > 0; num--)
|
||||
*dest++ = *src++;
|
||||
if (dest != src) {
|
||||
/* No overlap buffer */
|
||||
bh_assert(!((src < dest) && (dest < src + num)));
|
||||
for (; num > 0; num--)
|
||||
*dest++ = *src++;
|
||||
}
|
||||
}
|
||||
|
||||
static inline WASMInterpFrame *
|
||||
|
||||
@ -1099,18 +1099,12 @@ check_linked_symbol(WASMModuleInstance *module_inst, char *error_buf,
|
||||
&& !func->import_func_linked
|
||||
#endif
|
||||
) {
|
||||
#if WASM_ENABLE_SPEC_TEST != 0
|
||||
set_error_buf(error_buf, error_buf_size,
|
||||
"unknown import or incompatible import type");
|
||||
return false;
|
||||
#else
|
||||
#if WASM_ENABLE_WAMR_COMPILER == 0
|
||||
LOG_WARNING("warning: failed to link import function (%s, %s)",
|
||||
func->module_name, func->field_name);
|
||||
#else
|
||||
/* do nothing to avoid confused message */
|
||||
#endif /* WASM_ENABLE_WAMR_COMPILER == 0 */
|
||||
#endif /* WASM_ENABLE_SPEC_TEST != 0 */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user