Support of multiple bytecode arrays in interpreter and ecma-runtime.

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan
2015-06-09 21:14:08 +03:00
parent 3577261261
commit 8ea0e23ea3
10 changed files with 65 additions and 38 deletions
+9 -6
View File
@@ -448,7 +448,7 @@ function_declaration (int_data_t *int_data, /**< interpreter context */
read_meta_opcode_counter (OPCODE_META_TYPE_FUNCTION_END, int_data) + int_data->pos);
int_data->pos++;
opcode_scope_code_flags_t scope_flags = vm_get_scope_flags (int_data->pos++);
opcode_scope_code_flags_t scope_flags = vm_get_scope_flags (int_data->opcodes_p, int_data->pos++);
if (scope_flags & OPCODE_SCOPE_CODE_FLAGS_STRICT)
{
@@ -467,6 +467,7 @@ function_declaration (int_data_t *int_data, /**< interpreter context */
ecma_completion_value_t ret_value = ecma_op_function_declaration (int_data->lex_env_p,
function_name_string_p,
int_data->opcodes_p,
int_data->pos,
args_names,
args_number,
@@ -556,7 +557,8 @@ opfunc_func_expr_n (opcode_t opdata, /**< operation data */
int_data) + int_data->pos);
int_data->pos++;
opcode_scope_code_flags_t scope_flags = vm_get_scope_flags (int_data->pos++);
opcode_scope_code_flags_t scope_flags = vm_get_scope_flags (int_data->opcodes_p,
int_data->pos++);
if (scope_flags & OPCODE_SCOPE_CODE_FLAGS_STRICT)
{
@@ -596,6 +598,7 @@ opfunc_func_expr_n (opcode_t opdata, /**< operation data */
scope_p,
is_strict,
do_instantiate_arguments_object,
int_data->opcodes_p,
int_data->pos);
ret_value = set_variable_value (int_data, lit_oc,
@@ -654,7 +657,7 @@ opfunc_call_n (opcode_t opdata, /**< operation data */
idx_t this_arg_var_idx = INVALID_VALUE;
idx_t args_number;
opcode_t next_opcode = vm_get_opcode (int_data->pos);
opcode_t next_opcode = vm_get_opcode (int_data->opcodes_p, int_data->pos);
if (next_opcode.op_idx == __op__idx_meta
&& next_opcode.data.meta.type == OPCODE_META_TYPE_THIS_ARG)
{
@@ -918,7 +921,7 @@ opfunc_obj_decl (opcode_t opdata, /**< operation data */
{
JERRY_ASSERT (ecma_is_completion_value_empty (evaluate_prop_completion));
opcode_t next_opcode = vm_get_opcode (int_data->pos);
opcode_t next_opcode = vm_get_opcode (int_data->opcodes_p, int_data->pos);
JERRY_ASSERT (next_opcode.op_idx == __op__idx_meta);
const opcode_meta_type type = (opcode_meta_type) next_opcode.data.meta.type;
@@ -1326,7 +1329,7 @@ opfunc_with (opcode_t opdata, /**< operation data */
int_data->lex_env_p = new_env_p;
#ifndef JERRY_NDEBUG
opcode_t meta_opcode = vm_get_opcode (with_end_oc);
opcode_t meta_opcode = vm_get_opcode (int_data->opcodes_p, with_end_oc);
JERRY_ASSERT (meta_opcode.op_idx == __op__idx_meta);
JERRY_ASSERT (meta_opcode.data.meta.type == OPCODE_META_TYPE_END_WITH);
#endif /* !JERRY_NDEBUG */
@@ -1714,7 +1717,7 @@ opcode_counter_t
read_meta_opcode_counter (opcode_meta_type expected_type, /**< expected type of meta opcode */
int_data_t *int_data) /**< interpreter context */
{
opcode_t meta_opcode = vm_get_opcode (int_data->pos);
opcode_t meta_opcode = vm_get_opcode (int_data->opcodes_p, int_data->pos);
JERRY_ASSERT (meta_opcode.data.meta.type == expected_type);
const idx_t data_1 = meta_opcode.data.meta.data_1;