@@ -1168,7 +1168,7 @@ static void destroy_extended_registers(Context *ctx, unsigned int live)
1168
1168
1169
1169
#define DO_RETURN () \
1170
1170
{ \
1171
- int module_index = ctx->cp >> 24; \
1171
+ int module_index = ((uintptr_t) ctx->cp) >> 24; \
1172
1172
if (module_index == prev_mod->module_index) { \
1173
1173
Module *t = mod; \
1174
1174
mod = prev_mod; \
@@ -1179,7 +1179,7 @@ static void destroy_extended_registers(Context *ctx, unsigned int live)
1179
1179
mod = globalcontext_get_module_by_index(glb, module_index); \
1180
1180
code = mod->code->code; \
1181
1181
} \
1182
- pc = code + ((ctx->cp & 0xFFFFFF) >> 2); \
1182
+ pc = code + ((((uintptr_t) ctx->cp) & 0xFFFFFF) >> 2); \
1183
1183
}
1184
1184
1185
1185
#define HANDLE_ERROR () \
@@ -1395,7 +1395,7 @@ static int get_catch_label_and_change_module(Context *ctx, Module **mod)
1395
1395
1396
1396
COLD_FUNC static void cp_to_mod_lbl_off (term cp , Context * ctx , Module * * cp_mod , int * label , int * l_off )
1397
1397
{
1398
- Module * mod = globalcontext_get_module_by_index (ctx -> global , cp >> 24 );
1398
+ Module * mod = globalcontext_get_module_by_index (ctx -> global , (( uintptr_t ) cp ) >> 24 );
1399
1399
long mod_offset = (cp & 0xFFFFFF ) >> 2 ;
1400
1400
1401
1401
* cp_mod = mod ;
@@ -2590,7 +2590,7 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
2590
2590
#ifdef IMPL_EXECUTE_LOOP
2591
2591
TRACE_RETURN (ctx );
2592
2592
2593
- if ((long ) ctx -> cp == -1 ) {
2593
+ if ((intptr_t ) ctx -> cp == -1 ) {
2594
2594
return 0 ;
2595
2595
}
2596
2596
@@ -3715,7 +3715,7 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
3715
3715
RAISE_ERROR (OUT_OF_MEMORY_ATOM );
3716
3716
}
3717
3717
}
3718
- if ((long ) ctx -> cp == -1 ) {
3718
+ if ((intptr_t ) ctx -> cp == -1 ) {
3719
3719
return 0 ;
3720
3720
}
3721
3721
@@ -4285,8 +4285,8 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
4285
4285
DECODE_COMPACT_TERM (src , pc );
4286
4286
term arg2 ;
4287
4287
DECODE_COMPACT_TERM (arg2 , pc );
4288
- term flags ;
4289
- DECODE_LITERAL (flags , pc );
4288
+ uint32_t flags_value ;
4289
+ DECODE_LITERAL (flags_value , pc );
4290
4290
DEST_REGISTER (dreg );
4291
4291
DECODE_DEST_REGISTER (dreg , pc );
4292
4292
@@ -4295,7 +4295,7 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
4295
4295
#endif
4296
4296
4297
4297
#ifdef IMPL_EXECUTE_LOOP
4298
- TRACE ("bs_get_utf16/5, fail=%i src=0x%lx arg2=0x%lx flags=0x%lx dreg=%c%i\n" , fail , src , arg2 , flags , T_DEST_REG (dreg ));
4298
+ TRACE ("bs_get_utf16/5, fail=%i src=0x%lx arg2=0x%lx flags=0x%" PRIu32 " dreg=%c%i\n" , fail , src , arg2 , flags_value , T_DEST_REG (dreg ));
4299
4299
4300
4300
VERIFY_IS_MATCH_STATE (src , "bs_get_utf16" );
4301
4301
@@ -4304,7 +4304,7 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
4304
4304
4305
4305
int32_t val = 0 ;
4306
4306
size_t out_size = 0 ;
4307
- bool is_valid = bitstring_match_utf16 (src_bin , (size_t ) offset_bits , & val , & out_size , flags );
4307
+ bool is_valid = bitstring_match_utf16 (src_bin , (size_t ) offset_bits , & val , & out_size , flags_value );
4308
4308
4309
4309
if (!is_valid ) {
4310
4310
pc = mod -> labels [fail ];
@@ -4398,8 +4398,8 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
4398
4398
DECODE_COMPACT_TERM (src , pc );
4399
4399
term arg2 ;
4400
4400
DECODE_COMPACT_TERM (arg2 , pc );
4401
- term flags ;
4402
- DECODE_LITERAL (flags , pc );
4401
+ uint32_t flags_value ;
4402
+ DECODE_LITERAL (flags_value , pc );
4403
4403
DEST_REGISTER (dreg );
4404
4404
DECODE_DEST_REGISTER (dreg , pc );
4405
4405
@@ -4408,15 +4408,15 @@ HOT_FUNC int scheduler_entry_point(GlobalContext *glb)
4408
4408
#endif
4409
4409
4410
4410
#ifdef IMPL_EXECUTE_LOOP
4411
- TRACE ("bs_get_utf32/5, fail=%i src=0x%lx arg2=0x%lx flags=0x%lx dreg=%c%i\n" , fail , src , arg2 , flags , T_DEST_REG (dreg ));
4411
+ TRACE ("bs_get_utf32/5, fail=%i src=0x%lx arg2=0x%lx flags=0x%" PRIu32 " dreg=%c%i\n" , fail , src , arg2 , flags_value , T_DEST_REG (dreg ));
4412
4412
4413
4413
VERIFY_IS_MATCH_STATE (src , "bs_get_utf32" );
4414
4414
4415
4415
term src_bin = term_get_match_state_binary (src );
4416
4416
avm_int_t offset_bits = term_get_match_state_offset (src );
4417
4417
4418
4418
int32_t val = 0 ;
4419
- bool is_valid = bitstring_match_utf32 (src_bin , (size_t ) offset_bits , & val , flags );
4419
+ bool is_valid = bitstring_match_utf32 (src_bin , (size_t ) offset_bits , & val , flags_value );
4420
4420
4421
4421
if (!is_valid ) {
4422
4422
pc = mod -> labels [fail ];
0 commit comments