Fix issues reported by gcc -fsanitize flag (#678)
And refine some coding styles, fix JIT compiler data wasm table create issue, add license header for some files.
This commit is contained in:
@ -39,9 +39,9 @@ typedef float64 CellType_F64;
|
||||
goto out_of_bounds; \
|
||||
} while (0)
|
||||
|
||||
#define CHECK_ATOMIC_MEMORY_ACCESS() do { \
|
||||
if (((uintptr_t)maddr & ((1 << align) - 1)) != 0) \
|
||||
goto unaligned_atomic; \
|
||||
#define CHECK_ATOMIC_MEMORY_ACCESS() do { \
|
||||
if (((uintptr_t)maddr & (((uintptr_t)1 << align) - 1)) != 0)\
|
||||
goto unaligned_atomic; \
|
||||
} while (0)
|
||||
|
||||
static inline uint32
|
||||
@ -189,7 +189,7 @@ read_leb(const uint8 *buf, uint32 *p_offset, uint32 maxbits, bool sign)
|
||||
}
|
||||
if (sign && (shift < maxbits) && (byte & 0x40)) {
|
||||
/* Sign extend */
|
||||
result |= - ((uint64)1 << shift);
|
||||
result |= (~((uint64)0)) << shift;
|
||||
}
|
||||
*p_offset = offset;
|
||||
return result;
|
||||
@ -2060,31 +2060,19 @@ label_pop_csp_n:
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHL):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(uint32, uint32, I32, <<);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(uint32, uint32, I32, <<);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHR_S):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(int32, uint32, I32, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(int32, uint32, I32, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHR_U):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(uint32, uint32, I32, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(uint32, uint32, I32, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2211,31 +2199,19 @@ label_pop_csp_n:
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHL):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(uint64, uint64, I64, <<);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(uint64, uint64, I64, <<);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHR_S):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(int64, uint64, I64, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(int64, uint64, I64, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHR_U):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(uint64, uint64, I64, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(uint64, uint64, I64, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2266,12 +2242,12 @@ label_pop_csp_n:
|
||||
|
||||
HANDLE_OP (WASM_OP_F32_NEG):
|
||||
{
|
||||
int32 i32 = (int32)frame_sp[-1];
|
||||
int32 sign_bit = i32 & (1 << 31);
|
||||
uint32 u32 = frame_sp[-1];
|
||||
uint32 sign_bit = u32 & ((uint32)1 << 31);
|
||||
if (sign_bit)
|
||||
frame_sp[-1] = i32 & ~(1 << 31);
|
||||
frame_sp[-1] = u32 & ~((uint32)1 << 31);
|
||||
else
|
||||
frame_sp[-1] = (uint32)(i32 | (1 << 31));
|
||||
frame_sp[-1] = u32 | ((uint32)1 << 31);
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2360,12 +2336,12 @@ label_pop_csp_n:
|
||||
|
||||
HANDLE_OP (WASM_OP_F64_NEG):
|
||||
{
|
||||
int64 i64 = GET_I64_FROM_ADDR(frame_sp - 2);
|
||||
int64 sign_bit = i64 & (((int64)1) << 63);
|
||||
uint64 u64 = GET_I64_FROM_ADDR(frame_sp - 2);
|
||||
uint64 sign_bit = u64 & (((uint64)1) << 63);
|
||||
if (sign_bit)
|
||||
PUT_I64_TO_ADDR(frame_sp - 2, ((uint64)i64 & ~(((uint64)1) << 63)));
|
||||
PUT_I64_TO_ADDR(frame_sp - 2, (u64 & ~(((uint64)1) << 63)));
|
||||
else
|
||||
PUT_I64_TO_ADDR(frame_sp - 2, ((uint64)i64 | (((uint64)1) << 63)));
|
||||
PUT_I64_TO_ADDR(frame_sp - 2, (u64 | (((uint64)1) << 63)));
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
|
||||
@ -1989,31 +1989,19 @@ recover_br_info:
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHL):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(uint32, uint32, I32, <<);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(uint32, uint32, I32, <<);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHR_S):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(int32, uint32, I32, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(int32, uint32, I32, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I32_SHR_U):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC(uint32, uint32, I32, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2(uint32, uint32, I32, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2140,31 +2128,19 @@ recover_br_info:
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHL):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(uint64, uint64, I64, <<);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(uint64, uint64, I64, <<);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHR_S):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(int64, uint64, I64, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(int64, uint64, I64, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
HANDLE_OP (WASM_OP_I64_SHR_U):
|
||||
{
|
||||
#if defined(BUILD_TARGET_X86_64) || defined(BUILD_TARGET_X86_32)
|
||||
DEF_OP_NUMERIC_64(uint64, uint64, I64, >>);
|
||||
#else
|
||||
DEF_OP_NUMERIC2_64(uint64, uint64, I64, >>);
|
||||
#endif
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2195,13 +2171,13 @@ recover_br_info:
|
||||
|
||||
HANDLE_OP (WASM_OP_F32_NEG):
|
||||
{
|
||||
int32 i32 = (int32)frame_lp[GET_OFFSET()];
|
||||
uint32 u32 = frame_lp[GET_OFFSET()];
|
||||
uint32 sign_bit = u32 & ((uint32)1 << 31);
|
||||
addr_ret = GET_OFFSET();
|
||||
int32 sign_bit = i32 & (1 << 31);
|
||||
if (sign_bit)
|
||||
frame_lp[addr_ret] = i32 & ~(1 << 31);
|
||||
frame_lp[addr_ret] = u32 & ~((uint32)1 << 31);
|
||||
else
|
||||
frame_lp[addr_ret] = (uint32)(i32 | (1 << 31));
|
||||
frame_lp[addr_ret] = u32 | ((uint32)1 << 31);
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
@ -2290,14 +2266,14 @@ recover_br_info:
|
||||
|
||||
HANDLE_OP (WASM_OP_F64_NEG):
|
||||
{
|
||||
int64 i64 = GET_I64_FROM_ADDR(frame_lp + GET_OFFSET());
|
||||
int64 sign_bit = i64 & (((int64)1) << 63);
|
||||
uint64 u64 = GET_I64_FROM_ADDR(frame_lp + GET_OFFSET());
|
||||
uint64 sign_bit = u64 & (((uint64)1) << 63);
|
||||
if (sign_bit)
|
||||
PUT_I64_TO_ADDR(frame_lp + GET_OFFSET(),
|
||||
((uint64)i64 & ~(((uint64)1) << 63)));
|
||||
(u64 & ~(((uint64)1) << 63)));
|
||||
else
|
||||
PUT_I64_TO_ADDR(frame_lp + GET_OFFSET(),
|
||||
((uint64)i64 | (((uint64)1) << 63)));
|
||||
(u64 | (((uint64)1) << 63)));
|
||||
HANDLE_OP_END ();
|
||||
}
|
||||
|
||||
|
||||
@ -121,9 +121,9 @@ read_leb(uint8 **p_buf, const uint8 *buf_end,
|
||||
}
|
||||
else if (sign && maxbits == 32) {
|
||||
if (shift < maxbits) {
|
||||
/* Sign extend */
|
||||
result = (((int32)result) << (maxbits - shift))
|
||||
>> (maxbits - shift);
|
||||
/* Sign extend, second highest bit is the sign bit */
|
||||
if ((uint8)byte & 0x40)
|
||||
result |= (~((uint64)0)) << shift;
|
||||
}
|
||||
else {
|
||||
/* The top bits should be a sign-extension of the sign bit */
|
||||
@ -136,9 +136,9 @@ read_leb(uint8 **p_buf, const uint8 *buf_end,
|
||||
}
|
||||
else if (sign && maxbits == 64) {
|
||||
if (shift < maxbits) {
|
||||
/* Sign extend */
|
||||
result = (((int64)result) << (maxbits - shift))
|
||||
>> (maxbits - shift);
|
||||
/* Sign extend, second highest bit is the sign bit */
|
||||
if ((uint8)byte & 0x40)
|
||||
result |= (~((uint64)0)) << shift;
|
||||
}
|
||||
else {
|
||||
/* The top bits should be a sign-extension of the sign bit */
|
||||
|
||||
@ -89,9 +89,9 @@ read_leb(uint8 **p_buf, const uint8 *buf_end,
|
||||
}
|
||||
else if (sign && maxbits == 32) {
|
||||
if (shift < maxbits) {
|
||||
/* Sign extend */
|
||||
result = (((int32)result) << (maxbits - shift))
|
||||
>> (maxbits - shift);
|
||||
/* Sign extend, second highest bit is the sign bit */
|
||||
if ((uint8)byte & 0x40)
|
||||
result |= (~((uint64)0)) << shift;
|
||||
}
|
||||
else {
|
||||
/* The top bits should be a sign-extension of the sign bit */
|
||||
@ -105,9 +105,9 @@ read_leb(uint8 **p_buf, const uint8 *buf_end,
|
||||
}
|
||||
else if (sign && maxbits == 64) {
|
||||
if (shift < maxbits) {
|
||||
/* Sign extend */
|
||||
result = (((int64)result) << (maxbits - shift))
|
||||
>> (maxbits - shift);
|
||||
/* Sign extend, second highest bit is the sign bit */
|
||||
if ((uint8)byte & 0x40)
|
||||
result |= (~((uint64)0)) << shift;
|
||||
}
|
||||
else {
|
||||
/* The top bits should be a sign-extension of the sign bit */
|
||||
|
||||
Reference in New Issue
Block a user