Implementing Array construction routine; adding unit test on array operations.

This commit is contained in:
Ruben Ayrapetyan
2014-09-03 17:30:03 +04:00
parent 76de0e9a06
commit 50371ddf20
7 changed files with 330 additions and 20 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ fill_varg_list (int_data_t *int_data, /**< interpreter context */
{
ecma_completion_value_t evaluate_arg_completion = run_int_loop (int_data);
if (ecma_is_completion_value_meta (evaluate_arg_completion))
if (ecma_is_completion_value_normal (evaluate_arg_completion))
{
opcode_t next_opcode = read_opcode (int_data->pos);
JERRY_ASSERT (next_opcode.op_idx == __op__idx_meta);
+13 -7
View File
@@ -902,15 +902,17 @@ opfunc_array_decl (opcode_t opdata, /**< operation data */
{
JERRY_ASSERT (args_read == args_number);
ecma_object_t *array_obj_p = ecma_op_create_array_object (arg_values,
args_number,
false);
ECMA_TRY_CATCH (array_obj_value,
ecma_op_create_array_object (arg_values,
args_number,
false),
ret_value);
ret_value = set_variable_value (int_data,
lhs_var_idx,
ecma_make_object_value (array_obj_p));
array_obj_value.u.value);
ecma_deref_object (array_obj_p);
ECMA_FINALIZE (array_obj_value);
}
else
{
@@ -957,8 +959,10 @@ opfunc_obj_decl (opcode_t opdata, /**< operation data */
{
ecma_completion_value_t evaluate_prop_completion = run_int_loop (int_data);
if (ecma_is_completion_value_meta (evaluate_prop_completion))
if (ecma_is_completion_value_normal (evaluate_prop_completion))
{
JERRY_ASSERT (ecma_is_completion_value_empty (evaluate_prop_completion));
opcode_t next_opcode = read_opcode (int_data->pos);
JERRY_ASSERT (next_opcode.op_idx == __op__idx_meta);
@@ -1423,8 +1427,10 @@ opfunc_with (opcode_t opdata, /**< operation data */
ecma_completion_value_t evaluation_completion = run_int_loop (int_data);
if (ecma_is_completion_value_meta (evaluation_completion))
if (ecma_is_completion_value_normal (evaluation_completion))
{
JERRY_ASSERT (ecma_is_completion_value_empty (evaluation_completion));
opcode_t meta_opcode = read_opcode (int_data->pos);
JERRY_ASSERT (meta_opcode.op_idx == __op__idx_meta);
JERRY_ASSERT (meta_opcode.data.meta.type == OPCODE_META_TYPE_END_WITH);