@@ -78,10 +78,10 @@ static int32_t janetc_const(JanetCompiler *c, Janet x) {
7878static void janetc_loadconst (JanetCompiler * c , Janet k , int32_t reg ) {
7979 switch (janet_type (k )) {
8080 case JANET_NIL :
81- janetc_emit (c , (reg << 8 ) | JOP_LOAD_NIL );
81+ janetc_emit (c , (( uint32_t ) reg << 8 ) | JOP_LOAD_NIL );
8282 break ;
8383 case JANET_BOOLEAN :
84- janetc_emit (c , (reg << 8 ) |
84+ janetc_emit (c , (( uint32_t ) reg << 8 ) |
8585 (janet_unwrap_boolean (k ) ? JOP_LOAD_TRUE : JOP_LOAD_FALSE ));
8686 break ;
8787 case JANET_NUMBER : {
@@ -93,17 +93,17 @@ static void janetc_loadconst(JanetCompiler *c, Janet k, int32_t reg) {
9393 goto do_constant ;
9494 uint32_t iu = (uint32_t )i ;
9595 janetc_emit (c ,
96- (iu << 16 ) |
97- (reg << 8 ) |
96+ (( uint32_t ) iu << 16 ) |
97+ (( uint32_t ) reg << 8 ) |
9898 JOP_LOAD_INTEGER );
9999 break ;
100100 }
101101 default :
102102 do_constant : {
103103 int32_t cindex = janetc_const (c , k );
104104 janetc_emit (c ,
105- (cindex << 16 ) |
106- (reg << 8 ) |
105+ (( uint32_t ) cindex << 16 ) |
106+ (( uint32_t ) reg << 8 ) |
107107 JOP_LOAD_CONSTANT );
108108 break ;
109109 }
@@ -120,8 +120,8 @@ static void janetc_movenear(JanetCompiler *c,
120120 /* If we also are a reference, deref the one element array */
121121 if (src .flags & JANET_SLOT_REF ) {
122122 janetc_emit (c ,
123- (dest << 16 ) |
124- (dest << 8 ) |
123+ (( uint32_t ) dest << 16 ) |
124+ (( uint32_t ) dest << 8 ) |
125125 JOP_GET_INDEX );
126126 }
127127 } else if (src .envindex >= 0 ) {
@@ -147,15 +147,15 @@ static void janetc_moveback(JanetCompiler *c,
147147 int32_t refreg = janetc_regalloc_temp (& c -> scope -> ra , JANETC_REGTEMP_5 );
148148 janetc_loadconst (c , dest .constant , refreg );
149149 janetc_emit (c ,
150- (src << 16 ) |
151- (refreg << 8 ) |
150+ (( uint32_t ) src << 16 ) |
151+ (( uint32_t ) refreg << 8 ) |
152152 JOP_PUT_INDEX );
153153 janetc_regalloc_freetemp (& c -> scope -> ra , refreg , JANETC_REGTEMP_5 );
154154 } else if (dest .envindex >= 0 ) {
155155 /* Convert src to near reg */
156156 if (src > 255 ) {
157157 int32_t newsrc = JANETC_REGTEMP_5 + 0xF0 ;
158- janetc_emit (c , JOP_MOVE_NEAR | ((uint32_t )(src ) << 16 ) | (newsrc << 8 ));
158+ janetc_emit (c , JOP_MOVE_NEAR | ((uint32_t )(src ) << 16 ) | (( uint32_t ) newsrc << 8 ));
159159 src = newsrc ;
160160 }
161161 janetc_emit (c ,
@@ -199,7 +199,7 @@ static int32_t janetc_regfar(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp t
199199 janetc_movenear (c , nearreg , s );
200200 if (nearreg >= 0xF0 ) {
201201 reg = janetc_allocfar (c );
202- janetc_emit (c , JOP_MOVE_FAR | (nearreg << 8 ) | (reg << 16 ));
202+ janetc_emit (c , JOP_MOVE_FAR | (( uint32_t ) nearreg << 8 ) | (( uint32_t ) reg << 16 ));
203203 janetc_regalloc_freetemp (& c -> scope -> ra , nearreg , tag );
204204 } else {
205205 reg = nearreg ;
@@ -268,7 +268,7 @@ void janetc_copy(
268268static int32_t emit1s (JanetCompiler * c , uint8_t op , JanetSlot s , int32_t rest , int wr ) {
269269 int32_t reg = janetc_regnear (c , s , JANETC_REGTEMP_0 );
270270 int32_t label = janet_v_count (c -> buffer );
271- janetc_emit (c , op | (reg << 8 ) | ((uint32_t )rest << 16 ));
271+ janetc_emit (c , op | (( uint32_t ) reg << 8 ) | ((uint32_t ) rest << 16 ));
272272 if (wr )
273273 janetc_moveback (c , s , reg );
274274 janetc_free_regnear (c , s , reg , JANETC_REGTEMP_0 );
@@ -278,7 +278,7 @@ static int32_t emit1s(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t rest, i
278278int32_t janetc_emit_s (JanetCompiler * c , uint8_t op , JanetSlot s , int wr ) {
279279 int32_t reg = janetc_regfar (c , s , JANETC_REGTEMP_0 );
280280 int32_t label = janet_v_count (c -> buffer );
281- janetc_emit (c , op | (reg << 8 ));
281+ janetc_emit (c , op | (( uint32_t ) reg << 8 ));
282282 if (wr )
283283 janetc_moveback (c , s , reg );
284284 janetc_free_regnear (c , s , reg , JANETC_REGTEMP_0 );
@@ -310,7 +310,7 @@ static int32_t emit2s(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2,
310310 int32_t reg1 = janetc_regnear (c , s1 , JANETC_REGTEMP_0 );
311311 int32_t reg2 = janetc_regnear (c , s2 , JANETC_REGTEMP_1 );
312312 int32_t label = janet_v_count (c -> buffer );
313- janetc_emit (c , op | (reg1 << 8 ) | (reg2 << 16 ) | ((uint32_t )rest << 24 ));
313+ janetc_emit (c , op | (( uint32_t ) reg1 << 8 ) | (( uint32_t ) reg2 << 16 ) | ((uint32_t )rest << 24 ));
314314 janetc_free_regnear (c , s2 , reg2 , JANETC_REGTEMP_1 );
315315 if (wr )
316316 janetc_moveback (c , s1 , reg1 );
@@ -322,7 +322,7 @@ int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2,
322322 int32_t reg1 = janetc_regnear (c , s1 , JANETC_REGTEMP_0 );
323323 int32_t reg2 = janetc_regfar (c , s2 , JANETC_REGTEMP_1 );
324324 int32_t label = janet_v_count (c -> buffer );
325- janetc_emit (c , op | (reg1 << 8 ) | (reg2 << 16 ));
325+ janetc_emit (c , op | (( uint32_t ) reg1 << 8 ) | (( uint32_t ) reg2 << 16 ));
326326 janetc_free_regnear (c , s2 , reg2 , JANETC_REGTEMP_1 );
327327 if (wr )
328328 janetc_moveback (c , s1 , reg1 );
@@ -343,7 +343,7 @@ int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2
343343 int32_t reg2 = janetc_regnear (c , s2 , JANETC_REGTEMP_1 );
344344 int32_t reg3 = janetc_regnear (c , s3 , JANETC_REGTEMP_2 );
345345 int32_t label = janet_v_count (c -> buffer );
346- janetc_emit (c , op | (reg1 << 8 ) | (reg2 << 16 ) | ((uint32_t )reg3 << 24 ));
346+ janetc_emit (c , op | (( uint32_t ) reg1 << 8 ) | (( uint32_t ) reg2 << 16 ) | ((uint32_t ) reg3 << 24 ));
347347 janetc_free_regnear (c , s2 , reg2 , JANETC_REGTEMP_1 );
348348 janetc_free_regnear (c , s3 , reg3 , JANETC_REGTEMP_2 );
349349 if (wr )
0 commit comments