Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(666)

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1503963002: [Interpreter] Adds wide variant of CreateLiterals. Adds CreateLiterals to BytecodeGraphBuilder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // TODO(rmcilroy): Remove this define after this flag is turned on globally 5 // TODO(rmcilroy): Remove this define after this flag is turned on globally
6 #define V8_IMMINENT_DEPRECATION_WARNINGS 6 #define V8_IMMINENT_DEPRECATION_WARNINGS
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/compiler.h" 10 #include "src/compiler.h"
(...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after
1597 B(LdaSmi8), U8(2), // 1597 B(LdaSmi8), U8(2), //
1598 B(Star), R(1), // 1598 B(Star), R(1), //
1599 B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2), // 1599 B(CallRuntime), U16(Runtime::kAdd), R(0), U8(2), //
1600 B(Return) // 1600 B(Return) //
1601 }, 1601 },
1602 }, 1602 },
1603 { 1603 {
1604 "function f() { return %spread_iterable([1]) }\nf()", 1604 "function f() { return %spread_iterable([1]) }\nf()",
1605 2 * kPointerSize, 1605 2 * kPointerSize,
1606 1, 1606 1,
1607 16, 1607 15,
1608 { 1608 {
1609 B(LdaUndefined), // 1609 B(LdaUndefined), //
1610 B(Star), R(0), // 1610 B(Star), R(0), //
1611 B(LdaConstant), U8(0), // 1611 B(CreateArrayLiteral), U8(0), U8(0), U8(3), //
1612 B(CreateArrayLiteral), U8(0), U8(3), //
1613 B(Star), R(1), // 1612 B(Star), R(1), //
1614 B(CallJSRuntime), U16(Context::SPREAD_ITERABLE_INDEX), R(0), // 1613 B(CallJSRuntime), U16(Context::SPREAD_ITERABLE_INDEX), R(0), //
1615 U8(1), // 1614 U8(1), //
1616 B(Return), // 1615 B(Return), //
1617 }, 1616 },
1618 1, 1617 1,
1619 {InstanceType::FIXED_ARRAY_TYPE}, 1618 {InstanceType::FIXED_ARRAY_TYPE},
1620 }, 1619 },
1621 }; 1620 };
1622 1621
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
2600 2599
2601 int deep_elements_flags = 2600 int deep_elements_flags =
2602 ObjectLiteral::kFastElements | ObjectLiteral::kDisableMementos; 2601 ObjectLiteral::kFastElements | ObjectLiteral::kDisableMementos;
2603 int closure = Register::function_closure().index(); 2602 int closure = Register::function_closure().index();
2604 int first_context_slot = Context::MIN_CONTEXT_SLOTS; 2603 int first_context_slot = Context::MIN_CONTEXT_SLOTS;
2605 2604
2606 ExpectedSnippet<InstanceType> snippets[] = { 2605 ExpectedSnippet<InstanceType> snippets[] = {
2607 {"var a = {x:13, y:14}; return delete a.x;", 2606 {"var a = {x:13, y:14}; return delete a.x;",
2608 1 * kPointerSize, 2607 1 * kPointerSize,
2609 1, 2608 1,
2610 12, 2609 11,
2611 { 2610 {
2612 B(LdaConstant), U8(0), // 2611 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
2613 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 2612 B(Star), R(0), //
2614 B(Star), R(0), // 2613 B(LdaConstant), U8(1), //
2615 B(LdaConstant), U8(1), // 2614 B(DeletePropertySloppy), R(0), //
2616 B(DeletePropertySloppy), R(0), //
2617 B(Return) 2615 B(Return)
2618 }, 2616 },
2619 2, 2617 2,
2620 {InstanceType::FIXED_ARRAY_TYPE, 2618 {InstanceType::FIXED_ARRAY_TYPE,
2621 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 2619 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
2622 {"'use strict'; var a = {x:13, y:14}; return delete a.x;", 2620 {"'use strict'; var a = {x:13, y:14}; return delete a.x;",
2623 1 * kPointerSize, 2621 1 * kPointerSize,
2624 1, 2622 1,
2625 12, 2623 11,
2626 { 2624 {
2627 B(LdaConstant), U8(0), // 2625 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
2628 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 2626 B(Star), R(0), //
2629 B(Star), R(0), // 2627 B(LdaConstant), U8(1), //
2630 B(LdaConstant), U8(1), // 2628 B(DeletePropertyStrict), R(0), //
2631 B(DeletePropertyStrict), R(0), //
2632 B(Return) 2629 B(Return)
2633 }, 2630 },
2634 2, 2631 2,
2635 {InstanceType::FIXED_ARRAY_TYPE, 2632 {InstanceType::FIXED_ARRAY_TYPE,
2636 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 2633 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
2637 {"var a = {1:13, 2:14}; return delete a[2];", 2634 {"var a = {1:13, 2:14}; return delete a[2];",
2638 1 * kPointerSize, 2635 1 * kPointerSize,
2639 1, 2636 1,
2640 12, 2637 11,
2641 { 2638 {
2642 B(LdaConstant), U8(0), // 2639 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
2643 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 2640 B(Star), R(0), //
2644 B(Star), R(0), // 2641 B(LdaSmi8), U8(2), //
2645 B(LdaSmi8), U8(2), // 2642 B(DeletePropertySloppy), R(0), //
2646 B(DeletePropertySloppy), R(0), //
2647 B(Return) 2643 B(Return)
2648 }, 2644 },
2649 1, 2645 1,
2650 {InstanceType::FIXED_ARRAY_TYPE}}, 2646 {InstanceType::FIXED_ARRAY_TYPE}},
2651 {"var a = 10; return delete a;", 2647 {"var a = 10; return delete a;",
2652 1 * kPointerSize, 2648 1 * kPointerSize,
2653 1, 2649 1,
2654 6, 2650 6,
2655 { 2651 {
2656 B(LdaSmi8), U8(10), // 2652 B(LdaSmi8), U8(10), //
2657 B(Star), R(0), // 2653 B(Star), R(0), //
2658 B(LdaFalse), // 2654 B(LdaFalse), //
2659 B(Return) 2655 B(Return)
2660 }, 2656 },
2661 0}, 2657 0},
2662 {"'use strict';" 2658 {"'use strict';"
2663 "var a = {1:10};" 2659 "var a = {1:10};"
2664 "(function f1() {return a;});" 2660 "(function f1() {return a;});"
2665 "return delete a[1];", 2661 "return delete a[1];",
2666 2 * kPointerSize, 2662 2 * kPointerSize,
2667 1, 2663 1,
2668 28, 2664 27,
2669 { 2665 {
2670 B(CallRuntime), U16(Runtime::kNewFunctionContext), // 2666 B(CallRuntime), U16(Runtime::kNewFunctionContext), //
2671 R(closure), U8(1), // 2667 R(closure), U8(1), //
2672 B(PushContext), R(0), // 2668 B(PushContext), R(0), //
2673 B(LdaConstant), U8(0), // 2669 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
2674 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 2670 B(StaContextSlot), R(0), U8(first_context_slot), //
2675 B(StaContextSlot), R(0), U8(first_context_slot), // 2671 B(CreateClosure), U8(1), U8(0), //
2676 B(CreateClosure), U8(1), U8(0), // 2672 B(LdaContextSlot), R(0), U8(first_context_slot), //
2677 B(LdaContextSlot), R(0), U8(first_context_slot), // 2673 B(Star), R(1), //
2678 B(Star), R(1), // 2674 B(LdaSmi8), U8(1), //
2679 B(LdaSmi8), U8(1), // 2675 B(DeletePropertyStrict), R(1), //
2680 B(DeletePropertyStrict), R(1), //
2681 B(Return) 2676 B(Return)
2682 }, 2677 },
2683 2, 2678 2,
2684 {InstanceType::FIXED_ARRAY_TYPE, 2679 {InstanceType::FIXED_ARRAY_TYPE,
2685 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 2680 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
2686 {"return delete 'test';", 2681 {"return delete 'test';",
2687 0 * kPointerSize, 2682 0 * kPointerSize,
2688 1, 2683 1,
2689 2, 2684 2,
2690 { 2685 {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
2848 FeedbackVectorSlot slot2 = feedback_spec.AddLoadICSlot(); 2843 FeedbackVectorSlot slot2 = feedback_spec.AddLoadICSlot();
2849 uint8_t i_flags = JSRegExp::kIgnoreCase; 2844 uint8_t i_flags = JSRegExp::kIgnoreCase;
2850 2845
2851 Handle<i::TypeFeedbackVector> vector = 2846 Handle<i::TypeFeedbackVector> vector =
2852 i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec); 2847 i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec);
2853 2848
2854 ExpectedSnippet<const char*> snippets[] = { 2849 ExpectedSnippet<const char*> snippets[] = {
2855 {"return /ab+d/;", 2850 {"return /ab+d/;",
2856 0 * kPointerSize, 2851 0 * kPointerSize,
2857 1, 2852 1,
2858 6, 2853 5,
2859 { 2854 {
2860 B(LdaConstant), U8(0), // 2855 B(CreateRegExpLiteral), U8(0), U8(0), U8(0), //
2861 B(CreateRegExpLiteral), U8(0), U8(0), // 2856 B(Return), //
2862 B(Return), //
2863 }, 2857 },
2864 1, 2858 1,
2865 {"ab+d"}}, 2859 {"ab+d"}},
2866 {"return /(\\w+)\\s(\\w+)/i;", 2860 {"return /(\\w+)\\s(\\w+)/i;",
2867 0 * kPointerSize, 2861 0 * kPointerSize,
2868 1, 2862 1,
2869 6, 2863 5,
2870 { 2864 {
2871 B(LdaConstant), U8(0), // 2865 B(CreateRegExpLiteral), U8(0), U8(0), U8(i_flags), //
2872 B(CreateRegExpLiteral), U8(0), U8(i_flags), // 2866 B(Return), //
2873 B(Return), //
2874 }, 2867 },
2875 1, 2868 1,
2876 {"(\\w+)\\s(\\w+)"}}, 2869 {"(\\w+)\\s(\\w+)"}},
2877 {"return /ab+d/.exec('abdd');", 2870 {"return /ab+d/.exec('abdd');",
2878 3 * kPointerSize, 2871 3 * kPointerSize,
2879 1, 2872 1,
2880 23, 2873 22,
2881 { 2874 {
2882 B(LdaConstant), U8(0), // 2875 B(CreateRegExpLiteral), U8(0), U8(0), U8(0), //
2883 B(CreateRegExpLiteral), U8(0), U8(0), //
2884 B(Star), R(1), // 2876 B(Star), R(1), //
2885 B(LoadICSloppy), R(1), U8(1), U8(vector->GetIndex(slot2)), // 2877 B(LoadICSloppy), R(1), U8(1), U8(vector->GetIndex(slot2)), //
2886 B(Star), R(0), // 2878 B(Star), R(0), //
2887 B(LdaConstant), U8(2), // 2879 B(LdaConstant), U8(2), //
2888 B(Star), R(2), // 2880 B(Star), R(2), //
2889 B(Call), R(0), R(1), U8(1), U8(vector->GetIndex(slot1)), // 2881 B(Call), R(0), R(1), U8(1), U8(vector->GetIndex(slot1)), //
2890 B(Return), // 2882 B(Return), //
2891 }, 2883 },
2892 3, 2884 3,
2893 {"ab+d", "exec", "abdd"}}, 2885 {"ab+d", "exec", "abdd"}},
(...skipping 20 matching lines...) Expand all
2914 Handle<i::TypeFeedbackVector> vector = 2906 Handle<i::TypeFeedbackVector> vector =
2915 i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec); 2907 i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec);
2916 2908
2917 int simple_flags = 2909 int simple_flags =
2918 ArrayLiteral::kDisableMementos | ArrayLiteral::kShallowElements; 2910 ArrayLiteral::kDisableMementos | ArrayLiteral::kShallowElements;
2919 int deep_elements_flags = ArrayLiteral::kDisableMementos; 2911 int deep_elements_flags = ArrayLiteral::kDisableMementos;
2920 ExpectedSnippet<InstanceType> snippets[] = { 2912 ExpectedSnippet<InstanceType> snippets[] = {
2921 {"return [ 1, 2 ];", 2913 {"return [ 1, 2 ];",
2922 0, 2914 0,
2923 1, 2915 1,
2924 6, 2916 5,
2925 { 2917 {
2926 B(LdaConstant), U8(0), // 2918 B(CreateArrayLiteral), U8(0), U8(0), U8(simple_flags), //
2927 B(CreateArrayLiteral), U8(0), U8(simple_flags), // 2919 B(Return) //
2928 B(Return) //
2929 }, 2920 },
2930 1, 2921 1,
2931 {InstanceType::FIXED_ARRAY_TYPE}}, 2922 {InstanceType::FIXED_ARRAY_TYPE}},
2932 {"var a = 1; return [ a, a + 1 ];", 2923 {"var a = 1; return [ a, a + 1 ];",
2933 3 * kPointerSize, 2924 3 * kPointerSize,
2934 1, 2925 1,
2935 35, 2926 34,
2936 { 2927 {
2937 B(LdaSmi8), U8(1), // 2928 B(LdaSmi8), U8(1), //
2938 B(Star), R(0), // 2929 B(Star), R(0), //
2939 B(LdaConstant), U8(0), // 2930 B(CreateArrayLiteral), U8(0), U8(0), U8(3), //
2940 B(CreateArrayLiteral), U8(0), U8(3), //
2941 B(Star), R(2), // 2931 B(Star), R(2), //
2942 B(LdaZero), // 2932 B(LdaZero), //
2943 B(Star), R(1), // 2933 B(Star), R(1), //
2944 B(Ldar), R(0), // 2934 B(Ldar), R(0), //
2945 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot1)), // 2935 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot1)), //
2946 B(LdaSmi8), U8(1), // 2936 B(LdaSmi8), U8(1), //
2947 B(Star), R(1), // 2937 B(Star), R(1), //
2948 B(LdaSmi8), U8(1), // 2938 B(LdaSmi8), U8(1), //
2949 B(Add), R(0), // 2939 B(Add), R(0), //
2950 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot1)), // 2940 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot1)), //
2951 B(Ldar), R(2), // 2941 B(Ldar), R(2), //
2952 B(Return), // 2942 B(Return), //
2953 }, 2943 },
2954 1, 2944 1,
2955 {InstanceType::FIXED_ARRAY_TYPE}}, 2945 {InstanceType::FIXED_ARRAY_TYPE}},
2956 {"return [ [ 1, 2 ], [ 3 ] ];", 2946 {"return [ [ 1, 2 ], [ 3 ] ];",
2957 0, 2947 0,
2958 1, 2948 1,
2959 6, 2949 5,
2960 { 2950 {
2961 B(LdaConstant), U8(0), // 2951 B(CreateArrayLiteral), U8(0), U8(2), U8(deep_elements_flags), //
2962 B(CreateArrayLiteral), U8(2), U8(deep_elements_flags), // 2952 B(Return) //
2963 B(Return) //
2964 }, 2953 },
2965 1, 2954 1,
2966 {InstanceType::FIXED_ARRAY_TYPE}}, 2955 {InstanceType::FIXED_ARRAY_TYPE}},
2967 {"var a = 1; return [ [ a, 2 ], [ a + 2 ] ];", 2956 {"var a = 1; return [ [ a, 2 ], [ a + 2 ] ];",
2968 5 * kPointerSize, 2957 5 * kPointerSize,
2969 1, 2958 1,
2970 67, 2959 64,
2971 { 2960 {
2972 B(LdaSmi8), U8(1), // 2961 B(LdaSmi8), U8(1), //
2973 B(Star), R(0), // 2962 B(Star), R(0), //
2974 B(LdaConstant), U8(0), // 2963 B(CreateArrayLiteral), U8(0), U8(2), U8(deep_elements_flags), //
2975 B(CreateArrayLiteral), U8(2), U8(deep_elements_flags), //
2976 B(Star), R(2), // 2964 B(Star), R(2), //
2977 B(LdaZero), // 2965 B(LdaZero), //
2978 B(Star), R(1), // 2966 B(Star), R(1), //
2979 B(LdaConstant), U8(1), // 2967 B(CreateArrayLiteral), U8(1), U8(0), U8(simple_flags), //
2980 B(CreateArrayLiteral), U8(0), U8(simple_flags), //
2981 B(Star), R(4), // 2968 B(Star), R(4), //
2982 B(LdaZero), // 2969 B(LdaZero), //
2983 B(Star), R(3), // 2970 B(Star), R(3), //
2984 B(Ldar), R(0), // 2971 B(Ldar), R(0), //
2985 B(KeyedStoreICSloppy), R(4), R(3), U8(vector->GetIndex(slot1)), // 2972 B(KeyedStoreICSloppy), R(4), R(3), U8(vector->GetIndex(slot1)), //
2986 B(Ldar), R(4), // 2973 B(Ldar), R(4), //
2987 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot3)), // 2974 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot3)), //
2988 B(LdaSmi8), U8(1), // 2975 B(LdaSmi8), U8(1), //
2989 B(Star), R(1), // 2976 B(Star), R(1), //
2990 B(LdaConstant), U8(2), // 2977 B(CreateArrayLiteral), U8(2), U8(1), U8(simple_flags), //
2991 B(CreateArrayLiteral), U8(1), U8(simple_flags), //
2992 B(Star), R(4), // 2978 B(Star), R(4), //
2993 B(LdaZero), // 2979 B(LdaZero), //
2994 B(Star), R(3), // 2980 B(Star), R(3), //
2995 B(LdaSmi8), U8(2), // 2981 B(LdaSmi8), U8(2), //
2996 B(Add), R(0), // 2982 B(Add), R(0), //
2997 B(KeyedStoreICSloppy), R(4), R(3), U8(vector->GetIndex(slot2)), // 2983 B(KeyedStoreICSloppy), R(4), R(3), U8(vector->GetIndex(slot2)), //
2998 B(Ldar), R(4), // 2984 B(Ldar), R(4), //
2999 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot3)), // 2985 B(KeyedStoreICSloppy), R(2), R(1), U8(vector->GetIndex(slot3)), //
3000 B(Ldar), R(2), // 2986 B(Ldar), R(2), //
3001 B(Return), // 2987 B(Return), //
(...skipping 24 matching lines...) Expand all
3026 3012
3027 int simple_flags = ObjectLiteral::kFastElements | 3013 int simple_flags = ObjectLiteral::kFastElements |
3028 ObjectLiteral::kShallowProperties | 3014 ObjectLiteral::kShallowProperties |
3029 ObjectLiteral::kDisableMementos; 3015 ObjectLiteral::kDisableMementos;
3030 int deep_elements_flags = 3016 int deep_elements_flags =
3031 ObjectLiteral::kFastElements | ObjectLiteral::kDisableMementos; 3017 ObjectLiteral::kFastElements | ObjectLiteral::kDisableMementos;
3032 ExpectedSnippet<InstanceType> snippets[] = { 3018 ExpectedSnippet<InstanceType> snippets[] = {
3033 {"return { };", 3019 {"return { };",
3034 0, 3020 0,
3035 1, 3021 1,
3036 6, 3022 5,
3037 { 3023 {
3038 B(LdaConstant), U8(0), // 3024 B(CreateObjectLiteral), U8(0), U8(0), U8(simple_flags), //
3039 B(CreateObjectLiteral), U8(0), U8(simple_flags), // 3025 B(Return) //
3040 B(Return) //
3041 }, 3026 },
3042 1, 3027 1,
3043 {InstanceType::FIXED_ARRAY_TYPE}}, 3028 {InstanceType::FIXED_ARRAY_TYPE}},
3044 {"return { name: 'string', val: 9.2 };", 3029 {"return { name: 'string', val: 9.2 };",
3045 0, 3030 0,
3046 1, 3031 1,
3047 6, 3032 5,
3048 { 3033 {
3049 B(LdaConstant), U8(0), // 3034 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3050 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3035 B(Return) //
3051 B(Return) //
3052 }, 3036 },
3053 1, 3037 1,
3054 {InstanceType::FIXED_ARRAY_TYPE}}, 3038 {InstanceType::FIXED_ARRAY_TYPE}},
3055 {"var a = 1; return { name: 'string', val: a };", 3039 {"var a = 1; return { name: 'string', val: a };",
3056 2 * kPointerSize, 3040 2 * kPointerSize,
3057 1, 3041 1,
3058 20, 3042 19,
3059 { 3043 {
3060 B(LdaSmi8), U8(1), // 3044 B(LdaSmi8), U8(1), //
3061 B(Star), R(0), // 3045 B(Star), R(0), //
3062 B(LdaConstant), U8(0), // 3046 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3063 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3047 B(Star), R(1), //
3064 B(Star), R(1), // 3048 B(Ldar), R(0), //
3065 B(Ldar), R(0), // 3049 B(StoreICSloppy), R(1), U8(1), U8(vector->GetIndex(slot1)), //
3066 B(StoreICSloppy), R(1), U8(1), U8(vector->GetIndex(slot1)), // 3050 B(Ldar), R(1), //
3067 B(Ldar), R(1), // 3051 B(Return), //
3068 B(Return), //
3069 }, 3052 },
3070 2, 3053 2,
3071 {InstanceType::FIXED_ARRAY_TYPE, 3054 {InstanceType::FIXED_ARRAY_TYPE,
3072 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 3055 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
3073 {"var a = 1; return { val: a, val: a + 1 };", 3056 {"var a = 1; return { val: a, val: a + 1 };",
3074 2 * kPointerSize, 3057 2 * kPointerSize,
3075 1, 3058 1,
3076 22, 3059 21,
3077 { 3060 {
3078 B(LdaSmi8), U8(1), // 3061 B(LdaSmi8), U8(1), //
3079 B(Star), R(0), // 3062 B(Star), R(0), //
3080 B(LdaConstant), U8(0), // 3063 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3081 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3064 B(Star), R(1), //
3082 B(Star), R(1), // 3065 B(LdaSmi8), U8(1), //
3083 B(LdaSmi8), U8(1), // 3066 B(Add), R(0), //
3084 B(Add), R(0), // 3067 B(StoreICSloppy), R(1), U8(1), U8(vector->GetIndex(slot1)), //
3085 B(StoreICSloppy), R(1), U8(1), U8(vector->GetIndex(slot1)), // 3068 B(Ldar), R(1), //
3086 B(Ldar), R(1), // 3069 B(Return), //
3087 B(Return), //
3088 }, 3070 },
3089 2, 3071 2,
3090 {InstanceType::FIXED_ARRAY_TYPE, 3072 {InstanceType::FIXED_ARRAY_TYPE,
3091 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 3073 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
3092 {"return { func: function() { } };", 3074 {"return { func: function() { } };",
3093 1 * kPointerSize, 3075 1 * kPointerSize,
3094 1, 3076 1,
3095 17, 3077 16,
3096 { 3078 {
3097 B(LdaConstant), U8(0), // 3079 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3098 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3080 B(Star), R(0), //
3099 B(Star), R(0), // 3081 B(CreateClosure), U8(2), U8(0), //
3100 B(CreateClosure), U8(2), U8(0), // 3082 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), //
3101 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), // 3083 B(Ldar), R(0), //
3102 B(Ldar), R(0), // 3084 B(Return), //
3103 B(Return), //
3104 }, 3085 },
3105 3, 3086 3,
3106 {InstanceType::FIXED_ARRAY_TYPE, 3087 {InstanceType::FIXED_ARRAY_TYPE,
3107 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3088 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3108 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 3089 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
3109 {"return { func(a) { return a; } };", 3090 {"return { func(a) { return a; } };",
3110 1 * kPointerSize, 3091 1 * kPointerSize,
3111 1, 3092 1,
3112 17, 3093 16,
3113 { 3094 {
3114 B(LdaConstant), U8(0), // 3095 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3115 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3096 B(Star), R(0), //
3116 B(Star), R(0), // 3097 B(CreateClosure), U8(2), U8(0), //
3117 B(CreateClosure), U8(2), U8(0), // 3098 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), //
3118 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), // 3099 B(Ldar), R(0), //
3119 B(Ldar), R(0), // 3100 B(Return), //
3120 B(Return), //
3121 }, 3101 },
3122 3, 3102 3,
3123 {InstanceType::FIXED_ARRAY_TYPE, 3103 {InstanceType::FIXED_ARRAY_TYPE,
3124 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3104 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3125 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 3105 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
3126 {"return { get a() { return 2; } };", 3106 {"return { get a() { return 2; } };",
3127 5 * kPointerSize, 3107 5 * kPointerSize,
3128 1, 3108 1,
3129 30, 3109 29,
3130 { 3110 {
3131 B(LdaConstant), U8(0), // 3111 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3132 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), //
3133 B(Star), R(0), // 3112 B(Star), R(0), //
3134 B(LdaConstant), U8(1), // 3113 B(LdaConstant), U8(1), //
3135 B(Star), R(1), // 3114 B(Star), R(1), //
3136 B(CreateClosure), U8(2), U8(0), // 3115 B(CreateClosure), U8(2), U8(0), //
3137 B(Star), R(2), // 3116 B(Star), R(2), //
3138 B(LdaNull), // 3117 B(LdaNull), //
3139 B(Star), R(3), // 3118 B(Star), R(3), //
3140 B(LdaZero), // 3119 B(LdaZero), //
3141 B(Star), R(4), // 3120 B(Star), R(4), //
3142 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), // 3121 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), //
3143 R(0), U8(5), // 3122 R(0), U8(5), //
3144 B(Ldar), R(0), // 3123 B(Ldar), R(0), //
3145 B(Return), // 3124 B(Return), //
3146 }, 3125 },
3147 3, 3126 3,
3148 {InstanceType::FIXED_ARRAY_TYPE, 3127 {InstanceType::FIXED_ARRAY_TYPE,
3149 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3128 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3150 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 3129 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
3151 {"return { get a() { return this.x; }, set a(val) { this.x = val } };", 3130 {"return { get a() { return this.x; }, set a(val) { this.x = val } };",
3152 5 * kPointerSize, 3131 5 * kPointerSize,
3153 1, 3132 1,
3154 32, 3133 31,
3155 { 3134 {
3156 B(LdaConstant), U8(0), // 3135 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3157 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), //
3158 B(Star), R(0), // 3136 B(Star), R(0), //
3159 B(LdaConstant), U8(1), // 3137 B(LdaConstant), U8(1), //
3160 B(Star), R(1), // 3138 B(Star), R(1), //
3161 B(CreateClosure), U8(2), U8(0), // 3139 B(CreateClosure), U8(2), U8(0), //
3162 B(Star), R(2), // 3140 B(Star), R(2), //
3163 B(CreateClosure), U8(3), U8(0), // 3141 B(CreateClosure), U8(3), U8(0), //
3164 B(Star), R(3), // 3142 B(Star), R(3), //
3165 B(LdaZero), // 3143 B(LdaZero), //
3166 B(Star), R(4), // 3144 B(Star), R(4), //
3167 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), // 3145 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), //
3168 R(0), U8(5), // 3146 R(0), U8(5), //
3169 B(Ldar), R(0), // 3147 B(Ldar), R(0), //
3170 B(Return), // 3148 B(Return), //
3171 }, 3149 },
3172 4, 3150 4,
3173 {InstanceType::FIXED_ARRAY_TYPE, 3151 {InstanceType::FIXED_ARRAY_TYPE,
3174 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3152 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3175 InstanceType::SHARED_FUNCTION_INFO_TYPE, 3153 InstanceType::SHARED_FUNCTION_INFO_TYPE,
3176 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 3154 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
3177 {"return { set b(val) { this.y = val } };", 3155 {"return { set b(val) { this.y = val } };",
3178 5 * kPointerSize, 3156 5 * kPointerSize,
3179 1, 3157 1,
3180 30, 3158 29,
3181 { 3159 {
3182 B(LdaConstant), U8(0), // 3160 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3183 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), //
3184 B(Star), R(0), // 3161 B(Star), R(0), //
3185 B(LdaConstant), U8(1), // 3162 B(LdaConstant), U8(1), //
3186 B(Star), R(1), // 3163 B(Star), R(1), //
3187 B(LdaNull), // 3164 B(LdaNull), //
3188 B(Star), R(2), // 3165 B(Star), R(2), //
3189 B(CreateClosure), U8(2), U8(0), // 3166 B(CreateClosure), U8(2), U8(0), //
3190 B(Star), R(3), // 3167 B(Star), R(3), //
3191 B(LdaZero), // 3168 B(LdaZero), //
3192 B(Star), R(4), // 3169 B(Star), R(4), //
3193 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), // 3170 B(CallRuntime), U16(Runtime::kDefineAccessorPropertyUnchecked), //
3194 R(0), U8(5), // 3171 R(0), U8(5), //
3195 B(Ldar), R(0), // 3172 B(Ldar), R(0), //
3196 B(Return), // 3173 B(Return), //
3197 }, 3174 },
3198 3, 3175 3,
3199 {InstanceType::FIXED_ARRAY_TYPE, 3176 {InstanceType::FIXED_ARRAY_TYPE,
3200 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3177 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3201 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 3178 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
3202 {"var a = 1; return { 1: a };", 3179 {"var a = 1; return { 1: a };",
3203 5 * kPointerSize, 3180 5 * kPointerSize,
3204 1, 3181 1,
3205 30, 3182 29,
3206 { 3183 {
3207 B(LdaSmi8), U8(1), // 3184 B(LdaSmi8), U8(1), //
3208 B(Star), R(0), // 3185 B(Star), R(0), //
3209 B(LdaConstant), U8(0), // 3186 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
3210 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), // 3187 B(Star), R(1), //
3211 B(Star), R(1), // 3188 B(LdaSmi8), U8(1), //
3212 B(LdaSmi8), U8(1), // 3189 B(Star), R(2), //
3213 B(Star), R(2), // 3190 B(Ldar), R(0), //
3214 B(Ldar), R(0), // 3191 B(Star), R(3), //
3215 B(Star), R(3), // 3192 B(LdaZero), //
3216 B(LdaZero), // 3193 B(Star), R(4), //
3217 B(Star), R(4), // 3194 B(CallRuntime), U16(Runtime::kSetProperty), R(1), U8(4), //
3218 B(CallRuntime), U16(Runtime::kSetProperty), R(1), U8(4), // 3195 B(Ldar), R(1), //
3219 B(Ldar), R(1), // 3196 B(Return), //
3220 B(Return), //
3221 }, 3197 },
3222 1, 3198 1,
3223 {InstanceType::FIXED_ARRAY_TYPE}}, 3199 {InstanceType::FIXED_ARRAY_TYPE}},
3224 {"return { __proto__: null }", 3200 {"return { __proto__: null }",
3225 2 * kPointerSize, 3201 2 * kPointerSize,
3226 1, 3202 1,
3227 18, 3203 17,
3228 { 3204 {
3229 B(LdaConstant), U8(0), // 3205 B(CreateObjectLiteral), U8(0), U8(0), U8(simple_flags), //
3230 B(CreateObjectLiteral), U8(0), U8(simple_flags), //
3231 B(Star), R(0), // 3206 B(Star), R(0), //
3232 B(LdaNull), B(Star), R(1), // 3207 B(LdaNull), B(Star), R(1), //
3233 B(CallRuntime), U16(Runtime::kInternalSetPrototype), R(0), U8(2), // 3208 B(CallRuntime), U16(Runtime::kInternalSetPrototype), R(0), U8(2), //
3234 B(Ldar), R(0), // 3209 B(Ldar), R(0), //
3235 B(Return), // 3210 B(Return), //
3236 }, 3211 },
3237 1, 3212 1,
3238 {InstanceType::FIXED_ARRAY_TYPE}}, 3213 {InstanceType::FIXED_ARRAY_TYPE}},
3239 {"var a = 'test'; return { [a]: 1 }", 3214 {"var a = 'test'; return { [a]: 1 }",
3240 5 * kPointerSize, 3215 5 * kPointerSize,
3241 1, 3216 1,
3242 31, 3217 30,
3243 { 3218 {
3244 B(LdaConstant), U8(0), // 3219 B(LdaConstant), U8(0), //
3245 B(Star), R(0), // 3220 B(Star), R(0), //
3246 B(LdaConstant), U8(1), // 3221 B(CreateObjectLiteral), U8(1), U8(0), U8(simple_flags), //
3247 B(CreateObjectLiteral), U8(0), U8(simple_flags), //
3248 B(Star), R(1), // 3222 B(Star), R(1), //
3249 B(Ldar), R(0), // 3223 B(Ldar), R(0), //
3250 B(ToName), // 3224 B(ToName), //
3251 B(Star), R(2), // 3225 B(Star), R(2), //
3252 B(LdaSmi8), U8(1), // 3226 B(LdaSmi8), U8(1), //
3253 B(Star), R(3), // 3227 B(Star), R(3), //
3254 B(LdaZero), // 3228 B(LdaZero), //
3255 B(Star), R(4), // 3229 B(Star), R(4), //
3256 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), // 3230 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), //
3257 U8(4), // 3231 U8(4), //
3258 B(Ldar), R(1), // 3232 B(Ldar), R(1), //
3259 B(Return), // 3233 B(Return), //
3260 }, 3234 },
3261 2, 3235 2,
3262 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3236 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3263 InstanceType::FIXED_ARRAY_TYPE}}, 3237 InstanceType::FIXED_ARRAY_TYPE}},
3264 {"var a = 'test'; return { val: a, [a]: 1 }", 3238 {"var a = 'test'; return { val: a, [a]: 1 }",
3265 5 * kPointerSize, 3239 5 * kPointerSize,
3266 1, 3240 1,
3267 37, 3241 36,
3268 { 3242 {
3269 B(LdaConstant), U8(0), // 3243 B(LdaConstant), U8(0), //
3270 B(Star), R(0), // 3244 B(Star), R(0), //
3271 B(LdaConstant), U8(1), // 3245 B(CreateObjectLiteral), U8(1), U8(0), U8(deep_elements_flags), //
3272 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), //
3273 B(Star), R(1), // 3246 B(Star), R(1), //
3274 B(Ldar), R(0), // 3247 B(Ldar), R(0), //
3275 B(StoreICSloppy), R(1), U8(2), U8(vector->GetIndex(slot1)), // 3248 B(StoreICSloppy), R(1), U8(2), U8(vector->GetIndex(slot1)), //
3276 B(Ldar), R(0), // 3249 B(Ldar), R(0), //
3277 B(ToName), // 3250 B(ToName), //
3278 B(Star), R(2), // 3251 B(Star), R(2), //
3279 B(LdaSmi8), U8(1), // 3252 B(LdaSmi8), U8(1), //
3280 B(Star), R(3), // 3253 B(Star), R(3), //
3281 B(LdaZero), // 3254 B(LdaZero), //
3282 B(Star), R(4), // 3255 B(Star), R(4), //
3283 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), // 3256 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), //
3284 U8(4), // 3257 U8(4), //
3285 B(Ldar), R(1), // 3258 B(Ldar), R(1), //
3286 B(Return), // 3259 B(Return), //
3287 }, 3260 },
3288 3, 3261 3,
3289 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3262 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3290 InstanceType::FIXED_ARRAY_TYPE, 3263 InstanceType::FIXED_ARRAY_TYPE,
3291 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 3264 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
3292 {"var a = 'test'; return { [a]: 1, __proto__: {} }", 3265 {"var a = 'test'; return { [a]: 1, __proto__: {} }",
3293 5 * kPointerSize, 3266 5 * kPointerSize,
3294 1, 3267 1,
3295 43, 3268 41,
3296 { 3269 {
3297 B(LdaConstant), U8(0), // 3270 B(LdaConstant), U8(0), //
3298 B(Star), R(0), // 3271 B(Star), R(0), //
3299 B(LdaConstant), U8(1), // 3272 B(CreateObjectLiteral), U8(1), U8(1), U8(simple_flags), //
3300 B(CreateObjectLiteral), U8(1), U8(simple_flags), //
3301 B(Star), R(1), // 3273 B(Star), R(1), //
3302 B(Ldar), R(0), // 3274 B(Ldar), R(0), //
3303 B(ToName), // 3275 B(ToName), //
3304 B(Star), R(2), // 3276 B(Star), R(2), //
3305 B(LdaSmi8), U8(1), // 3277 B(LdaSmi8), U8(1), //
3306 B(Star), R(3), // 3278 B(Star), R(3), //
3307 B(LdaZero), // 3279 B(LdaZero), //
3308 B(Star), R(4), // 3280 B(Star), R(4), //
3309 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), // 3281 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), //
3310 U8(4), // 3282 U8(4), //
3311 B(LdaConstant), U8(1), // 3283 B(CreateObjectLiteral), U8(1), U8(0), U8(13), //
3312 B(CreateObjectLiteral), U8(0), U8(13), //
3313 B(Star), R(2), // 3284 B(Star), R(2), //
3314 B(CallRuntime), U16(Runtime::kInternalSetPrototype), R(1), U8(2), // 3285 B(CallRuntime), U16(Runtime::kInternalSetPrototype), R(1), U8(2), //
3315 B(Ldar), R(1), // 3286 B(Ldar), R(1), //
3316 B(Return), // 3287 B(Return), //
3317 }, 3288 },
3318 2, 3289 2,
3319 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3290 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
3320 InstanceType::FIXED_ARRAY_TYPE}}, 3291 InstanceType::FIXED_ARRAY_TYPE}},
3321 {"var n = 'name'; return { [n]: 'val', get a() { }, set a(b) {} };", 3292 {"var n = 'name'; return { [n]: 'val', get a() { }, set a(b) {} };",
3322 5 * kPointerSize, 3293 5 * kPointerSize,
3323 1, 3294 1,
3324 65, 3295 64,
3325 { 3296 {
3326 B(LdaConstant), U8(0), // 3297 B(LdaConstant), U8(0), //
3327 B(Star), R(0), // 3298 B(Star), R(0), //
3328 B(LdaConstant), U8(1), // 3299 B(CreateObjectLiteral), U8(1), U8(0), U8(simple_flags), //
3329 B(CreateObjectLiteral), U8(0), U8(simple_flags), //
3330 B(Star), R(1), // 3300 B(Star), R(1), //
3331 B(Ldar), R(0), // 3301 B(Ldar), R(0), //
3332 B(ToName), // 3302 B(ToName), //
3333 B(Star), R(2), // 3303 B(Star), R(2), //
3334 B(LdaConstant), U8(2), // 3304 B(LdaConstant), U8(2), //
3335 B(Star), R(3), // 3305 B(Star), R(3), //
3336 B(LdaZero), // 3306 B(LdaZero), //
3337 B(Star), R(4), // 3307 B(Star), R(4), //
3338 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), // 3308 B(CallRuntime), U16(Runtime::kDefineDataPropertyUnchecked), R(1), //
3339 U8(4), // 3309 U8(4), //
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3377 InitializedHandleScope handle_scope; 3347 InitializedHandleScope handle_scope;
3378 BytecodeGeneratorHelper helper; 3348 BytecodeGeneratorHelper helper;
3379 3349
3380 int has_function_flags = ObjectLiteral::kFastElements | 3350 int has_function_flags = ObjectLiteral::kFastElements |
3381 ObjectLiteral::kHasFunction | 3351 ObjectLiteral::kHasFunction |
3382 ObjectLiteral::kDisableMementos; 3352 ObjectLiteral::kDisableMementos;
3383 ExpectedSnippet<InstanceType> snippets[] = { 3353 ExpectedSnippet<InstanceType> snippets[] = {
3384 {"var a = { func: function() { } };", 3354 {"var a = { func: function() { } };",
3385 5 * kPointerSize, 3355 5 * kPointerSize,
3386 1, 3356 1,
3387 49, 3357 48,
3388 { 3358 {
3389 B(LdaConstant), U8(0), // 3359 B(LdaConstant), U8(0), //
3390 B(Star), R(1), // 3360 B(Star), R(1), //
3391 B(LdaZero), // 3361 B(LdaZero), //
3392 B(Star), R(2), // 3362 B(Star), R(2), //
3393 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), // 3363 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), //
3394 B(LdaConstant), U8(1), // 3364 B(LdaConstant), U8(1), //
3395 B(Star), R(1), // 3365 B(Star), R(1), //
3396 B(LdaZero), // 3366 B(LdaZero), //
3397 B(Star), R(2), // 3367 B(Star), R(2), //
3398 B(LdaConstant), U8(2), // 3368 B(CreateObjectLiteral), U8(2), U8(0), U8(has_function_flags), //
3399 B(CreateObjectLiteral), U8(0), U8(has_function_flags), //
3400 B(Star), R(4), // 3369 B(Star), R(4), //
3401 B(CreateClosure), U8(4), U8(1), // 3370 B(CreateClosure), U8(4), U8(1), //
3402 B(StoreICSloppy), R(4), U8(3), U8(5), // 3371 B(StoreICSloppy), R(4), U8(3), U8(5), //
3403 B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1), // 3372 B(CallRuntime), U16(Runtime::kToFastProperties), R(4), U8(1), //
3404 B(Ldar), R(4), // 3373 B(Ldar), R(4), //
3405 B(Star), R(3), // 3374 B(Star), R(3), //
3406 B(CallRuntime), U16(Runtime::kInitializeVarGlobal), R(1), U8(3), // 3375 B(CallRuntime), U16(Runtime::kInitializeVarGlobal), R(1), U8(3), //
3407 B(LdaUndefined), // 3376 B(LdaUndefined), //
3408 B(Return), // 3377 B(Return), //
3409 }, 3378 },
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
3956 B(ToNumber), // 3925 B(ToNumber), //
3957 B(Star), R(1), // 3926 B(Star), R(1), //
3958 B(Dec), // 3927 B(Dec), //
3959 B(Star), R(0), // 3928 B(Star), R(0), //
3960 B(Ldar), R(1), // 3929 B(Ldar), R(1), //
3961 B(Return), // 3930 B(Return), //
3962 }}, 3931 }},
3963 {"var a = { val: 1 }; return a.val++;", 3932 {"var a = { val: 1 }; return a.val++;",
3964 2 * kPointerSize, 3933 2 * kPointerSize,
3965 1, 3934 1,
3966 22, 3935 21,
3967 { 3936 {
3968 B(LdaConstant), U8(0), // 3937 B(CreateObjectLiteral), U8(0), U8(0), U8(object_literal_flags), //
3969 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), // 3938 B(Star), R(0), //
3970 B(Star), R(0), // 3939 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), //
3971 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), // 3940 B(ToNumber), //
3972 B(ToNumber), // 3941 B(Star), R(1), //
3973 B(Star), R(1), // 3942 B(Inc), //
3974 B(Inc), // 3943 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), //
3975 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), // 3944 B(Ldar), R(1), //
3976 B(Ldar), R(1), // 3945 B(Return), //
3977 B(Return), //
3978 }, 3946 },
3979 2, 3947 2,
3980 {InstanceType::FIXED_ARRAY_TYPE, 3948 {InstanceType::FIXED_ARRAY_TYPE,
3981 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 3949 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
3982 {"var a = { val: 1 }; return --a.val;", 3950 {"var a = { val: 1 }; return --a.val;",
3983 1 * kPointerSize, 3951 1 * kPointerSize,
3984 1, 3952 1,
3985 18, 3953 17,
3986 { 3954 {
3987 B(LdaConstant), U8(0), // 3955 B(CreateObjectLiteral), U8(0), U8(0), U8(object_literal_flags), //
3988 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), // 3956 B(Star), R(0), //
3989 B(Star), R(0), // 3957 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), //
3990 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), // 3958 B(ToNumber), //
3991 B(ToNumber), // 3959 B(Dec), //
3992 B(Dec), // 3960 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), //
3993 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), // 3961 B(Return), //
3994 B(Return), //
3995 }, 3962 },
3996 2, 3963 2,
3997 {InstanceType::FIXED_ARRAY_TYPE, 3964 {InstanceType::FIXED_ARRAY_TYPE,
3998 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 3965 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
3999 {"var name = 'var'; var a = { val: 1 }; return a[name]--;", 3966 {"var name = 'var'; var a = { val: 1 }; return a[name]--;",
4000 4 * kPointerSize, 3967 4 * kPointerSize,
4001 1, 3968 1,
4002 29, 3969 28,
4003 { 3970 {
4004 B(LdaConstant), U8(0), // 3971 B(LdaConstant), U8(0), //
4005 B(Star), R(0), // 3972 B(Star), R(0), //
4006 B(LdaConstant), U8(1), // 3973 B(CreateObjectLiteral), U8(1), U8(0), U8(object_literal_flags), //
4007 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), //
4008 B(Star), R(1), // 3974 B(Star), R(1), //
4009 B(Ldar), R(0), // 3975 B(Ldar), R(0), //
4010 B(Star), R(2), // 3976 B(Star), R(2), //
4011 B(KeyedLoadICSloppy), R(1), U8(vector->GetIndex(slot1)), // 3977 B(KeyedLoadICSloppy), R(1), U8(vector->GetIndex(slot1)), //
4012 B(ToNumber), // 3978 B(ToNumber), //
4013 B(Star), R(3), // 3979 B(Star), R(3), //
4014 B(Dec), // 3980 B(Dec), //
4015 B(KeyedStoreICSloppy), R(1), R(2), U8(vector->GetIndex(slot2)), // 3981 B(KeyedStoreICSloppy), R(1), R(2), U8(vector->GetIndex(slot2)), //
4016 B(Ldar), R(3), // 3982 B(Ldar), R(3), //
4017 B(Return), // 3983 B(Return), //
4018 }, 3984 },
4019 2, 3985 2,
4020 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 3986 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
4021 InstanceType::FIXED_ARRAY_TYPE}}, 3987 InstanceType::FIXED_ARRAY_TYPE}},
4022 {"var name = 'var'; var a = { val: 1 }; return ++a[name];", 3988 {"var name = 'var'; var a = { val: 1 }; return ++a[name];",
4023 3 * kPointerSize, 3989 3 * kPointerSize,
4024 1, 3990 1,
4025 25, 3991 24,
4026 { 3992 {
4027 B(LdaConstant), U8(0), // 3993 B(LdaConstant), U8(0), //
4028 B(Star), R(0), // 3994 B(Star), R(0), //
4029 B(LdaConstant), U8(1), // 3995 B(CreateObjectLiteral), U8(1), U8(0), U8(object_literal_flags), //
4030 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), //
4031 B(Star), R(1), // 3996 B(Star), R(1), //
4032 B(Ldar), R(0), // 3997 B(Ldar), R(0), //
4033 B(Star), R(2), // 3998 B(Star), R(2), //
4034 B(KeyedLoadICSloppy), R(1), U8(vector->GetIndex(slot1)), // 3999 B(KeyedLoadICSloppy), R(1), U8(vector->GetIndex(slot1)), //
4035 B(ToNumber), // 4000 B(ToNumber), //
4036 B(Inc), // 4001 B(Inc), //
4037 B(KeyedStoreICSloppy), R(1), R(2), U8(vector->GetIndex(slot2)), // 4002 B(KeyedStoreICSloppy), R(1), R(2), U8(vector->GetIndex(slot2)), //
4038 B(Return), // 4003 B(Return), //
4039 }, 4004 },
4040 2, 4005 2,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4078 B(Dec), // 4043 B(Dec), //
4079 B(StaContextSlot), R(1), U8(first_context_slot), // 4044 B(StaContextSlot), R(1), U8(first_context_slot), //
4080 B(Ldar), R(2), // 4045 B(Ldar), R(2), //
4081 B(Return), // 4046 B(Return), //
4082 }, 4047 },
4083 1, 4048 1,
4084 {InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 4049 {InstanceType::SHARED_FUNCTION_INFO_TYPE}},
4085 {"var idx = 1; var a = [1, 2]; return a[idx++] = 2;", 4050 {"var idx = 1; var a = [1, 2]; return a[idx++] = 2;",
4086 3 * kPointerSize, 4051 3 * kPointerSize,
4087 1, 4052 1,
4088 26, 4053 25,
4089 { 4054 {
4090 B(LdaSmi8), U8(1), // 4055 B(LdaSmi8), U8(1), //
4091 B(Star), R(0), // 4056 B(Star), R(0), //
4092 B(LdaConstant), U8(0), // 4057 B(CreateArrayLiteral), U8(0), U8(0), U8(array_literal_flags), //
4093 B(CreateArrayLiteral), U8(0), U8(array_literal_flags), //
4094 B(Star), R(1), // 4058 B(Star), R(1), //
4095 B(Ldar), R(0), // 4059 B(Ldar), R(0), //
4096 B(ToNumber), // 4060 B(ToNumber), //
4097 B(Star), R(2), // 4061 B(Star), R(2), //
4098 B(Inc), // 4062 B(Inc), //
4099 B(Star), R(0), // 4063 B(Star), R(0), //
4100 B(LdaSmi8), U8(2), // 4064 B(LdaSmi8), U8(2), //
4101 B(KeyedStoreICSloppy), R(1), R(2), // 4065 B(KeyedStoreICSloppy), R(1), R(2), //
4102 U8(store_vector->GetIndex(store_slot)), // 4066 U8(store_vector->GetIndex(store_slot)), //
4103 B(Return), // 4067 B(Return), //
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
4234 B(Star), R(0), // 4198 B(Star), R(0), //
4235 B(LdaSmi8), U8(2), // 4199 B(LdaSmi8), U8(2), //
4236 B(Div), R(0), // 4200 B(Div), R(0), //
4237 B(Star), R(0), // 4201 B(Star), R(0), //
4238 B(LdaUndefined), // 4202 B(LdaUndefined), //
4239 B(Return), // 4203 B(Return), //
4240 }}, 4204 }},
4241 {"var a = { val: 2 }; a.name *= 2;", 4205 {"var a = { val: 2 }; a.name *= 2;",
4242 2 * kPointerSize, 4206 2 * kPointerSize,
4243 1, 4207 1,
4244 23, 4208 22,
4245 { 4209 {
4246 B(LdaConstant), U8(0), // 4210 B(CreateObjectLiteral), U8(0), U8(0), U8(object_literal_flags), //
4247 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), // 4211 B(Star), R(0), //
4248 B(Star), R(0), // 4212 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), //
4249 B(LoadICSloppy), R(0), U8(1), U8(vector->GetIndex(slot1)), // 4213 B(Star), R(1), //
4250 B(Star), R(1), // 4214 B(LdaSmi8), U8(2), //
4251 B(LdaSmi8), U8(2), // 4215 B(Mul), R(1), //
4252 B(Mul), R(1), // 4216 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), //
4253 B(StoreICSloppy), R(0), U8(1), U8(vector->GetIndex(slot2)), // 4217 B(LdaUndefined), //
4254 B(LdaUndefined), // 4218 B(Return), //
4255 B(Return), //
4256 }, 4219 },
4257 2, 4220 2,
4258 {InstanceType::FIXED_ARRAY_TYPE, 4221 {InstanceType::FIXED_ARRAY_TYPE,
4259 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 4222 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
4260 {"var a = { 1: 2 }; a[1] ^= 2;", 4223 {"var a = { 1: 2 }; a[1] ^= 2;",
4261 3 * kPointerSize, 4224 3 * kPointerSize,
4262 1, 4225 1,
4263 26, 4226 25,
4264 { 4227 {
4265 B(LdaConstant), U8(0), // 4228 B(CreateObjectLiteral), U8(0), U8(0), U8(object_literal_flags), //
4266 B(CreateObjectLiteral), U8(0), U8(object_literal_flags), //
4267 B(Star), R(0), // 4229 B(Star), R(0), //
4268 B(LdaSmi8), U8(1), // 4230 B(LdaSmi8), U8(1), //
4269 B(Star), R(1), // 4231 B(Star), R(1), //
4270 B(KeyedLoadICSloppy), R(0), U8(vector->GetIndex(slot1)), // 4232 B(KeyedLoadICSloppy), R(0), U8(vector->GetIndex(slot1)), //
4271 B(Star), R(2), // 4233 B(Star), R(2), //
4272 B(LdaSmi8), U8(2), // 4234 B(LdaSmi8), U8(2), //
4273 B(BitwiseXor), R(2), // 4235 B(BitwiseXor), R(2), //
4274 B(KeyedStoreICSloppy), R(0), R(1), U8(vector->GetIndex(slot2)), // 4236 B(KeyedStoreICSloppy), R(0), R(1), U8(vector->GetIndex(slot2)), //
4275 B(LdaUndefined), // 4237 B(LdaUndefined), //
4276 B(Return), // 4238 B(Return), //
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
4550 B(Jump), U8(-19), // 4512 B(Jump), U8(-19), //
4551 B(LdaUndefined), // 4513 B(LdaUndefined), //
4552 B(Return), // 4514 B(Return), //
4553 }, 4515 },
4554 1, 4516 1,
4555 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 4517 {InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
4556 {"var x = 0;\n" 4518 {"var x = 0;\n"
4557 "for (var p in [1,2,3]) { x += p; }", 4519 "for (var p in [1,2,3]) { x += p; }",
4558 5 * kPointerSize, 4520 5 * kPointerSize,
4559 1, 4521 1,
4560 53, 4522 52,
4561 { 4523 {
4562 B(LdaZero), // 4524 B(LdaZero), //
4563 B(Star), R(1), // 4525 B(Star), R(1), //
4564 B(LdaConstant), U8(0), // 4526 B(CreateArrayLiteral), U8(0), U8(0), U8(simple_flags), //
4565 B(CreateArrayLiteral), U8(0), U8(simple_flags), //
4566 B(JumpIfUndefined), U8(43), // 4527 B(JumpIfUndefined), U8(43), //
4567 B(JumpIfNull), U8(41), // 4528 B(JumpIfNull), U8(41), //
4568 B(ToObject), // 4529 B(ToObject), //
4569 B(Star), R(3), // 4530 B(Star), R(3), //
4570 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(3), U8(1), // 4531 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(3), U8(1), //
4571 B(ForInPrepare), R(3), // 4532 B(ForInPrepare), R(3), //
4572 B(JumpIfUndefined), U8(29), // 4533 B(JumpIfUndefined), U8(29), //
4573 B(Star), R(4), // 4534 B(Star), R(4), //
4574 B(LdaZero), // 4535 B(LdaZero), //
4575 B(Star), R(3), // 4536 B(Star), R(3), //
(...skipping 13 matching lines...) Expand all
4589 }, 4550 },
4590 1, 4551 1,
4591 {InstanceType::FIXED_ARRAY_TYPE}}, 4552 {InstanceType::FIXED_ARRAY_TYPE}},
4592 {"var x = { 'a': 1, 'b': 2 };\n" 4553 {"var x = { 'a': 1, 'b': 2 };\n"
4593 "for (x['a'] in [10, 20, 30]) {\n" 4554 "for (x['a'] in [10, 20, 30]) {\n"
4594 " if (x['a'] == 10) continue;\n" 4555 " if (x['a'] == 10) continue;\n"
4595 " if (x['a'] == 20) break;\n" 4556 " if (x['a'] == 20) break;\n"
4596 "}", 4557 "}",
4597 4 * kPointerSize, 4558 4 * kPointerSize,
4598 1, 4559 1,
4599 83, 4560 81,
4600 { 4561 {
4601 B(LdaConstant), U8(0), // 4562 B(CreateObjectLiteral), U8(0), U8(0), U8(deep_elements_flags), //
4602 B(CreateObjectLiteral), U8(0), U8(deep_elements_flags), //
4603 B(Star), R(0), // 4563 B(Star), R(0), //
4604 B(LdaConstant), U8(1), // 4564 B(CreateArrayLiteral), U8(1), U8(1), U8(simple_flags), //
4605 B(CreateArrayLiteral), U8(1), U8(simple_flags), //
4606 B(JumpIfUndefined), U8(69), // 4565 B(JumpIfUndefined), U8(69), //
4607 B(JumpIfNull), U8(67), // 4566 B(JumpIfNull), U8(67), //
4608 B(ToObject), // 4567 B(ToObject), //
4609 B(Star), R(1), // 4568 B(Star), R(1), //
4610 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(1), U8(1), // 4569 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(1), U8(1), //
4611 B(ForInPrepare), R(1), // 4570 B(ForInPrepare), R(1), //
4612 B(JumpIfUndefined), U8(55), // 4571 B(JumpIfUndefined), U8(55), //
4613 B(Star), R(2), // 4572 B(Star), R(2), //
4614 B(LdaZero), // 4573 B(LdaZero), //
4615 B(Star), R(1), // 4574 B(Star), R(1), //
(...skipping 21 matching lines...) Expand all
4637 B(LdaUndefined), // 4596 B(LdaUndefined), //
4638 B(Return), // 4597 B(Return), //
4639 }, 4598 },
4640 3, 4599 3,
4641 {InstanceType::FIXED_ARRAY_TYPE, InstanceType::FIXED_ARRAY_TYPE, 4600 {InstanceType::FIXED_ARRAY_TYPE, InstanceType::FIXED_ARRAY_TYPE,
4642 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, 4601 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
4643 {"var x = [ 10, 11, 12 ] ;\n" 4602 {"var x = [ 10, 11, 12 ] ;\n"
4644 "for (x[0] in [1,2,3]) { return x[3]; }", 4603 "for (x[0] in [1,2,3]) { return x[3]; }",
4645 5 * kPointerSize, 4604 5 * kPointerSize,
4646 1, 4605 1,
4647 66, 4606 64,
4648 { 4607 {
4649 B(LdaConstant), U8(0), // 4608 B(CreateArrayLiteral), U8(0), U8(0), U8(simple_flags), //
4650 B(CreateArrayLiteral), U8(0), U8(simple_flags), //
4651 B(Star), R(0), // 4609 B(Star), R(0), //
4652 B(LdaConstant), U8(1), // 4610 B(CreateArrayLiteral), U8(1), U8(1), U8(simple_flags), //
4653 B(CreateArrayLiteral), U8(1), U8(simple_flags), //
4654 B(JumpIfUndefined), U8(52), // 4611 B(JumpIfUndefined), U8(52), //
4655 B(JumpIfNull), U8(50), // 4612 B(JumpIfNull), U8(50), //
4656 B(ToObject), // 4613 B(ToObject), //
4657 B(Star), R(1), // 4614 B(Star), R(1), //
4658 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(1), U8(1), // 4615 B(CallRuntime), U16(Runtime::kGetPropertyNamesFast), R(1), U8(1), //
4659 B(ForInPrepare), R(1), // 4616 B(ForInPrepare), R(1), //
4660 B(JumpIfUndefined), U8(38), // 4617 B(JumpIfUndefined), U8(38), //
4661 B(Star), R(2), // 4618 B(Star), R(2), //
4662 B(LdaZero), // 4619 B(LdaZero), //
4663 B(Star), R(1), // 4620 B(Star), R(1), //
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after
5460 for (size_t i = 0; i < arraysize(snippets); i++) { 5417 for (size_t i = 0; i < arraysize(snippets); i++) {
5461 Handle<BytecodeArray> bytecode_array = 5418 Handle<BytecodeArray> bytecode_array =
5462 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 5419 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
5463 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 5420 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
5464 } 5421 }
5465 } 5422 }
5466 5423
5467 } // namespace interpreter 5424 } // namespace interpreter
5468 } // namespace internal 5425 } // namespace internal
5469 } // namespace v8 5426 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698