@@ -153,15 +153,15 @@ vm_init (ecma_compiled_code_t *program_p) /**< pointer to byte-code data */
153
153
/**
154
154
* Decode table for opcodes.
155
155
*/
156
- static const uint32_t vm_decode_table [] =
156
+ static const uint16_t vm_decode_table [] =
157
157
{
158
158
CBC_OPCODE_LIST
159
159
};
160
160
161
161
/**
162
162
* Decode table for extended opcodes.
163
163
*/
164
- static const uint32_t vm_ext_decode_table [] =
164
+ static const uint16_t vm_ext_decode_table [] =
165
165
{
166
166
CBC_EXT_OPCODE_LIST
167
167
};
@@ -801,11 +801,11 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
801
801
}
802
802
803
803
free_flags = 0 ;
804
- if (opcode_data & ( VM_OC_GET_DATA_MASK << VM_OC_GET_DATA_SHIFT ))
804
+ if (VM_OC_HAS_GET_ARGS ( opcode_data ))
805
805
{
806
- uint32_t operands = VM_OC_GET_DATA_GET_ID (opcode_data );
806
+ uint32_t operands = VM_OC_GET_ARGS_GET_INDEX (opcode_data );
807
807
808
- if (operands >= VM_OC_GET_DATA_GET_ID (VM_OC_GET_LITERAL ))
808
+ if (operands >= VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_LITERAL ))
809
809
{
810
810
uint16_t literal_index ;
811
811
READ_LITERAL_INDEX (literal_index );
@@ -815,20 +815,20 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
815
815
816
816
switch (operands )
817
817
{
818
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_STACK_LITERAL ):
818
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_STACK_LITERAL ):
819
819
{
820
820
JERRY_ASSERT (stack_top_p > frame_ctx_p -> registers_p + register_end );
821
821
right_value = left_value ;
822
822
left_value = * (-- stack_top_p );
823
823
free_flags = (uint8_t ) ((free_flags << 1 ) | VM_FREE_LEFT_VALUE );
824
824
break ;
825
825
}
826
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_LITERAL_BYTE ):
826
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_LITERAL_BYTE ):
827
827
{
828
828
right_value = * (byte_code_p ++ );
829
829
break ;
830
830
}
831
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_LITERAL_LITERAL ):
831
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_LITERAL_LITERAL ):
832
832
{
833
833
uint16_t literal_index ;
834
834
READ_LITERAL_INDEX (literal_index );
@@ -837,7 +837,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
837
837
free_flags |= VM_FREE_RIGHT_VALUE );
838
838
break ;
839
839
}
840
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_THIS_LITERAL ):
840
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_THIS_LITERAL ):
841
841
{
842
842
right_value = left_value ;
843
843
left_value = ecma_copy_value (frame_ctx_p -> this_binding );
@@ -846,7 +846,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
846
846
}
847
847
default :
848
848
{
849
- JERRY_ASSERT (operands == VM_OC_GET_DATA_GET_ID (VM_OC_GET_LITERAL ));
849
+ JERRY_ASSERT (operands == VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_LITERAL ));
850
850
break ;
851
851
}
852
852
}
@@ -855,22 +855,22 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
855
855
{
856
856
switch (operands )
857
857
{
858
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_STACK ):
858
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_STACK ):
859
859
{
860
860
JERRY_ASSERT (stack_top_p > frame_ctx_p -> registers_p + register_end );
861
861
left_value = * (-- stack_top_p );
862
862
free_flags = VM_FREE_LEFT_VALUE ;
863
863
break ;
864
864
}
865
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_STACK_STACK ):
865
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_STACK_STACK ):
866
866
{
867
867
JERRY_ASSERT (stack_top_p > frame_ctx_p -> registers_p + register_end + 1 );
868
868
right_value = * (-- stack_top_p );
869
869
left_value = * (-- stack_top_p );
870
870
free_flags = VM_FREE_LEFT_VALUE | VM_FREE_RIGHT_VALUE ;
871
871
break ;
872
872
}
873
- case VM_OC_GET_DATA_GET_ID (VM_OC_GET_BYTE ):
873
+ case VM_OC_GET_ARGS_GET_INDEX (VM_OC_GET_BYTE ):
874
874
{
875
875
right_value = * (byte_code_p ++ );
876
876
break ;
@@ -1227,7 +1227,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1227
1227
case VM_OC_POST_INCR :
1228
1228
case VM_OC_POST_DECR :
1229
1229
{
1230
- uint32_t base = VM_OC_GROUP_GET_INDEX (opcode_data ) - VM_OC_PROP_PRE_INCR ;
1230
+ uint32_t opcode_flags = VM_OC_GROUP_GET_INDEX (opcode_data ) - VM_OC_PROP_PRE_INCR ;
1231
1231
1232
1232
last_completion_value = ecma_op_to_number (left_value );
1233
1233
@@ -1244,9 +1244,8 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1244
1244
ecma_integer_value_t int_value = (ecma_integer_value_t ) result ;
1245
1245
ecma_integer_value_t int_increase ;
1246
1246
1247
- if (base & 0x2 )
1247
+ if (opcode_flags & VM_OC_DECREMENT_OPERATOR_FLAG )
1248
1248
{
1249
- /* For decrement operators */
1250
1249
if (int_value <= (ECMA_INTEGER_NUMBER_MIN << ECMA_DIRECT_SHIFT ))
1251
1250
{
1252
1251
int_increase = 0 ;
@@ -1270,12 +1269,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1270
1269
1271
1270
if (int_increase != 0 )
1272
1271
{
1273
- /* Post operators require the unmodifed number value. */
1274
- if (base & 0x4 )
1272
+ /* Postfix operators require the unmodifed number value. */
1273
+ if (opcode_flags & VM_OC_POST_INCR_DECR_OPERATOR_FLAG )
1275
1274
{
1276
1275
if (opcode_data & VM_OC_PUT_STACK )
1277
1276
{
1278
- if (base & 0x1 )
1277
+ if (opcode_flags & VM_OC_IDENT_INCR_DECR_OPERATOR_FLAG )
1279
1278
{
1280
1279
JERRY_ASSERT (opcode == CBC_POST_INCR_IDENT_PUSH_RESULT
1281
1280
|| opcode == CBC_POST_DECR_IDENT_PUSH_RESULT );
@@ -1313,18 +1312,18 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1313
1312
ecma_number_t increase = ECMA_NUMBER_ONE ;
1314
1313
ecma_number_t result_number = ecma_get_number_from_value (result );
1315
1314
1316
- if (base & 0x2 )
1315
+ if (opcode_flags & VM_OC_DECREMENT_OPERATOR_FLAG )
1317
1316
{
1318
1317
/* For decrement operators */
1319
1318
increase = ECMA_NUMBER_MINUS_ONE ;
1320
1319
}
1321
1320
1322
1321
/* Post operators require the unmodifed number value. */
1323
- if (base & 0x4 )
1322
+ if (opcode_flags & VM_OC_POST_INCR_DECR_OPERATOR_FLAG )
1324
1323
{
1325
1324
if (opcode_data & VM_OC_PUT_STACK )
1326
1325
{
1327
- if (base & 0x1 )
1326
+ if (opcode_flags & VM_OC_IDENT_INCR_DECR_OPERATOR_FLAG )
1328
1327
{
1329
1328
JERRY_ASSERT (opcode == CBC_POST_INCR_IDENT_PUSH_RESULT
1330
1329
|| opcode == CBC_POST_DECR_IDENT_PUSH_RESULT );
@@ -1433,7 +1432,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1433
1432
goto error ;
1434
1433
}
1435
1434
1436
- if (opcode_data & ( VM_OC_PUT_DATA_MASK << VM_OC_PUT_DATA_SHIFT ))
1435
+ if (VM_OC_HAS_PUT_RESULT ( opcode_data ))
1437
1436
{
1438
1437
result = last_completion_value ;
1439
1438
}
@@ -1465,7 +1464,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1465
1464
goto error ;
1466
1465
}
1467
1466
1468
- JERRY_ASSERT (opcode_data & ( VM_OC_PUT_DATA_MASK << VM_OC_PUT_DATA_SHIFT ));
1467
+ JERRY_ASSERT (VM_OC_HAS_PUT_RESULT ( opcode_data ));
1469
1468
result = last_completion_value ;
1470
1469
break ;
1471
1470
}
@@ -1536,7 +1535,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1536
1535
case VM_OC_BRANCH_IF_LOGICAL_TRUE :
1537
1536
case VM_OC_BRANCH_IF_LOGICAL_FALSE :
1538
1537
{
1539
- uint32_t base = VM_OC_GROUP_GET_INDEX (opcode_data ) - VM_OC_BRANCH_IF_TRUE ;
1538
+ uint32_t opcode_flags = VM_OC_GROUP_GET_INDEX (opcode_data ) - VM_OC_BRANCH_IF_TRUE ;
1540
1539
1541
1540
last_completion_value = ecma_op_to_boolean (left_value );
1542
1541
@@ -1546,11 +1545,14 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
1546
1545
}
1547
1546
1548
1547
JERRY_ASSERT (free_flags & VM_FREE_LEFT_VALUE );
1549
- if (last_completion_value == ecma_make_simple_value ((base & 0x1 ) ? ECMA_SIMPLE_VALUE_FALSE
1550
- : ECMA_SIMPLE_VALUE_TRUE ))
1548
+
1549
+ bool branch_if_false = (opcode_flags & VM_OC_BRANCH_IF_FALSE_FLAG );
1550
+
1551
+ if (last_completion_value == ecma_make_simple_value (branch_if_false ? ECMA_SIMPLE_VALUE_FALSE
1552
+ : ECMA_SIMPLE_VALUE_TRUE ))
1551
1553
{
1552
1554
byte_code_p = byte_code_start_p + branch_offset ;
1553
- if (base & 0x2 )
1555
+ if (opcode_flags & VM_OC_LOGICAL_BRANCH_FLAG )
1554
1556
{
1555
1557
free_flags = 0 ;
1556
1558
++ stack_top_p ;
@@ -2170,7 +2172,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
2170
2172
}
2171
2173
}
2172
2174
2173
- if (opcode_data & ( VM_OC_PUT_DATA_MASK << VM_OC_PUT_DATA_SHIFT ))
2175
+ if (VM_OC_HAS_PUT_RESULT ( opcode_data ))
2174
2176
{
2175
2177
if (opcode_data & VM_OC_PUT_IDENT )
2176
2178
{
0 commit comments