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

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

Issue 2649143002: [Turbofan] Implement call with spread bytecode in assembly code. (Closed)
Patch Set: Rename PushArgsMode to InterpreterPushArgsMode 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
« no previous file with comments | « src/builtins/arm64/builtins-arm64.cc ('k') | src/builtins/builtins-interpreter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \ 67 /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \
68 ASM(CallBoundFunction) \ 68 ASM(CallBoundFunction) \
69 ASM(TailCallBoundFunction) \ 69 ASM(TailCallBoundFunction) \
70 /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \ 70 /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \
71 ASM(Call_ReceiverIsNullOrUndefined) \ 71 ASM(Call_ReceiverIsNullOrUndefined) \
72 ASM(Call_ReceiverIsNotNullOrUndefined) \ 72 ASM(Call_ReceiverIsNotNullOrUndefined) \
73 ASM(Call_ReceiverIsAny) \ 73 ASM(Call_ReceiverIsAny) \
74 ASM(TailCall_ReceiverIsNullOrUndefined) \ 74 ASM(TailCall_ReceiverIsNullOrUndefined) \
75 ASM(TailCall_ReceiverIsNotNullOrUndefined) \ 75 ASM(TailCall_ReceiverIsNotNullOrUndefined) \
76 ASM(TailCall_ReceiverIsAny) \ 76 ASM(TailCall_ReceiverIsAny) \
77 ASM(CallWithSpread) \
77 \ 78 \
78 /* Construct */ \ 79 /* Construct */ \
79 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \ 80 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \
80 ASM(ConstructFunction) \ 81 ASM(ConstructFunction) \
81 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \ 82 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \
82 ASM(ConstructBoundFunction) \ 83 ASM(ConstructBoundFunction) \
83 ASM(ConstructedNonConstructable) \ 84 ASM(ConstructedNonConstructable) \
84 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \ 85 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \
85 ASM(ConstructProxy) \ 86 ASM(ConstructProxy) \
86 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \ 87 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 TFS(StringLessThanOrEqual, BUILTIN, kNoExtraICState, Compare) \ 133 TFS(StringLessThanOrEqual, BUILTIN, kNoExtraICState, Compare) \
133 TFS(StringGreaterThan, BUILTIN, kNoExtraICState, Compare) \ 134 TFS(StringGreaterThan, BUILTIN, kNoExtraICState, Compare) \
134 TFS(StringGreaterThanOrEqual, BUILTIN, kNoExtraICState, Compare) \ 135 TFS(StringGreaterThanOrEqual, BUILTIN, kNoExtraICState, Compare) \
135 TFS(StringCharAt, BUILTIN, kNoExtraICState, StringCharAt) \ 136 TFS(StringCharAt, BUILTIN, kNoExtraICState, StringCharAt) \
136 TFS(StringCharCodeAt, BUILTIN, kNoExtraICState, StringCharCodeAt) \ 137 TFS(StringCharCodeAt, BUILTIN, kNoExtraICState, StringCharCodeAt) \
137 \ 138 \
138 /* Interpreter */ \ 139 /* Interpreter */ \
139 ASM(InterpreterEntryTrampoline) \ 140 ASM(InterpreterEntryTrampoline) \
140 ASM(InterpreterPushArgsAndCall) \ 141 ASM(InterpreterPushArgsAndCall) \
141 ASM(InterpreterPushArgsAndCallFunction) \ 142 ASM(InterpreterPushArgsAndCallFunction) \
143 ASM(InterpreterPushArgsAndCallWithFinalSpread) \
142 ASM(InterpreterPushArgsAndTailCall) \ 144 ASM(InterpreterPushArgsAndTailCall) \
143 ASM(InterpreterPushArgsAndTailCallFunction) \ 145 ASM(InterpreterPushArgsAndTailCallFunction) \
144 ASM(InterpreterPushArgsAndConstruct) \ 146 ASM(InterpreterPushArgsAndConstruct) \
145 ASM(InterpreterPushArgsAndConstructFunction) \ 147 ASM(InterpreterPushArgsAndConstructFunction) \
146 ASM(InterpreterPushArgsAndConstructArray) \ 148 ASM(InterpreterPushArgsAndConstructArray) \
147 ASM(InterpreterPushArgsAndConstructWithFinalSpread) \ 149 ASM(InterpreterPushArgsAndConstructWithFinalSpread) \
148 ASM(InterpreterEnterBytecodeAdvance) \ 150 ASM(InterpreterEnterBytecodeAdvance) \
149 ASM(InterpreterEnterBytecodeDispatch) \ 151 ASM(InterpreterEnterBytecodeDispatch) \
150 ASM(InterpreterOnStackReplacement) \ 152 ASM(InterpreterOnStackReplacement) \
151 \ 153 \
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 #define BUILTIN_LIST_A(V) \ 800 #define BUILTIN_LIST_A(V) \
799 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ 801 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
800 V, V, V) 802 V, V, V)
801 803
802 #define BUILTIN_LIST_DBG(V) \ 804 #define BUILTIN_LIST_DBG(V) \
803 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ 805 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \
804 IGNORE_BUILTIN, IGNORE_BUILTIN, V) 806 IGNORE_BUILTIN, IGNORE_BUILTIN, V)
805 807
806 // Forward declarations. 808 // Forward declarations.
807 class ObjectVisitor; 809 class ObjectVisitor;
808 enum class PushArgsConstructMode : unsigned; 810 enum class InterpreterPushArgsMode : unsigned;
809 namespace compiler { 811 namespace compiler {
810 class CodeAssemblerState; 812 class CodeAssemblerState;
811 } 813 }
812 814
813 class Builtins { 815 class Builtins {
814 public: 816 public:
815 ~Builtins(); 817 ~Builtins();
816 818
817 // Generate all builtin code objects. Should be called once during 819 // Generate all builtin code objects. Should be called once during
818 // isolate initialization. 820 // isolate initialization.
(...skipping 21 matching lines...) Expand all
840 // Convenience wrappers. 842 // Convenience wrappers.
841 Handle<Code> CallFunction( 843 Handle<Code> CallFunction(
842 ConvertReceiverMode = ConvertReceiverMode::kAny, 844 ConvertReceiverMode = ConvertReceiverMode::kAny,
843 TailCallMode tail_call_mode = TailCallMode::kDisallow); 845 TailCallMode tail_call_mode = TailCallMode::kDisallow);
844 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny, 846 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny,
845 TailCallMode tail_call_mode = TailCallMode::kDisallow); 847 TailCallMode tail_call_mode = TailCallMode::kDisallow);
846 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode); 848 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode);
847 Handle<Code> NonPrimitiveToPrimitive( 849 Handle<Code> NonPrimitiveToPrimitive(
848 ToPrimitiveHint hint = ToPrimitiveHint::kDefault); 850 ToPrimitiveHint hint = ToPrimitiveHint::kDefault);
849 Handle<Code> OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint); 851 Handle<Code> OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint);
850 Handle<Code> InterpreterPushArgsAndCall( 852 Handle<Code> InterpreterPushArgsAndCall(TailCallMode tail_call_mode,
851 TailCallMode tail_call_mode, 853 InterpreterPushArgsMode mode);
852 CallableType function_type = CallableType::kAny); 854 Handle<Code> InterpreterPushArgsAndConstruct(InterpreterPushArgsMode mode);
853 Handle<Code> InterpreterPushArgsAndConstruct(PushArgsConstructMode mode);
854 Handle<Code> NewFunctionContext(ScopeType scope_type); 855 Handle<Code> NewFunctionContext(ScopeType scope_type);
855 Handle<Code> NewCloneShallowArray(AllocationSiteMode allocation_mode); 856 Handle<Code> NewCloneShallowArray(AllocationSiteMode allocation_mode);
856 Handle<Code> NewCloneShallowObject(int length); 857 Handle<Code> NewCloneShallowObject(int length);
857 858
858 Code* builtin(Name name) { 859 Code* builtin(Name name) {
859 // Code::cast cannot be used here since we access builtins 860 // Code::cast cannot be used here since we access builtins
860 // during the marking phase of mark sweep. See IC::Clear. 861 // during the marking phase of mark sweep. See IC::Clear.
861 return reinterpret_cast<Code*>(builtins_[name]); 862 return reinterpret_cast<Code*>(builtins_[name]);
862 } 863 }
863 864
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 TailCallMode tail_call_mode); 899 TailCallMode tail_call_mode);
899 900
900 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm, 901 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm,
901 TailCallMode tail_call_mode); 902 TailCallMode tail_call_mode);
902 903
903 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, 904 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode,
904 TailCallMode tail_call_mode); 905 TailCallMode tail_call_mode);
905 906
906 static void Generate_InterpreterPushArgsAndCallImpl( 907 static void Generate_InterpreterPushArgsAndCallImpl(
907 MacroAssembler* masm, TailCallMode tail_call_mode, 908 MacroAssembler* masm, TailCallMode tail_call_mode,
908 CallableType function_type); 909 InterpreterPushArgsMode mode);
909 910
910 static void Generate_InterpreterPushArgsAndConstructImpl( 911 static void Generate_InterpreterPushArgsAndConstructImpl(
911 MacroAssembler* masm, PushArgsConstructMode mode); 912 MacroAssembler* masm, InterpreterPushArgsMode mode);
912 913
913 enum class MathMaxMinKind { kMax, kMin }; 914 enum class MathMaxMinKind { kMax, kMin };
914 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); 915 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind);
915 916
916 #define DECLARE_ASM(Name, ...) \ 917 #define DECLARE_ASM(Name, ...) \
917 static void Generate_##Name(MacroAssembler* masm); 918 static void Generate_##Name(MacroAssembler* masm);
918 #define DECLARE_TF(Name, ...) \ 919 #define DECLARE_TF(Name, ...) \
919 static void Generate_##Name(compiler::CodeAssemblerState* state); 920 static void Generate_##Name(compiler::CodeAssemblerState* state);
920 921
921 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF, 922 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF,
(...skipping 10 matching lines...) Expand all
932 933
933 friend class Isolate; 934 friend class Isolate;
934 935
935 DISALLOW_COPY_AND_ASSIGN(Builtins); 936 DISALLOW_COPY_AND_ASSIGN(Builtins);
936 }; 937 };
937 938
938 } // namespace internal 939 } // namespace internal
939 } // namespace v8 940 } // namespace v8
940 941
941 #endif // V8_BUILTINS_BUILTINS_H_ 942 #endif // V8_BUILTINS_BUILTINS_H_
OLDNEW
« no previous file with comments | « src/builtins/arm64/builtins-arm64.cc ('k') | src/builtins/builtins-interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698