diff --git a/jerry-core/parser/js/opcodes-dumper.cpp b/jerry-core/parser/js/opcodes-dumper.cpp index e44796237..2422116ce 100644 --- a/jerry-core/parser/js/opcodes-dumper.cpp +++ b/jerry-core/parser/js/opcodes-dumper.cpp @@ -316,13 +316,15 @@ create_op_meta_for_vlt (varg_list_type vlt, operand *res, operand *obj) case VARG_ARRAY_DECL: { JERRY_ASSERT (obj == NULL); - ret = create_op_meta_for_obj (getop_array_decl, res); + operand empty = empty_operand (); + ret = create_op_meta_for_res_and_obj (getop_array_decl, res, &empty); break; } case VARG_OBJ_DECL: { JERRY_ASSERT (obj == NULL); - ret = create_op_meta_for_obj (getop_obj_decl, res); + operand empty = empty_operand (); + ret = create_op_meta_for_res_and_obj (getop_obj_decl, res, &empty); break; } } @@ -1045,8 +1047,16 @@ dump_varg_header_for_rewrite (varg_list_type vlt, operand obj) } operand -rewrite_varg_header_set_args_count (uint8_t args_count) +rewrite_varg_header_set_args_count (size_t args_count) { + /* + * FIXME: + * Remove formal parameters / arguments number from instruction, + * after ecma-values collection would become extendable (issue #310). + * In the case, each 'varg' instruction would just append corresponding + * argument / formal parameter name to values collection. + */ + op_meta om = serializer_get_op_meta (STACK_TOP (varg_headers)); switch (om.op.op_idx) { @@ -1055,7 +1065,13 @@ rewrite_varg_header_set_args_count (uint8_t args_count) case VM_OP_CALL_N: { const operand res = tmp_operand (); - om.op.data.func_expr_n.arg_list = args_count; + if (args_count > 255) + { + PARSE_ERROR (JSP_EARLY_ERROR_SYNTAX, + "No more than 255 formal parameters / arguments are currently supported", + LIT_ITERATOR_POS_ZERO); + } + om.op.data.func_expr_n.arg_list = (idx_t) args_count; om.op.data.func_expr_n.lhs = res.data.uid; serializer_rewrite_op_meta (STACK_TOP (varg_headers), om); STACK_DROP (varg_headers, 1); @@ -1063,7 +1079,13 @@ rewrite_varg_header_set_args_count (uint8_t args_count) } case VM_OP_FUNC_DECL_N: { - om.op.data.func_decl_n.arg_list = args_count; + if (args_count > 255) + { + PARSE_ERROR (JSP_EARLY_ERROR_SYNTAX, + "No more than 255 formal parameters are currently supported", + LIT_ITERATOR_POS_ZERO); + } + om.op.data.func_decl_n.arg_list = (idx_t) args_count; serializer_rewrite_op_meta (STACK_TOP (varg_headers), om); STACK_DROP (varg_headers, 1); return empty_operand (); @@ -1071,8 +1093,15 @@ rewrite_varg_header_set_args_count (uint8_t args_count) case VM_OP_ARRAY_DECL: case VM_OP_OBJ_DECL: { + if (args_count > 65535) + { + PARSE_ERROR (JSP_EARLY_ERROR_SYNTAX, + "No more than 65535 formal parameters are currently supported", + LIT_ITERATOR_POS_ZERO); + } const operand res = tmp_operand (); - om.op.data.obj_decl.list = args_count; + om.op.data.obj_decl.list_1 = (idx_t) (args_count >> 8); + om.op.data.obj_decl.list_2 = (idx_t) (args_count & 0xffu); om.op.data.obj_decl.lhs = res.data.uid; serializer_rewrite_op_meta (STACK_TOP (varg_headers), om); STACK_DROP (varg_headers, 1); diff --git a/jerry-core/parser/js/opcodes-dumper.h b/jerry-core/parser/js/opcodes-dumper.h index e80402cef..38d977190 100644 --- a/jerry-core/parser/js/opcodes-dumper.h +++ b/jerry-core/parser/js/opcodes-dumper.h @@ -81,7 +81,7 @@ void dump_variable_assignment (operand, operand); operand dump_variable_assignment_res (operand); void dump_varg_header_for_rewrite (varg_list_type, operand); -operand rewrite_varg_header_set_args_count (uint8_t); +operand rewrite_varg_header_set_args_count (size_t); void dump_call_additional_info (opcode_call_flags_t, operand); void dump_varg (operand); diff --git a/jerry-core/parser/js/parser.cpp b/jerry-core/parser/js/parser.cpp index 919db186d..9a6f40d50 100644 --- a/jerry-core/parser/js/parser.cpp +++ b/jerry-core/parser/js/parser.cpp @@ -64,7 +64,7 @@ static operand parse_expression (bool, jsp_eval_ret_store_t); static void parse_statement (jsp_label_t *outermost_stmt_label_p); static operand parse_assignment_expression (bool); static void parse_source_element_list (bool); -static operand parse_argument_list (varg_list_type, operand, uint8_t *, operand *); +static operand parse_argument_list (varg_list_type, operand, operand *); static bool token_is (token_type tt) @@ -385,7 +385,7 @@ parse_property_assignment (void) jsp_early_error_add_prop_name (name, is_setter ? PROP_SET : PROP_GET); skip_newlines (); - const operand func = parse_argument_list (VARG_FUNC_EXPR, empty_operand (), NULL, NULL); + const operand func = parse_argument_list (VARG_FUNC_EXPR, empty_operand (), NULL); dump_function_end_for_rewrite (); @@ -430,10 +430,10 @@ parse_property_assignment (void) For each ALT dumps appropriate bytecode. Uses OBJ during dump if neccesary. Result tmp. */ static operand -parse_argument_list (varg_list_type vlt, operand obj, uint8_t *args_count, operand *this_arg_p) +parse_argument_list (varg_list_type vlt, operand obj, operand *this_arg_p) { token_type close_tt = TOK_CLOSE_PAREN; - uint8_t args_num = 0; + size_t args_num = 0; JERRY_ASSERT (!(vlt != VARG_CALL_EXPR && this_arg_p != NULL)); @@ -594,11 +594,6 @@ parse_argument_list (varg_list_type vlt, operand obj, uint8_t *args_count, opera dumper_finish_varg_code_sequence (); } - if (args_count != NULL) - { - *args_count = args_num; - } - operand res; switch (vlt) { @@ -654,7 +649,7 @@ parse_function_declaration (void) lexer_set_strict_mode (scopes_tree_strict_mode (STACK_TOP (scopes))); jsp_early_error_start_checking_of_vargs (); - parse_argument_list (VARG_FUNC_DECL, name, NULL, NULL); + parse_argument_list (VARG_FUNC_DECL, name, NULL); dump_function_end_for_rewrite (); @@ -705,13 +700,13 @@ parse_function_expression (void) jsp_early_error_check_for_eval_and_arguments_in_strict_mode (name, is_outer_scope_strict, tok.loc); skip_newlines (); - res = parse_argument_list (VARG_FUNC_EXPR, name, NULL, NULL); + res = parse_argument_list (VARG_FUNC_EXPR, name, NULL); } else { lexer_save_token (tok); skip_newlines (); - res = parse_argument_list (VARG_FUNC_EXPR, empty_operand (), NULL, NULL); + res = parse_argument_list (VARG_FUNC_EXPR, empty_operand (), NULL); } dump_function_end_for_rewrite (); @@ -750,7 +745,7 @@ parse_function_expression (void) static operand parse_array_literal (void) { - return parse_argument_list (VARG_ARRAY_DECL, empty_operand (), NULL, NULL); + return parse_argument_list (VARG_ARRAY_DECL, empty_operand (), NULL); } /* object_literal @@ -759,7 +754,7 @@ parse_array_literal (void) static operand parse_object_literal (void) { - return parse_argument_list (VARG_OBJ_DECL, empty_operand (), NULL, NULL); + return parse_argument_list (VARG_OBJ_DECL, empty_operand (), NULL); } /* literal @@ -871,7 +866,7 @@ parse_member_expression (operand *this_arg, operand *prop_gl) skip_newlines (); if (token_is (TOK_OPEN_PAREN)) { - expr = parse_argument_list (VARG_CONSTRUCT_EXPR, expr, NULL, NULL); + expr = parse_argument_list (VARG_CONSTRUCT_EXPR, expr, NULL); } else { @@ -976,7 +971,7 @@ parse_call_expression (operand *this_arg_gl, operand *prop_gl) return expr; } - expr = parse_argument_list (VARG_CALL_EXPR, expr, NULL, &this_arg); + expr = parse_argument_list (VARG_CALL_EXPR, expr, &this_arg); this_arg = empty_operand (); skip_newlines (); @@ -985,7 +980,7 @@ parse_call_expression (operand *this_arg_gl, operand *prop_gl) { if (tok.type == TOK_OPEN_PAREN) { - expr = parse_argument_list (VARG_CALL_EXPR, expr, NULL, &this_arg); + expr = parse_argument_list (VARG_CALL_EXPR, expr, &this_arg); skip_newlines (); } else diff --git a/jerry-core/vm/opcodes.cpp b/jerry-core/vm/opcodes.cpp index 4792fad8a..da29f31c0 100644 --- a/jerry-core/vm/opcodes.cpp +++ b/jerry-core/vm/opcodes.cpp @@ -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 (); diff --git a/jerry-core/vm/pretty-printer.cpp b/jerry-core/vm/pretty-printer.cpp index 9c8e5e320..2de449925 100644 --- a/jerry-core/vm/pretty-printer.cpp +++ b/jerry-core/vm/pretty-printer.cpp @@ -326,26 +326,30 @@ pp_op_meta (const vm_instr_t *instrs_p, } case VM_OP_ARRAY_DECL: { - if (opm.op.data.array_decl.list == 0) + if (opm.op.data.array_decl.list_1 == 0 + && opm.op.data.array_decl.list_2 == 0) { printf ("%s = [];", VAR (1)); } else { - vargs_num = opm.op.data.array_decl.list; + vargs_num = (((int) opm.op.data.array_decl.list_1 << JERRY_BITSINBYTE) + + (int) opm.op.data.array_decl.list_2); seen_vargs = 0; } break; } case VM_OP_OBJ_DECL: { - if (opm.op.data.obj_decl.list == 0) + if (opm.op.data.obj_decl.list_1 == 0 + && opm.op.data.obj_decl.list_2 == 0) { printf ("%s = {};", VAR (1)); } else { - vargs_num = opm.op.data.obj_decl.list; + vargs_num = (((int) opm.op.data.obj_decl.list_1 << JERRY_BITSINBYTE) + + (int) opm.op.data.obj_decl.list_2); seen_vargs = 0; } break; diff --git a/jerry-core/vm/vm-opcodes.inc.h b/jerry-core/vm/vm-opcodes.inc.h index 6d188483f..50c5e36b7 100644 --- a/jerry-core/vm/vm-opcodes.inc.h +++ b/jerry-core/vm/vm-opcodes.inc.h @@ -58,13 +58,15 @@ VM_OP_1 (retval, RETVAL, VM_OP_0 (ret, RET) -VM_OP_2 (array_decl, ARRAY_DECL, +VM_OP_3 (array_decl, ARRAY_DECL, lhs, VM_OP_ARG_TYPE_VARIABLE, - list, VM_OP_ARG_TYPE_INTEGER_CONST) + list_1, VM_OP_ARG_TYPE_INTEGER_CONST, + list_2, VM_OP_ARG_TYPE_INTEGER_CONST) -VM_OP_2 (obj_decl, OBJ_DECL, +VM_OP_3 (obj_decl, OBJ_DECL, lhs, VM_OP_ARG_TYPE_VARIABLE, - list, VM_OP_ARG_TYPE_INTEGER_CONST) + list_1, VM_OP_ARG_TYPE_INTEGER_CONST, + list_2, VM_OP_ARG_TYPE_INTEGER_CONST) VM_OP_3 (prop_getter, PROP_GETTER, lhs, VM_OP_ARG_TYPE_VARIABLE, diff --git a/tests/jerry/array.js b/tests/jerry/array.js index 14c2339d6..f31af08ff 100644 --- a/tests/jerry/array.js +++ b/tests/jerry/array.js @@ -81,3 +81,74 @@ assert (c[3] === '3'); b[0] = 1; c[0] += b[0]; assert (c[0] == 1); + +var arr = [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, + 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, + 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, + 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, + 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, + 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, + 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, + 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024 ]; + +for (i = 0; i < 1024; i++) +{ + assert (arr[i] === i + 1); +} diff --git a/tests/jerry/object-literal.js b/tests/jerry/object-literal.js index eaa5005e6..1c8c3bf54 100644 --- a/tests/jerry/object-literal.js +++ b/tests/jerry/object-literal.js @@ -91,38 +91,137 @@ a.q = 1; assert (flow == 'get: undefined, set: undefined'); -// FIXME: change to 'eval' after large object literals byte-code representation would be fixed (issue #276) -f = new Function("obj = { \ - '1': '', '2': '', '3': '', '4': '', '5': '', '6': '', '7': '', '8': '', \ - '9': '', '10': '', '11': '', '12': '', '13': '', '14': '', '15': '', '16': '', \ - '17': '', '18': '', '19': '', '20': '', '21': '', '22': '', '23': '', '24': '', \ - '25': '', '26': '', '27': '', '28': '', '29': '', '30': '', '31': '', '32': '', \ - '33': '', '34': '', '35': '', '36': '', '37': '', '38': '', '39': '', '40': '', \ - '41': '', '42': '', '43': '', '44': '', '45': '', '46': '', '47': '', '48': '', \ - '49': '', '50': '', '51': '', '52': '', '53': '', '54': '', '55': '', '56': '', \ - '57': '', '58': '', '59': '', '60': '', '61': '', '62': '', '63': '', '64': '', \ - '65': '', '66': '', '67': '', '68': '', '69': '', '70': '', '71': '', '72': '', \ - '73': '', '74': '', '75': '', '76': '', '77': '', '78': '', '79': '', '80': '', \ - '81': '', '82': '', '83': '', '84': '', '85': '', '86': '', '87': '', '88': '', \ - '89': '', '90': '', '91': '', '92': '', '93': '', '94': '', '95': '', '96': '', \ - '97': '', '98': '', '99': '', '100': '', '101': '', '102': '', '103': '', '104': '', \ - '105': '', '106': '', '107': '', '108': '', '109': '', '110': '', '111': '', '112': '', \ - '113': '', '114': '', '115': '', '116': '', '117': '', '118': '', '119': '', '120': '', \ - '121': '', '122': '', '123': '', '124': '', '125': '', '126': '', '127': '', '128': '', \ - '129': '', '130': '', '131': '', '132': '', '133': '', '134': '', '135': '', '136': '', \ - '137': '', '138': '', '139': '', '140': '', '141': '', '142': '', '143': '', '144': '', \ - '145': '', '146': '', '147': '', '148': '', '149': '', '150': '', '151': '', '152': '', \ - '153': '', '154': '', '155': '', '156': '', '157': '', '158': '', '159': '', '160': '', \ - '161': '', '162': '', '163': '', '164': '', '165': '', '166': '', '167': '', '168': '', \ - '169': '', '170': '', '171': '', '172': '', '173': '', '174': '', '175': '', '176': '', \ - '177': '', '178': '', '179': '', '180': '', '181': '', '182': '', '183': '', '184': '', \ - '185': '', '186': '', '187': '', '188': '', '189': '', '190': '', '191': '', '192': '', \ - '193': '', '194': '', '195': '', '196': '', '197': '', '198': '', '199': '', '200': '', \ - '201': '', '202': '', '203': '', '204': '', '205': '', '206': '', '207': '', '208': '', \ - '209': '', '210': '', '211': '', '212': '', '213': '', '214': '', '215': '', '216': '', \ - '217': '', '218': '', '219': '', '220': '', '221': '', '222': '', '223': '', '224': '', \ - '225': '', '226': '', '227': '', '228': '', '229': '', '230': '', '231': '', '232': '', \ - '233': '', '234': '', '235': '', '236': '', '237': '', '238': '', '239': '', '240': '', \ - '241': '', '242': '', '243': '', '244': '', '245': '', '246': '', '247': '', '248': '', \ - '249': '', '250': '', '251': '', '252': '', '253': '', '254': '', '255': '', \ - '256': '', 257: '' };"); +var data = { + '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, + '9': 9, '10': 10, '11': 11, '12': 12, '13': 13, '14': 14, '15': 15, '16': 16, + '17': 17, '18': 18, '19': 19, '20': 20, '21': 21, '22': 22, '23': 23, '24': 24, + '25': 25, '26': 26, '27': 27, '28': 28, '29': 29, '30': 30, '31': 31, '32': 32, + '33': 33, '34': 34, '35': 35, '36': 36, '37': 37, '38': 38, '39': 39, '40': 40, + '41': 41, '42': 42, '43': 43, '44': 44, '45': 45, '46': 46, '47': 47, '48': 48, + '49': 49, '50': 50, '51': 51, '52': 52, '53': 53, '54': 54, '55': 55, '56': 56, + '57': 57, '58': 58, '59': 59, '60': 60, '61': 61, '62': 62, '63': 63, '64': 64, + '65': 65, '66': 66, '67': 67, '68': 68, '69': 69, '70': 70, '71': 71, '72': 72, + '73': 73, '74': 74, '75': 75, '76': 76, '77': 77, '78': 78, '79': 79, '80': 80, + '81': 81, '82': 82, '83': 83, '84': 84, '85': 85, '86': 86, '87': 87, '88': 88, + '89': 89, '90': 90, '91': 91, '92': 92, '93': 93, '94': 94, '95': 95, '96': 96, + '97': 97, '98': 98, '99': 99, '100': 100, '101': 101, '102': 102, '103': 103, '104': 104, + '105': 105, '106': 106, '107': 107, '108': 108, '109': 109, '110': 110, '111': 111, '112': 112, + '113': 113, '114': 114, '115': 115, '116': 116, '117': 117, '118': 118, '119': 119, '120': 120, + '121': 121, '122': 122, '123': 123, '124': 124, '125': 125, '126': 126, '127': 127, '128': 128, + '129': 129, '130': 130, '131': 131, '132': 132, '133': 133, '134': 134, '135': 135, '136': 136, + '137': 137, '138': 138, '139': 139, '140': 140, '141': 141, '142': 142, '143': 143, '144': 144, + '145': 145, '146': 146, '147': 147, '148': 148, '149': 149, '150': 150, '151': 151, '152': 152, + '153': 153, '154': 154, '155': 155, '156': 156, '157': 157, '158': 158, '159': 159, '160': 160, + '161': 161, '162': 162, '163': 163, '164': 164, '165': 165, '166': 166, '167': 167, '168': 168, + '169': 169, '170': 170, '171': 171, '172': 172, '173': 173, '174': 174, '175': 175, '176': 176, + '177': 177, '178': 178, '179': 179, '180': 180, '181': 181, '182': 182, '183': 183, '184': 184, + '185': 185, '186': 186, '187': 187, '188': 188, '189': 189, '190': 190, '191': 191, '192': 192, + '193': 193, '194': 194, '195': 195, '196': 196, '197': 197, '198': 198, '199': 199, '200': 200, + '201': 201, '202': 202, '203': 203, '204': 204, '205': 205, '206': 206, '207': 207, '208': 208, + '209': 209, '210': 210, '211': 211, '212': 212, '213': 213, '214': 214, '215': 215, '216': 216, + '217': 217, '218': 218, '219': 219, '220': 220, '221': 221, '222': 222, '223': 223, '224': 224, + '225': 225, '226': 226, '227': 227, '228': 228, '229': 229, '230': 230, '231': 231, '232': 232, + '233': 233, '234': 234, '235': 235, '236': 236, '237': 237, '238': 238, '239': 239, '240': 240, + '241': 241, '242': 242, '243': 243, '244': 244, '245': 245, '246': 246, '247': 247, '248': 248, + '249': 249, '250': 250, '251': 251, '252': 252, '253': 253, '254': 254, '255': 255, '256': 256, + '257': 257, '258': 258, '259': 259, '260': 260, '261': 261, '262': 262, '263': 263, '264': 264, + '265': 265, '266': 266, '267': 267, '268': 268, '269': 269, '270': 270, '271': 271, '272': 272, + '273': 273, '274': 274, '275': 275, '276': 276, '277': 277, '278': 278, '279': 279, '280': 280, + '281': 281, '282': 282, '283': 283, '284': 284, '285': 285, '286': 286, '287': 287, '288': 288, + '289': 289, '290': 290, '291': 291, '292': 292, '293': 293, '294': 294, '295': 295, '296': 296, + '297': 297, '298': 298, '299': 299, '300': 300, '301': 301, '302': 302, '303': 303, '304': 304, + '305': 305, '306': 306, '307': 307, '308': 308, '309': 309, '310': 310, '311': 311, '312': 312, + '313': 313, '314': 314, '315': 315, '316': 316, '317': 317, '318': 318, '319': 319, '320': 320, + '321': 321, '322': 322, '323': 323, '324': 324, '325': 325, '326': 326, '327': 327, '328': 328, + '329': 329, '330': 330, '331': 331, '332': 332, '333': 333, '334': 334, '335': 335, '336': 336, + '337': 337, '338': 338, '339': 339, '340': 340, '341': 341, '342': 342, '343': 343, '344': 344, + '345': 345, '346': 346, '347': 347, '348': 348, '349': 349, '350': 350, '351': 351, '352': 352, + '353': 353, '354': 354, '355': 355, '356': 356, '357': 357, '358': 358, '359': 359, '360': 360, + '361': 361, '362': 362, '363': 363, '364': 364, '365': 365, '366': 366, '367': 367, '368': 368, + '369': 369, '370': 370, '371': 371, '372': 372, '373': 373, '374': 374, '375': 375, '376': 376, + '377': 377, '378': 378, '379': 379, '380': 380, '381': 381, '382': 382, '383': 383, '384': 384, + '385': 385, '386': 386, '387': 387, '388': 388, '389': 389, '390': 390, '391': 391, '392': 392, + '393': 393, '394': 394, '395': 395, '396': 396, '397': 397, '398': 398, '399': 399, '400': 400, + '401': 401, '402': 402, '403': 403, '404': 404, '405': 405, '406': 406, '407': 407, '408': 408, + '409': 409, '410': 410, '411': 411, '412': 412, '413': 413, '414': 414, '415': 415, '416': 416, + '417': 417, '418': 418, '419': 419, '420': 420, '421': 421, '422': 422, '423': 423, '424': 424, + '425': 425, '426': 426, '427': 427, '428': 428, '429': 429, '430': 430, '431': 431, '432': 432, + '433': 433, '434': 434, '435': 435, '436': 436, '437': 437, '438': 438, '439': 439, '440': 440, + '441': 441, '442': 442, '443': 443, '444': 444, '445': 445, '446': 446, '447': 447, '448': 448, + '449': 449, '450': 450, '451': 451, '452': 452, '453': 453, '454': 454, '455': 455, '456': 456, + '457': 457, '458': 458, '459': 459, '460': 460, '461': 461, '462': 462, '463': 463, '464': 464, + '465': 465, '466': 466, '467': 467, '468': 468, '469': 469, '470': 470, '471': 471, '472': 472, + '473': 473, '474': 474, '475': 475, '476': 476, '477': 477, '478': 478, '479': 479, '480': 480, + '481': 481, '482': 482, '483': 483, '484': 484, '485': 485, '486': 486, '487': 487, '488': 488, + '489': 489, '490': 490, '491': 491, '492': 492, '493': 493, '494': 494, '495': 495, '496': 496, + '497': 497, '498': 498, '499': 499, '500': 500, '501': 501, '502': 502, '503': 503, '504': 504, + '505': 505, '506': 506, '507': 507, '508': 508, '509': 509, '510': 510, '511': 511, '512': 512, + '513': 513, '514': 514, '515': 515, '516': 516, '517': 517, '518': 518, '519': 519, '520': 520, + '521': 521, '522': 522, '523': 523, '524': 524, '525': 525, '526': 526, '527': 527, '528': 528, + '529': 529, '530': 530, '531': 531, '532': 532, '533': 533, '534': 534, '535': 535, '536': 536, + '537': 537, '538': 538, '539': 539, '540': 540, '541': 541, '542': 542, '543': 543, '544': 544, + '545': 545, '546': 546, '547': 547, '548': 548, '549': 549, '550': 550, '551': 551, '552': 552, + '553': 553, '554': 554, '555': 555, '556': 556, '557': 557, '558': 558, '559': 559, '560': 560, + '561': 561, '562': 562, '563': 563, '564': 564, '565': 565, '566': 566, '567': 567, '568': 568, + '569': 569, '570': 570, '571': 571, '572': 572, '573': 573, '574': 574, '575': 575, '576': 576, + '577': 577, '578': 578, '579': 579, '580': 580, '581': 581, '582': 582, '583': 583, '584': 584, + '585': 585, '586': 586, '587': 587, '588': 588, '589': 589, '590': 590, '591': 591, '592': 592, + '593': 593, '594': 594, '595': 595, '596': 596, '597': 597, '598': 598, '599': 599, '600': 600, + '601': 601, '602': 602, '603': 603, '604': 604, '605': 605, '606': 606, '607': 607, '608': 608, + '609': 609, '610': 610, '611': 611, '612': 612, '613': 613, '614': 614, '615': 615, '616': 616, + '617': 617, '618': 618, '619': 619, '620': 620, '621': 621, '622': 622, '623': 623, '624': 624, + '625': 625, '626': 626, '627': 627, '628': 628, '629': 629, '630': 630, '631': 631, '632': 632, + '633': 633, '634': 634, '635': 635, '636': 636, '637': 637, '638': 638, '639': 639, '640': 640, + '641': 641, '642': 642, '643': 643, '644': 644, '645': 645, '646': 646, '647': 647, '648': 648, + '649': 649, '650': 650, '651': 651, '652': 652, '653': 653, '654': 654, '655': 655, '656': 656, + '657': 657, '658': 658, '659': 659, '660': 660, '661': 661, '662': 662, '663': 663, '664': 664, + '665': 665, '666': 666, '667': 667, '668': 668, '669': 669, '670': 670, '671': 671, '672': 672, + '673': 673, '674': 674, '675': 675, '676': 676, '677': 677, '678': 678, '679': 679, '680': 680, + '681': 681, '682': 682, '683': 683, '684': 684, '685': 685, '686': 686, '687': 687, '688': 688, + '689': 689, '690': 690, '691': 691, '692': 692, '693': 693, '694': 694, '695': 695, '696': 696, + '697': 697, '698': 698, '699': 699, '700': 700, '701': 701, '702': 702, '703': 703, '704': 704, + '705': 705, '706': 706, '707': 707, '708': 708, '709': 709, '710': 710, '711': 711, '712': 712, + '713': 713, '714': 714, '715': 715, '716': 716, '717': 717, '718': 718, '719': 719, '720': 720, + '721': 721, '722': 722, '723': 723, '724': 724, '725': 725, '726': 726, '727': 727, '728': 728, + '729': 729, '730': 730, '731': 731, '732': 732, '733': 733, '734': 734, '735': 735, '736': 736, + '737': 737, '738': 738, '739': 739, '740': 740, '741': 741, '742': 742, '743': 743, '744': 744, + '745': 745, '746': 746, '747': 747, '748': 748, '749': 749, '750': 750, '751': 751, '752': 752, + '753': 753, '754': 754, '755': 755, '756': 756, '757': 757, '758': 758, '759': 759, '760': 760, + '761': 761, '762': 762, '763': 763, '764': 764, '765': 765, '766': 766, '767': 767, '768': 768, + '769': 769, '770': 770, '771': 771, '772': 772, '773': 773, '774': 774, '775': 775, '776': 776, + '777': 777, '778': 778, '779': 779, '780': 780, '781': 781, '782': 782, '783': 783, '784': 784, + '785': 785, '786': 786, '787': 787, '788': 788, '789': 789, '790': 790, '791': 791, '792': 792, + '793': 793, '794': 794, '795': 795, '796': 796, '797': 797, '798': 798, '799': 799, '800': 800, + '801': 801, '802': 802, '803': 803, '804': 804, '805': 805, '806': 806, '807': 807, '808': 808, + '809': 809, '810': 810, '811': 811, '812': 812, '813': 813, '814': 814, '815': 815, '816': 816, + '817': 817, '818': 818, '819': 819, '820': 820, '821': 821, '822': 822, '823': 823, '824': 824, + '825': 825, '826': 826, '827': 827, '828': 828, '829': 829, '830': 830, '831': 831, '832': 832, + '833': 833, '834': 834, '835': 835, '836': 836, '837': 837, '838': 838, '839': 839, '840': 840, + '841': 841, '842': 842, '843': 843, '844': 844, '845': 845, '846': 846, '847': 847, '848': 848, + '849': 849, '850': 850, '851': 851, '852': 852, '853': 853, '854': 854, '855': 855, '856': 856, + '857': 857, '858': 858, '859': 859, '860': 860, '861': 861, '862': 862, '863': 863, '864': 864, + '865': 865, '866': 866, '867': 867, '868': 868, '869': 869, '870': 870, '871': 871, '872': 872, + '873': 873, '874': 874, '875': 875, '876': 876, '877': 877, '878': 878, '879': 879, '880': 880, + '881': 881, '882': 882, '883': 883, '884': 884, '885': 885, '886': 886, '887': 887, '888': 888, + '889': 889, '890': 890, '891': 891, '892': 892, '893': 893, '894': 894, '895': 895, '896': 896, + '897': 897, '898': 898, '899': 899, '900': 900, '901': 901, '902': 902, '903': 903, '904': 904, + '905': 905, '906': 906, '907': 907, '908': 908, '909': 909, '910': 910, '911': 911, '912': 912, + '913': 913, '914': 914, '915': 915, '916': 916, '917': 917, '918': 918, '919': 919, '920': 920, + '921': 921, '922': 922, '923': 923, '924': 924, '925': 925, '926': 926, '927': 927, '928': 928, + '929': 929, '930': 930, '931': 931, '932': 932, '933': 933, '934': 934, '935': 935, '936': 936, + '937': 937, '938': 938, '939': 939, '940': 940, '941': 941, '942': 942, '943': 943, '944': 944, + '945': 945, '946': 946, '947': 947, '948': 948, '949': 949, '950': 950, '951': 951, '952': 952, + '953': 953, '954': 954, '955': 955, '956': 956, '957': 957, '958': 958, '959': 959, '960': 960, + '961': 961, '962': 962, '963': 963, '964': 964, '965': 965, '966': 966, '967': 967, '968': 968, + '969': 969, '970': 970, '971': 971, '972': 972, '973': 973, '974': 974, '975': 975, '976': 976, + '977': 977, '978': 978, '979': 979, '980': 980, '981': 981, '982': 982, '983': 983, '984': 984, + '985': 985, '986': 986, '987': 987, '988': 988, '989': 989, '990': 990, '991': 991, '992': 992, + '993': 993, '994': 994, '995': 995, '996': 996, '997': 997, '998': 998, '999': 999, '1000': 1000, + '1001': 1001, '1002': 1002, '1003': 1003, '1004': 1004, '1005': 1005, '1006': 1006, '1007': 1007, '1008': 1008, + '1009': 1009, '1010': 1010, '1011': 1011, '1012': 1012, '1013': 1013, '1014': 1014, '1015': 1015, '1016': 1016, + '1017': 1017, '1018': 1018, '1019': 1019, '1020': 1020, '1021': 1021, '1022': 1022, '1023': 1023, '1024': 1024 }; + +for (i = 1; i <= 1024; i++) +{ + assert (data[i] === i); +}