Fix func_decl_0: correctly set interpreter's opcode counter.

This commit is contained in:
Ruben Ayrapetyan 2014-08-07 19:35:11 +04:00
parent 99c15ef802
commit cc4d55803c
3 changed files with 14 additions and 2 deletions

View File

@ -205,3 +205,12 @@ get_number_by_idx(T_IDX idx) /**< literal id */
return num;
} /* get_number_by_idx */
/**
* Get specified opcode from the program.
*/
OPCODE
read_opcode(opcode_counter_t counter) /**< opcode counter */
{
return __program[ counter ];
} /* read_opcode */

View File

@ -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);
ecma_number_t get_number_by_idx(T_IDX idx);
OPCODE read_opcode(opcode_counter_t counter);
#endif /* INTERPRETER_H */

View File

@ -1338,8 +1338,9 @@ opfunc_func_decl_0(OPCODE opdata, /**< operation data */
TODO( Iterate vargs );
const opcode_counter_t jmp_down_opcode_idx = (opcode_counter_t) (int_data->pos);
TODO( ASSERT( Current opcode is jmp_down ) );
OPCODE jmp_down_opcode = read_opcode( jmp_down_opcode_idx );
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);