Splitting ecma_op_get_value and ecma_op_put_value.

Splitting each of ecma_op_get_value and ecma_op_put_value to two routines:
 - for lexical environment or undefined bases (lex_env_base suffix);
 - for object bases (object_base suffix).
This commit is contained in:
Ruben Ayrapetyan
2014-11-13 15:45:47 +03:00
parent 11f0cf9a2d
commit 1fae7645af
4 changed files with 192 additions and 162 deletions
+2 -2
View File
@@ -105,7 +105,7 @@ get_variable_value (int_data_t *int_data, /**< interpreter context */
JERRY_ASSERT (!do_eval_or_arguments_check
|| !do_strict_eval_arguments_check (ref));
ret_value = ecma_op_get_value (ref);
ret_value = ecma_op_get_value_lex_env_base (ref);
ecma_deref_ecma_string (var_name_string_p);
ecma_free_reference (ref);
@@ -153,7 +153,7 @@ set_variable_value (int_data_t *int_data, /**< interpreter context */
/* SyntaxError should be treated as an early error */
JERRY_ASSERT (!do_strict_eval_arguments_check (ref));
ret_value = ecma_op_put_value (ref, value);
ret_value = ecma_op_put_value_lex_env_base (ref, value);
ecma_deref_ecma_string (var_name_string_p);
ecma_free_reference (ref);
+3 -3
View File
@@ -1042,7 +1042,7 @@ opfunc_prop_getter (opcode_t opdata __unused, /**< operation data */
prop_name_string_p,
int_data->is_strict);
ECMA_TRY_CATCH (prop_value, ecma_op_get_value (ref), ret_value);
ECMA_TRY_CATCH (prop_value, ecma_op_get_value_object_base (ref), ret_value);
ret_value = set_variable_value (int_data, lhs_var_idx, prop_value.u.value);
@@ -1090,7 +1090,7 @@ opfunc_prop_setter (opcode_t opdata __unused, /**< operation data */
int_data->is_strict);
ECMA_TRY_CATCH (rhs_value, get_variable_value (int_data, rhs_var_idx, false), ret_value);
ret_value = ecma_op_put_value (ref, rhs_value.u.value);
ret_value = ecma_op_put_value_object_base (ref, rhs_value.u.value);
ECMA_FINALIZE (rhs_value);
ecma_free_reference (ref);
@@ -1324,7 +1324,7 @@ evaluate_arg_for_typeof (int_data_t *int_data, /**< interpreter context */
}
else
{
ret_value = ecma_op_get_value (ref);
ret_value = ecma_op_get_value_lex_env_base (ref);
}
ecma_free_reference (ref);