Parser improvements.
The number of delete opcodes is reduced to two from six. The range of numbers which can be included in the byte code is doubled from (-127,127) to (-256,256). JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
+15
-21
@@ -910,28 +910,22 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
result = ecma_copy_value (frame_ctx_p->this_binding);
|
||||
break;
|
||||
}
|
||||
case VM_OC_PUSH_NUMBER:
|
||||
case VM_OC_PUSH_NUMBER_0:
|
||||
{
|
||||
ecma_integer_value_t number;
|
||||
|
||||
if (opcode == CBC_PUSH_NUMBER_0)
|
||||
{
|
||||
number = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
number = *byte_code_p++;
|
||||
|
||||
JERRY_ASSERT (opcode == CBC_PUSH_NUMBER_1);
|
||||
|
||||
if (number >= CBC_PUSH_NUMBER_1_RANGE_END)
|
||||
{
|
||||
number = -(number - CBC_PUSH_NUMBER_1_RANGE_END);
|
||||
}
|
||||
}
|
||||
|
||||
result = ecma_make_integer_value (number);
|
||||
break;
|
||||
*stack_top_p++ = ecma_make_integer_value (0);
|
||||
continue;
|
||||
}
|
||||
case VM_OC_PUSH_NUMBER_POS_BYTE:
|
||||
{
|
||||
ecma_integer_value_t number = *byte_code_p++;
|
||||
*stack_top_p++ = ecma_make_integer_value (number + 1);
|
||||
continue;
|
||||
}
|
||||
case VM_OC_PUSH_NUMBER_NEG_BYTE:
|
||||
{
|
||||
ecma_integer_value_t number = *byte_code_p++;
|
||||
*stack_top_p++ = ecma_make_integer_value (-(number + 1));
|
||||
continue;
|
||||
}
|
||||
case VM_OC_PUSH_OBJECT:
|
||||
{
|
||||
|
||||
+3
-1
@@ -115,7 +115,9 @@ typedef enum
|
||||
VM_OC_PUSH_FALSE, /**< push false value */
|
||||
VM_OC_PUSH_NULL, /**< push null value */
|
||||
VM_OC_PUSH_THIS, /**< push this */
|
||||
VM_OC_PUSH_NUMBER, /**< push number */
|
||||
VM_OC_PUSH_NUMBER_0, /**< push number zero */
|
||||
VM_OC_PUSH_NUMBER_POS_BYTE, /**< push number between 1 and 256 */
|
||||
VM_OC_PUSH_NUMBER_NEG_BYTE, /**< push number between -1 and -256 */
|
||||
VM_OC_PUSH_OBJECT, /**< push object */
|
||||
VM_OC_SET_PROPERTY, /**< set property */
|
||||
VM_OC_SET_GETTER, /**< set getter */
|
||||
|
||||
Reference in New Issue
Block a user