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

Side by Side Diff: src/builtins/builtins.h

Issue 2571563004: [Turbofan] Implement super calls with spread bytecode in assembly code. (Closed)
Patch Set: Update builtins for new push args modes Created 3 years, 11 months 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 #ifndef V8_BUILTINS_BUILTINS_H_ 5 #ifndef V8_BUILTINS_BUILTINS_H_
6 #define V8_BUILTINS_BUILTINS_H_ 6 #define V8_BUILTINS_BUILTINS_H_
7 7
8 #include "src/base/flags.h" 8 #include "src/base/flags.h"
9 #include "src/handles.h" 9 #include "src/handles.h"
10 10
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 /* Construct */ \ 78 /* Construct */ \
79 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \ 79 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \
80 ASM(ConstructFunction) \ 80 ASM(ConstructFunction) \
81 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \ 81 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \
82 ASM(ConstructBoundFunction) \ 82 ASM(ConstructBoundFunction) \
83 ASM(ConstructedNonConstructable) \ 83 ASM(ConstructedNonConstructable) \
84 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \ 84 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \
85 ASM(ConstructProxy) \ 85 ASM(ConstructProxy) \
86 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \ 86 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \
87 ASM(Construct) \ 87 ASM(Construct) \
88 ASM(ConstructWithSpread) \
88 ASM(JSConstructStubApi) \ 89 ASM(JSConstructStubApi) \
89 ASM(JSConstructStubGeneric) \ 90 ASM(JSConstructStubGeneric) \
90 ASM(JSBuiltinsConstructStub) \ 91 ASM(JSBuiltinsConstructStub) \
91 ASM(JSBuiltinsConstructStubForDerived) \ 92 ASM(JSBuiltinsConstructStubForDerived) \
92 TFS(FastNewClosure, BUILTIN, kNoExtraICState, FastNewClosure) \ 93 TFS(FastNewClosure, BUILTIN, kNoExtraICState, FastNewClosure) \
93 TFS(FastNewFunctionContextEval, BUILTIN, kNoExtraICState, \ 94 TFS(FastNewFunctionContextEval, BUILTIN, kNoExtraICState, \
94 FastNewFunctionContext) \ 95 FastNewFunctionContext) \
95 TFS(FastNewFunctionContextFunction, BUILTIN, kNoExtraICState, \ 96 TFS(FastNewFunctionContextFunction, BUILTIN, kNoExtraICState, \
96 FastNewFunctionContext) \ 97 FastNewFunctionContext) \
97 TFS(FastCloneRegExp, BUILTIN, kNoExtraICState, FastCloneRegExp) \ 98 TFS(FastCloneRegExp, BUILTIN, kNoExtraICState, FastCloneRegExp) \
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 \ 137 \
137 /* Interpreter */ \ 138 /* Interpreter */ \
138 ASM(InterpreterEntryTrampoline) \ 139 ASM(InterpreterEntryTrampoline) \
139 ASM(InterpreterPushArgsAndCall) \ 140 ASM(InterpreterPushArgsAndCall) \
140 ASM(InterpreterPushArgsAndCallFunction) \ 141 ASM(InterpreterPushArgsAndCallFunction) \
141 ASM(InterpreterPushArgsAndTailCall) \ 142 ASM(InterpreterPushArgsAndTailCall) \
142 ASM(InterpreterPushArgsAndTailCallFunction) \ 143 ASM(InterpreterPushArgsAndTailCallFunction) \
143 ASM(InterpreterPushArgsAndConstruct) \ 144 ASM(InterpreterPushArgsAndConstruct) \
144 ASM(InterpreterPushArgsAndConstructFunction) \ 145 ASM(InterpreterPushArgsAndConstructFunction) \
145 ASM(InterpreterPushArgsAndConstructArray) \ 146 ASM(InterpreterPushArgsAndConstructArray) \
147 ASM(InterpreterPushArgsAndConstructWithFinalSpread) \
146 ASM(InterpreterEnterBytecodeAdvance) \ 148 ASM(InterpreterEnterBytecodeAdvance) \
147 ASM(InterpreterEnterBytecodeDispatch) \ 149 ASM(InterpreterEnterBytecodeDispatch) \
148 ASM(InterpreterOnStackReplacement) \ 150 ASM(InterpreterOnStackReplacement) \
149 \ 151 \
150 /* Code life-cycle */ \ 152 /* Code life-cycle */ \
151 ASM(CompileBaseline) \ 153 ASM(CompileBaseline) \
152 ASM(CompileOptimized) \ 154 ASM(CompileOptimized) \
153 ASM(CompileOptimizedConcurrent) \ 155 ASM(CompileOptimizedConcurrent) \
154 ASM(InOptimizationQueue) \ 156 ASM(InOptimizationQueue) \
155 ASM(InstantiateAsmJs) \ 157 ASM(InstantiateAsmJs) \
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 #define BUILTIN_LIST_A(V) \ 786 #define BUILTIN_LIST_A(V) \
785 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ 787 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
786 V, V, V) 788 V, V, V)
787 789
788 #define BUILTIN_LIST_DBG(V) \ 790 #define BUILTIN_LIST_DBG(V) \
789 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ 791 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
790 IGNORE_BUILTIN, IGNORE_BUILTIN, V) 792 IGNORE_BUILTIN, IGNORE_BUILTIN, V)
791 793
792 // Forward declarations. 794 // Forward declarations.
793 class ObjectVisitor; 795 class ObjectVisitor;
796 enum class PushArgsConstructMode : unsigned;
794 namespace compiler { 797 namespace compiler {
795 class CodeAssemblerState; 798 class CodeAssemblerState;
796 } 799 }
797 800
798 class Builtins { 801 class Builtins {
799 public: 802 public:
800 ~Builtins(); 803 ~Builtins();
801 804
802 // Generate all builtin code objects. Should be called once during 805 // Generate all builtin code objects. Should be called once during
803 // isolate initialization. 806 // isolate initialization.
(...skipping 24 matching lines...) Expand all
828 TailCallMode tail_call_mode = TailCallMode::kDisallow); 831 TailCallMode tail_call_mode = TailCallMode::kDisallow);
829 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny, 832 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny,
830 TailCallMode tail_call_mode = TailCallMode::kDisallow); 833 TailCallMode tail_call_mode = TailCallMode::kDisallow);
831 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode); 834 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode);
832 Handle<Code> NonPrimitiveToPrimitive( 835 Handle<Code> NonPrimitiveToPrimitive(
833 ToPrimitiveHint hint = ToPrimitiveHint::kDefault); 836 ToPrimitiveHint hint = ToPrimitiveHint::kDefault);
834 Handle<Code> OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint); 837 Handle<Code> OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint);
835 Handle<Code> InterpreterPushArgsAndCall( 838 Handle<Code> InterpreterPushArgsAndCall(
836 TailCallMode tail_call_mode, 839 TailCallMode tail_call_mode,
837 CallableType function_type = CallableType::kAny); 840 CallableType function_type = CallableType::kAny);
838 Handle<Code> InterpreterPushArgsAndConstruct(CallableType function_type); 841 Handle<Code> InterpreterPushArgsAndConstruct(PushArgsConstructMode mode);
839 Handle<Code> NewFunctionContext(ScopeType scope_type); 842 Handle<Code> NewFunctionContext(ScopeType scope_type);
840 Handle<Code> NewCloneShallowArray(AllocationSiteMode allocation_mode); 843 Handle<Code> NewCloneShallowArray(AllocationSiteMode allocation_mode);
841 Handle<Code> NewCloneShallowObject(int length); 844 Handle<Code> NewCloneShallowObject(int length);
842 845
843 Code* builtin(Name name) { 846 Code* builtin(Name name) {
844 // Code::cast cannot be used here since we access builtins 847 // Code::cast cannot be used here since we access builtins
845 // during the marking phase of mark sweep. See IC::Clear. 848 // during the marking phase of mark sweep. See IC::Clear.
846 return reinterpret_cast<Code*>(builtins_[name]); 849 return reinterpret_cast<Code*>(builtins_[name]);
847 } 850 }
848 851
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 TailCallMode tail_call_mode); 889 TailCallMode tail_call_mode);
887 890
888 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, 891 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode,
889 TailCallMode tail_call_mode); 892 TailCallMode tail_call_mode);
890 893
891 static void Generate_InterpreterPushArgsAndCallImpl( 894 static void Generate_InterpreterPushArgsAndCallImpl(
892 MacroAssembler* masm, TailCallMode tail_call_mode, 895 MacroAssembler* masm, TailCallMode tail_call_mode,
893 CallableType function_type); 896 CallableType function_type);
894 897
895 static void Generate_InterpreterPushArgsAndConstructImpl( 898 static void Generate_InterpreterPushArgsAndConstructImpl(
896 MacroAssembler* masm, CallableType function_type); 899 MacroAssembler* masm, PushArgsConstructMode mode);
897 900
898 enum class MathMaxMinKind { kMax, kMin }; 901 enum class MathMaxMinKind { kMax, kMin };
899 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); 902 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind);
900 903
901 #define DECLARE_ASM(Name, ...) \ 904 #define DECLARE_ASM(Name, ...) \
902 static void Generate_##Name(MacroAssembler* masm); 905 static void Generate_##Name(MacroAssembler* masm);
903 #define DECLARE_TF(Name, ...) \ 906 #define DECLARE_TF(Name, ...) \
904 static void Generate_##Name(compiler::CodeAssemblerState* state); 907 static void Generate_##Name(compiler::CodeAssemblerState* state);
905 908
906 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF, 909 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF,
(...skipping 10 matching lines...) Expand all
917 920
918 friend class Isolate; 921 friend class Isolate;
919 922
920 DISALLOW_COPY_AND_ASSIGN(Builtins); 923 DISALLOW_COPY_AND_ASSIGN(Builtins);
921 }; 924 };
922 925
923 } // namespace internal 926 } // namespace internal
924 } // namespace v8 927 } // namespace v8
925 928
926 #endif // V8_BUILTINS_BUILTINS_H_ 929 #endif // V8_BUILTINS_BUILTINS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698