Fix func_decl_0: correctly set interpreter's opcode counter.
This commit is contained in:
@@ -205,3 +205,12 @@ get_number_by_idx(T_IDX idx) /**< literal id */
|
|||||||
|
|
||||||
return num;
|
return num;
|
||||||
} /* get_number_by_idx */
|
} /* get_number_by_idx */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get specified opcode from the program.
|
||||||
|
*/
|
||||||
|
OPCODE
|
||||||
|
read_opcode(opcode_counter_t counter) /**< opcode counter */
|
||||||
|
{
|
||||||
|
return __program[ counter ];
|
||||||
|
} /* read_opcode */
|
||||||
|
|||||||
@@ -43,5 +43,7 @@ ecma_completion_value_t run_int_from_pos (opcode_counter_t start_pos,
|
|||||||
ssize_t try_get_string_by_idx( T_IDX idx, ecma_char_t *buffer_p, ssize_t buffer_size);
|
ssize_t try_get_string_by_idx( T_IDX idx, ecma_char_t *buffer_p, ssize_t buffer_size);
|
||||||
ecma_number_t get_number_by_idx(T_IDX idx);
|
ecma_number_t get_number_by_idx(T_IDX idx);
|
||||||
|
|
||||||
|
OPCODE read_opcode(opcode_counter_t counter);
|
||||||
|
|
||||||
#endif /* INTERPRETER_H */
|
#endif /* INTERPRETER_H */
|
||||||
|
|
||||||
|
|||||||
@@ -1338,8 +1338,9 @@ opfunc_func_decl_0(OPCODE opdata, /**< operation data */
|
|||||||
TODO( Iterate vargs );
|
TODO( Iterate vargs );
|
||||||
|
|
||||||
const opcode_counter_t jmp_down_opcode_idx = (opcode_counter_t) (int_data->pos);
|
const opcode_counter_t jmp_down_opcode_idx = (opcode_counter_t) (int_data->pos);
|
||||||
|
OPCODE jmp_down_opcode = read_opcode( jmp_down_opcode_idx );
|
||||||
TODO( ASSERT( Current opcode is jmp_down ) );
|
JERRY_ASSERT( jmp_down_opcode.op_idx == __op__idx_jmp_down );
|
||||||
|
int_data->pos = (opcode_counter_t) ( jmp_down_opcode_idx + jmp_down_opcode.data.jmp_down.opcode_count );
|
||||||
|
|
||||||
const opcode_counter_t function_code_opcode_idx = (opcode_counter_t) (jmp_down_opcode_idx + 1);
|
const opcode_counter_t function_code_opcode_idx = (opcode_counter_t) (jmp_down_opcode_idx + 1);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user