Introducing interpreter run scopes.

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan
2015-06-02 17:04:18 +03:00
parent 712f8b0c9a
commit 8433df3097
9 changed files with 110 additions and 28 deletions
@@ -37,7 +37,8 @@ opfunc_try_block (opcode_t opdata, /**< operation data */
int_data->pos++;
ecma_completion_value_t try_completion = vm_loop (int_data);
vm_run_scope_t run_scope_try = { int_data->pos, try_end_oc };
ecma_completion_value_t try_completion = vm_loop (int_data, &run_scope_try);
JERRY_ASSERT ((!ecma_is_completion_value_empty (try_completion) && int_data->pos <= try_end_oc)
|| (ecma_is_completion_value_empty (try_completion) && int_data->pos == try_end_oc));
int_data->pos = try_end_oc;
@@ -87,7 +88,9 @@ opfunc_try_block (opcode_t opdata, /**< operation data */
int_data->lex_env_p = catch_env_p;
ecma_free_completion_value (try_completion);
try_completion = vm_loop (int_data);
vm_run_scope_t run_scope_catch = { int_data->pos, catch_end_oc };
try_completion = vm_loop (int_data, &run_scope_catch);
int_data->lex_env_p = old_env_p;
@@ -114,7 +117,9 @@ opfunc_try_block (opcode_t opdata, /**< operation data */
read_meta_opcode_counter (OPCODE_META_TYPE_FINALLY, int_data) + int_data->pos);
int_data->pos++;
ecma_completion_value_t finally_completion = vm_loop (int_data);
vm_run_scope_t run_scope_finally = { int_data->pos, finally_end_oc };
ecma_completion_value_t finally_completion = vm_loop (int_data, &run_scope_finally);
JERRY_ASSERT ((!ecma_is_completion_value_empty (finally_completion) && int_data->pos <= finally_end_oc)
|| (ecma_is_completion_value_empty (finally_completion) && int_data->pos == finally_end_oc));
int_data->pos = finally_end_oc;