Support up to 65535 items in object / array literals.

Related issue: #276

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan
2015-07-30 17:28:17 +03:00
parent b5923ccd9d
commit c41f76aba2
8 changed files with 277 additions and 69 deletions
+10 -2
View File
@@ -976,11 +976,15 @@ opfunc_array_decl (vm_instr_t instr, /**< instruction */
vm_frame_ctx_t *frame_ctx_p) /**< interpreter context */
{
const idx_t lhs_var_idx = instr.data.array_decl.lhs;
const idx_t args_number = instr.data.array_decl.list;
const idx_t args_number_high_byte = instr.data.array_decl.list_1;
const idx_t args_number_low_byte = instr.data.array_decl.list_2;
const vm_instr_counter_t lit_oc = frame_ctx_p->pos;
frame_ctx_p->pos++;
ecma_length_t args_number = (((ecma_length_t) args_number_high_byte << JERRY_BITSINBYTE)
+ (ecma_length_t) args_number_low_byte);
ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
MEM_DEFINE_LOCAL_ARRAY (arg_values, args_number, ecma_value_t);
@@ -1039,11 +1043,15 @@ opfunc_obj_decl (vm_instr_t instr, /**< instruction */
vm_frame_ctx_t *frame_ctx_p) /**< interpreter context */
{
const idx_t lhs_var_idx = instr.data.obj_decl.lhs;
const idx_t args_number = instr.data.obj_decl.list;
const idx_t args_number_high_byte = instr.data.obj_decl.list_1;
const idx_t args_number_low_byte = instr.data.obj_decl.list_2;
const vm_instr_counter_t obj_lit_oc = frame_ctx_p->pos;
frame_ctx_p->pos++;
ecma_length_t args_number = (((ecma_length_t) args_number_high_byte << JERRY_BITSINBYTE)
+ (ecma_length_t) args_number_low_byte);
ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
ecma_object_t *obj_p = ecma_op_create_object_object_noarg ();