OLD | NEW |
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 29 matching lines...) Expand all Loading... |
40 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function). | 40 // TFJ: Builtin in Turbofan, with JS linkage (callable as Javascript function). |
41 // Args: name, arguments count | 41 // Args: name, arguments count |
42 // TFS: Builtin in Turbofan, with CodeStub linkage. | 42 // TFS: Builtin in Turbofan, with CodeStub linkage. |
43 // Args: name, code kind, extra IC state, interface descriptor | 43 // Args: name, code kind, extra IC state, interface descriptor |
44 // ASM: Builtin in platform-dependent assembly. | 44 // ASM: Builtin in platform-dependent assembly. |
45 // Args: name | 45 // Args: name |
46 // ASH: Handlers implemented in platform-dependent assembly. | 46 // ASH: Handlers implemented in platform-dependent assembly. |
47 // Args: name, code kind, extra IC state | 47 // Args: name, code kind, extra IC state |
48 // DBG: Builtin in platform-dependent assembly, used by the debugger. | 48 // DBG: Builtin in platform-dependent assembly, used by the debugger. |
49 // Args: name | 49 // Args: name |
50 #define BUILTIN_LIST(CPP, API, TFJ, TFS, ASM, ASH, DBG) \ | 50 #define BUILTIN_LIST(CPP, API, TFJ, TFS, ASM, ASH, DBG) \ |
51 /* Handlers */ \ | 51 /* Handlers */ \ |
52 ASM(KeyedLoadIC_Miss) \ | 52 ASM(KeyedLoadIC_Miss) \ |
53 ASM(KeyedStoreIC_Miss) \ | 53 ASM(KeyedStoreIC_Miss) \ |
54 ASH(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ | 54 ASH(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ |
55 ASH(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ | 55 ASH(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ |
56 ASH(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ | 56 ASH(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ |
57 ASH(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, kNoExtraICState) \ | 57 ASH(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, kNoExtraICState) \ |
58 ASH(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, \ | 58 ASH(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, \ |
59 StoreICState::kStrictModeState) \ | 59 StoreICState::kStrictModeState) \ |
60 ASH(KeyedLoadIC_Slow, HANDLER, Code::KEYED_LOAD_IC) \ | 60 ASH(KeyedLoadIC_Slow, HANDLER, Code::KEYED_LOAD_IC) \ |
61 ASH(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC) \ | 61 ASH(KeyedStoreIC_Slow, HANDLER, Code::KEYED_STORE_IC) \ |
62 ASH(LoadIC_Normal, HANDLER, Code::LOAD_IC) \ | 62 ASH(LoadIC_Normal, HANDLER, Code::LOAD_IC) \ |
63 ASH(StoreIC_Normal, HANDLER, Code::STORE_IC) \ | 63 ASH(StoreIC_Normal, HANDLER, Code::STORE_IC) \ |
64 TFS(LoadGlobalIC_Miss, BUILTIN, kNoExtraICState, LoadGlobalWithVector) \ | 64 TFS(LoadGlobalIC_Miss, BUILTIN, kNoExtraICState, LoadGlobalWithVector) \ |
65 TFS(LoadGlobalIC_SlowNotInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ | 65 TFS(LoadGlobalIC_SlowNotInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ |
66 LoadGlobalWithVector) \ | 66 LoadGlobalWithVector) \ |
67 TFS(LoadGlobalIC_SlowInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ | 67 TFS(LoadGlobalIC_SlowInsideTypeof, HANDLER, Code::LOAD_GLOBAL_IC, \ |
68 LoadGlobalWithVector) \ | 68 LoadGlobalWithVector) \ |
69 TFS(LoadIC_Miss, BUILTIN, kNoExtraICState, LoadWithVector) \ | 69 TFS(LoadIC_Miss, BUILTIN, kNoExtraICState, LoadWithVector) \ |
70 TFS(LoadIC_Slow, HANDLER, Code::LOAD_IC, LoadWithVector) \ | 70 TFS(LoadIC_Slow, HANDLER, Code::LOAD_IC, LoadWithVector) \ |
71 TFS(StoreIC_Miss, BUILTIN, kNoExtraICState, StoreWithVector) \ | 71 TFS(StoreIC_Miss, BUILTIN, kNoExtraICState, StoreWithVector) \ |
72 TFS(StoreIC_SlowSloppy, HANDLER, Code::STORE_IC, StoreWithVector) \ | 72 TFS(StoreIC_SlowSloppy, HANDLER, Code::STORE_IC, StoreWithVector) \ |
73 TFS(StoreIC_SlowStrict, HANDLER, Code::STORE_IC, StoreWithVector) \ | 73 TFS(StoreIC_SlowStrict, HANDLER, Code::STORE_IC, StoreWithVector) \ |
74 /* Code aging */ \ | 74 \ |
75 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, ASM) \ | 75 /* Code aging */ \ |
76 /* Calls */ \ | 76 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, ASM) \ |
77 ASM(ArgumentsAdaptorTrampoline) \ | 77 \ |
78 ASM(CallFunction_ReceiverIsNullOrUndefined) \ | 78 /* Calls */ \ |
79 ASM(CallFunction_ReceiverIsNotNullOrUndefined) \ | 79 ASM(ArgumentsAdaptorTrampoline) \ |
80 ASM(CallFunction_ReceiverIsAny) \ | 80 /* ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) */ \ |
81 ASM(TailCallFunction_ReceiverIsNullOrUndefined) \ | 81 ASM(CallFunction_ReceiverIsNullOrUndefined) \ |
82 ASM(TailCallFunction_ReceiverIsNotNullOrUndefined) \ | 82 ASM(CallFunction_ReceiverIsNotNullOrUndefined) \ |
83 ASM(TailCallFunction_ReceiverIsAny) \ | 83 ASM(CallFunction_ReceiverIsAny) \ |
84 ASM(CallBoundFunction) \ | 84 ASM(TailCallFunction_ReceiverIsNullOrUndefined) \ |
85 ASM(TailCallBoundFunction) \ | 85 ASM(TailCallFunction_ReceiverIsNotNullOrUndefined) \ |
86 ASM(Call_ReceiverIsNullOrUndefined) \ | 86 ASM(TailCallFunction_ReceiverIsAny) \ |
87 ASM(Call_ReceiverIsNotNullOrUndefined) \ | 87 /* ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) */ \ |
88 ASM(Call_ReceiverIsAny) \ | 88 ASM(CallBoundFunction) \ |
89 ASM(TailCall_ReceiverIsNullOrUndefined) \ | 89 ASM(TailCallBoundFunction) \ |
90 ASM(TailCall_ReceiverIsNotNullOrUndefined) \ | 90 /* ES6 section 7.3.12 Call(F, V, [argumentsList]) */ \ |
91 ASM(TailCall_ReceiverIsAny) \ | 91 ASM(Call_ReceiverIsNullOrUndefined) \ |
92 /* Construct */ \ | 92 ASM(Call_ReceiverIsNotNullOrUndefined) \ |
93 ASM(ConstructFunction) \ | 93 ASM(Call_ReceiverIsAny) \ |
94 ASM(ConstructBoundFunction) \ | 94 ASM(TailCall_ReceiverIsNullOrUndefined) \ |
95 ASM(ConstructedNonConstructable) \ | 95 ASM(TailCall_ReceiverIsNotNullOrUndefined) \ |
96 ASM(ConstructProxy) \ | 96 ASM(TailCall_ReceiverIsAny) \ |
97 ASM(Construct) \ | 97 \ |
98 ASM(JSConstructStubApi) \ | 98 /* Construct */ \ |
99 ASM(JSConstructStubGeneric) \ | 99 /* ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) */ \ |
100 ASM(JSBuiltinsConstructStub) \ | 100 ASM(ConstructFunction) \ |
101 ASM(JSBuiltinsConstructStubForDerived) \ | 101 /* ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) */ \ |
102 /* Apply and entries */ \ | 102 ASM(ConstructBoundFunction) \ |
103 ASM(Apply) \ | 103 ASM(ConstructedNonConstructable) \ |
104 ASM(JSEntryTrampoline) \ | 104 /* ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) */ \ |
105 ASM(JSConstructEntryTrampoline) \ | 105 ASM(ConstructProxy) \ |
106 ASM(ResumeGeneratorTrampoline) \ | 106 /* ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) */ \ |
107 /* Stack and interrupt check */ \ | 107 ASM(Construct) \ |
108 ASM(InterruptCheck) \ | 108 ASM(JSConstructStubApi) \ |
109 ASM(StackCheck) \ | 109 ASM(JSConstructStubGeneric) \ |
110 /* Interpreter */ \ | 110 ASM(JSBuiltinsConstructStub) \ |
111 ASM(InterpreterEntryTrampoline) \ | 111 ASM(JSBuiltinsConstructStubForDerived) \ |
112 ASM(InterpreterMarkBaselineOnReturn) \ | 112 \ |
113 ASM(InterpreterPushArgsAndCallFunction) \ | 113 /* Apply and entries */ \ |
114 ASM(InterpreterPushArgsAndTailCallFunction) \ | 114 ASM(Apply) \ |
115 ASM(InterpreterPushArgsAndCall) \ | 115 ASM(JSEntryTrampoline) \ |
116 ASM(InterpreterPushArgsAndTailCall) \ | 116 ASM(JSConstructEntryTrampoline) \ |
117 ASM(InterpreterPushArgsAndConstruct) \ | 117 ASM(ResumeGeneratorTrampoline) \ |
118 ASM(InterpreterEnterBytecodeDispatch) \ | 118 \ |
119 /* Code life-cycle */ \ | 119 /* Stack and interrupt check */ \ |
120 ASM(CompileLazy) \ | 120 ASM(InterruptCheck) \ |
121 ASM(CompileBaseline) \ | 121 ASM(StackCheck) \ |
122 ASM(CompileOptimized) \ | 122 \ |
123 ASM(CompileOptimizedConcurrent) \ | 123 /* Interpreter */ \ |
124 ASM(InOptimizationQueue) \ | 124 ASM(InterpreterEntryTrampoline) \ |
125 ASM(InstantiateAsmJs) \ | 125 ASM(InterpreterMarkBaselineOnReturn) \ |
126 ASM(MarkCodeAsToBeExecutedOnce) \ | 126 ASM(InterpreterPushArgsAndCallFunction) \ |
127 ASM(MarkCodeAsExecutedOnce) \ | 127 ASM(InterpreterPushArgsAndTailCallFunction) \ |
128 ASM(MarkCodeAsExecutedTwice) \ | 128 ASM(InterpreterPushArgsAndCall) \ |
129 ASM(NotifyDeoptimized) \ | 129 ASM(InterpreterPushArgsAndTailCall) \ |
130 ASM(NotifySoftDeoptimized) \ | 130 ASM(InterpreterPushArgsAndConstruct) \ |
131 ASM(NotifyLazyDeoptimized) \ | 131 ASM(InterpreterEnterBytecodeDispatch) \ |
132 ASM(NotifyStubFailure) \ | 132 \ |
133 ASM(NotifyStubFailureSaveDoubles) \ | 133 /* Code life-cycle */ \ |
134 ASM(OnStackReplacement) \ | 134 ASM(CompileLazy) \ |
135 /* API callback handling */ \ | 135 ASM(CompileBaseline) \ |
136 API(HandleApiCall) \ | 136 ASM(CompileOptimized) \ |
137 API(HandleApiCallAsFunction) \ | 137 ASM(CompileOptimizedConcurrent) \ |
138 API(HandleApiCallAsConstructor) \ | 138 ASM(InOptimizationQueue) \ |
139 ASM(HandleFastApiCall) \ | 139 ASM(InstantiateAsmJs) \ |
140 /* Adapters for Turbofan into runtime */ \ | 140 ASM(MarkCodeAsToBeExecutedOnce) \ |
141 ASM(AllocateInNewSpace) \ | 141 ASM(MarkCodeAsExecutedOnce) \ |
142 ASM(AllocateInOldSpace) \ | 142 ASM(MarkCodeAsExecutedTwice) \ |
143 /* Debugger */ \ | 143 ASM(NotifyDeoptimized) \ |
144 DBG(Return_DebugBreak) \ | 144 ASM(NotifySoftDeoptimized) \ |
145 DBG(Slot_DebugBreak) \ | 145 ASM(NotifyLazyDeoptimized) \ |
146 DBG(FrameDropper_LiveEdit) \ | 146 ASM(NotifyStubFailure) \ |
147 /* Type conversions */ \ | 147 ASM(NotifyStubFailureSaveDoubles) \ |
148 TFS(OrdinaryToPrimitive_Number, BUILTIN, kNoExtraICState, TypeConversion) \ | 148 ASM(OnStackReplacement) \ |
149 TFS(OrdinaryToPrimitive_String, BUILTIN, kNoExtraICState, TypeConversion) \ | 149 \ |
150 TFS(NonPrimitiveToPrimitive_Default, BUILTIN, kNoExtraICState, \ | 150 /* API callback handling */ \ |
151 TypeConversion) \ | 151 API(HandleApiCall) \ |
152 TFS(NonPrimitiveToPrimitive_Number, BUILTIN, kNoExtraICState, \ | 152 API(HandleApiCallAsFunction) \ |
153 TypeConversion) \ | 153 API(HandleApiCallAsConstructor) \ |
154 TFS(NonPrimitiveToPrimitive_String, BUILTIN, kNoExtraICState, \ | 154 ASM(HandleFastApiCall) \ |
155 TypeConversion) \ | 155 \ |
156 ASM(StringToNumber) \ | 156 /* Adapters for Turbofan into runtime */ \ |
157 TFS(NonNumberToNumber, BUILTIN, kNoExtraICState, TypeConversion) \ | 157 ASM(AllocateInNewSpace) \ |
158 ASM(ToNumber) \ | 158 ASM(AllocateInOldSpace) \ |
159 \ | 159 \ |
160 /* Built-in functions for Javascript */ \ | 160 /* Debugger */ \ |
161 /* Special internal builtins */ \ | 161 DBG(Return_DebugBreak) \ |
162 CPP(EmptyFunction) \ | 162 DBG(Slot_DebugBreak) \ |
163 CPP(Illegal) \ | 163 DBG(FrameDropper_LiveEdit) \ |
164 CPP(RestrictedFunctionPropertiesThrower) \ | 164 \ |
165 CPP(RestrictedStrictArgumentsPropertiesThrower) \ | 165 /* Type conversions */ \ |
166 /* Array */ \ | 166 TFS(OrdinaryToPrimitive_Number, BUILTIN, kNoExtraICState, TypeConversion) \ |
167 ASM(ArrayCode) \ | 167 TFS(OrdinaryToPrimitive_String, BUILTIN, kNoExtraICState, TypeConversion) \ |
168 ASM(InternalArrayCode) \ | 168 TFS(NonPrimitiveToPrimitive_Default, BUILTIN, kNoExtraICState, \ |
169 CPP(ArrayConcat) \ | 169 TypeConversion) \ |
170 TFJ(ArrayIsArray, 2) \ | 170 TFS(NonPrimitiveToPrimitive_Number, BUILTIN, kNoExtraICState, \ |
171 CPP(ArrayPop) \ | 171 TypeConversion) \ |
172 CPP(ArrayPush) \ | 172 TFS(NonPrimitiveToPrimitive_String, BUILTIN, kNoExtraICState, \ |
173 CPP(ArrayShift) \ | 173 TypeConversion) \ |
174 CPP(ArraySlice) \ | 174 ASM(StringToNumber) \ |
175 CPP(ArraySplice) \ | 175 TFS(NonNumberToNumber, BUILTIN, kNoExtraICState, TypeConversion) \ |
176 CPP(ArrayUnshift) \ | 176 ASM(ToNumber) \ |
177 /* ArrayBuffer */ \ | 177 \ |
178 CPP(ArrayBufferConstructor) \ | 178 /* Built-in functions for Javascript */ \ |
179 CPP(ArrayBufferConstructor_ConstructStub) \ | 179 /* Special internal builtins */ \ |
180 CPP(ArrayBufferPrototypeGetByteLength) \ | 180 CPP(EmptyFunction) \ |
181 CPP(ArrayBufferIsView) \ | 181 CPP(Illegal) \ |
182 /* Boolean */ \ | 182 CPP(RestrictedFunctionPropertiesThrower) \ |
183 CPP(BooleanConstructor) \ | 183 CPP(RestrictedStrictArgumentsPropertiesThrower) \ |
184 CPP(BooleanConstructor_ConstructStub) \ | 184 \ |
185 TFJ(BooleanPrototypeToString, 1) \ | 185 /* Array */ \ |
186 TFJ(BooleanPrototypeValueOf, 1) \ | 186 ASM(ArrayCode) \ |
187 /* DataView */ \ | 187 ASM(InternalArrayCode) \ |
188 CPP(DataViewConstructor) \ | 188 CPP(ArrayConcat) \ |
189 CPP(DataViewConstructor_ConstructStub) \ | 189 /* ES6 section 22.1.2.2 Array.isArray */ \ |
190 CPP(DataViewPrototypeGetBuffer) \ | 190 TFJ(ArrayIsArray, 2) \ |
191 CPP(DataViewPrototypeGetByteLength) \ | 191 CPP(ArrayPop) \ |
192 CPP(DataViewPrototypeGetByteOffset) \ | 192 CPP(ArrayPush) \ |
193 /* Date */ \ | 193 CPP(ArrayShift) \ |
194 CPP(DateConstructor) \ | 194 CPP(ArraySlice) \ |
195 CPP(DateConstructor_ConstructStub) \ | 195 CPP(ArraySplice) \ |
196 CPP(DateNow) \ | 196 CPP(ArrayUnshift) \ |
197 CPP(DateParse) \ | 197 \ |
198 CPP(DateUTC) \ | 198 /* ArrayBuffer */ \ |
199 CPP(DatePrototypeSetDate) \ | 199 CPP(ArrayBufferConstructor) \ |
200 CPP(DatePrototypeSetFullYear) \ | 200 CPP(ArrayBufferConstructor_ConstructStub) \ |
201 CPP(DatePrototypeSetHours) \ | 201 CPP(ArrayBufferPrototypeGetByteLength) \ |
202 CPP(DatePrototypeSetMilliseconds) \ | 202 CPP(ArrayBufferIsView) \ |
203 CPP(DatePrototypeSetMinutes) \ | 203 \ |
204 CPP(DatePrototypeSetMonth) \ | 204 /* Boolean */ \ |
205 CPP(DatePrototypeSetSeconds) \ | 205 CPP(BooleanConstructor) \ |
206 CPP(DatePrototypeSetTime) \ | 206 CPP(BooleanConstructor_ConstructStub) \ |
207 CPP(DatePrototypeSetUTCDate) \ | 207 /* ES6 section 19.3.3.2 Boolean.prototype.toString ( ) */ \ |
208 CPP(DatePrototypeSetUTCFullYear) \ | 208 TFJ(BooleanPrototypeToString, 1) \ |
209 CPP(DatePrototypeSetUTCHours) \ | 209 /* ES6 section 19.3.3.3 Boolean.prototype.valueOf ( ) */ \ |
210 CPP(DatePrototypeSetUTCMilliseconds) \ | 210 TFJ(BooleanPrototypeValueOf, 1) \ |
211 CPP(DatePrototypeSetUTCMinutes) \ | 211 \ |
212 CPP(DatePrototypeSetUTCMonth) \ | 212 /* DataView */ \ |
213 CPP(DatePrototypeSetUTCSeconds) \ | 213 CPP(DataViewConstructor) \ |
214 CPP(DatePrototypeToDateString) \ | 214 CPP(DataViewConstructor_ConstructStub) \ |
215 CPP(DatePrototypeToISOString) \ | 215 CPP(DataViewPrototypeGetBuffer) \ |
216 CPP(DatePrototypeToPrimitive) \ | 216 CPP(DataViewPrototypeGetByteLength) \ |
217 CPP(DatePrototypeToUTCString) \ | 217 CPP(DataViewPrototypeGetByteOffset) \ |
218 CPP(DatePrototypeToString) \ | 218 \ |
219 CPP(DatePrototypeToTimeString) \ | 219 /* Date */ \ |
220 CPP(DatePrototypeValueOf) \ | 220 CPP(DateConstructor) \ |
221 ASM(DatePrototypeGetDate) \ | 221 CPP(DateConstructor_ConstructStub) \ |
222 ASM(DatePrototypeGetDay) \ | 222 /* ES6 section 20.3.4.2 Date.prototype.getDate ( ) */ \ |
223 ASM(DatePrototypeGetFullYear) \ | 223 ASM(DatePrototypeGetDate) \ |
224 ASM(DatePrototypeGetHours) \ | 224 /* ES6 section 20.3.4.3 Date.prototype.getDay ( ) */ \ |
225 ASM(DatePrototypeGetMilliseconds) \ | 225 ASM(DatePrototypeGetDay) \ |
226 ASM(DatePrototypeGetMinutes) \ | 226 /* ES6 section 20.3.4.4 Date.prototype.getFullYear ( ) */ \ |
227 ASM(DatePrototypeGetMonth) \ | 227 ASM(DatePrototypeGetFullYear) \ |
228 ASM(DatePrototypeGetSeconds) \ | 228 /* ES6 section 20.3.4.5 Date.prototype.getHours ( ) */ \ |
229 ASM(DatePrototypeGetTime) \ | 229 ASM(DatePrototypeGetHours) \ |
230 ASM(DatePrototypeGetTimezoneOffset) \ | 230 /* ES6 section 20.3.4.6 Date.prototype.getMilliseconds ( ) */ \ |
231 ASM(DatePrototypeGetUTCDate) \ | 231 ASM(DatePrototypeGetMilliseconds) \ |
232 ASM(DatePrototypeGetUTCDay) \ | 232 /* ES6 section 20.3.4.7 Date.prototype.getMinutes ( ) */ \ |
233 ASM(DatePrototypeGetUTCFullYear) \ | 233 ASM(DatePrototypeGetMinutes) \ |
234 ASM(DatePrototypeGetUTCHours) \ | 234 /* ES6 section 20.3.4.8 Date.prototype.getMonth */ \ |
235 ASM(DatePrototypeGetUTCMilliseconds) \ | 235 ASM(DatePrototypeGetMonth) \ |
236 ASM(DatePrototypeGetUTCMinutes) \ | 236 /* ES6 section 20.3.4.9 Date.prototype.getSeconds ( ) */ \ |
237 ASM(DatePrototypeGetUTCMonth) \ | 237 ASM(DatePrototypeGetSeconds) \ |
238 ASM(DatePrototypeGetUTCSeconds) \ | 238 /* ES6 section 20.3.4.10 Date.prototype.getTime ( ) */ \ |
239 CPP(DatePrototypeGetYear) \ | 239 ASM(DatePrototypeGetTime) \ |
240 CPP(DatePrototypeSetYear) \ | 240 /* ES6 section 20.3.4.11 Date.prototype.getTimezoneOffset ( ) */ \ |
241 CPP(DatePrototypeToJson) \ | 241 ASM(DatePrototypeGetTimezoneOffset) \ |
242 /* Function */ \ | 242 /* ES6 section 20.3.4.12 Date.prototype.getUTCDate ( ) */ \ |
243 CPP(FunctionConstructor) \ | 243 ASM(DatePrototypeGetUTCDate) \ |
244 ASM(FunctionPrototypeApply) \ | 244 /* ES6 section 20.3.4.13 Date.prototype.getUTCDay ( ) */ \ |
245 CPP(FunctionPrototypeBind) \ | 245 ASM(DatePrototypeGetUTCDay) \ |
246 ASM(FunctionPrototypeCall) \ | 246 /* ES6 section 20.3.4.14 Date.prototype.getUTCFullYear ( ) */ \ |
247 TFJ(FunctionPrototypeHasInstance, 2) \ | 247 ASM(DatePrototypeGetUTCFullYear) \ |
248 CPP(FunctionPrototypeToString) \ | 248 /* ES6 section 20.3.4.15 Date.prototype.getUTCHours ( ) */ \ |
249 /* Generator and Async */ \ | 249 ASM(DatePrototypeGetUTCHours) \ |
250 CPP(GeneratorFunctionConstructor) \ | 250 /* ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) */ \ |
251 TFJ(GeneratorPrototypeNext, 2) \ | 251 ASM(DatePrototypeGetUTCMilliseconds) \ |
252 TFJ(GeneratorPrototypeReturn, 2) \ | 252 /* ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) */ \ |
253 TFJ(GeneratorPrototypeThrow, 2) \ | 253 ASM(DatePrototypeGetUTCMinutes) \ |
254 CPP(AsyncFunctionConstructor) \ | 254 /* ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) */ \ |
255 /* Encode and decode */ \ | 255 ASM(DatePrototypeGetUTCMonth) \ |
256 CPP(GlobalDecodeURI) \ | 256 /* ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) */ \ |
257 CPP(GlobalDecodeURIComponent) \ | 257 ASM(DatePrototypeGetUTCSeconds) \ |
258 CPP(GlobalEncodeURI) \ | 258 CPP(DatePrototypeGetYear) \ |
259 CPP(GlobalEncodeURIComponent) \ | 259 CPP(DatePrototypeSetYear) \ |
260 CPP(GlobalEscape) \ | 260 CPP(DateNow) \ |
261 CPP(GlobalUnescape) \ | 261 CPP(DateParse) \ |
262 /* Eval */ \ | 262 CPP(DatePrototypeSetDate) \ |
263 CPP(GlobalEval) \ | 263 CPP(DatePrototypeSetFullYear) \ |
264 /* JSON */ \ | 264 CPP(DatePrototypeSetHours) \ |
265 CPP(JsonParse) \ | 265 CPP(DatePrototypeSetMilliseconds) \ |
266 CPP(JsonStringify) \ | 266 CPP(DatePrototypeSetMinutes) \ |
267 /* Math */ \ | 267 CPP(DatePrototypeSetMonth) \ |
268 TFJ(MathAcos, 2) \ | 268 CPP(DatePrototypeSetSeconds) \ |
269 TFJ(MathAcosh, 2) \ | 269 CPP(DatePrototypeSetTime) \ |
270 TFJ(MathAsin, 2) \ | 270 CPP(DatePrototypeSetUTCDate) \ |
271 TFJ(MathAsinh, 2) \ | 271 CPP(DatePrototypeSetUTCFullYear) \ |
272 TFJ(MathAtan, 2) \ | 272 CPP(DatePrototypeSetUTCHours) \ |
273 TFJ(MathAtanh, 2) \ | 273 CPP(DatePrototypeSetUTCMilliseconds) \ |
274 TFJ(MathAtan2, 3) \ | 274 CPP(DatePrototypeSetUTCMinutes) \ |
275 TFJ(MathCeil, 2) \ | 275 CPP(DatePrototypeSetUTCMonth) \ |
276 TFJ(MathCbrt, 2) \ | 276 CPP(DatePrototypeSetUTCSeconds) \ |
277 TFJ(MathAbs, 2) \ | 277 CPP(DatePrototypeToDateString) \ |
278 TFJ(MathExpm1, 2) \ | 278 CPP(DatePrototypeToISOString) \ |
279 TFJ(MathClz32, 2) \ | 279 CPP(DatePrototypeToPrimitive) \ |
280 TFJ(MathCos, 2) \ | 280 CPP(DatePrototypeToUTCString) \ |
281 TFJ(MathCosh, 2) \ | 281 CPP(DatePrototypeToString) \ |
282 TFJ(MathExp, 2) \ | 282 CPP(DatePrototypeToTimeString) \ |
283 TFJ(MathFloor, 2) \ | 283 CPP(DatePrototypeValueOf) \ |
284 TFJ(MathFround, 2) \ | 284 CPP(DatePrototypeToJson) \ |
285 CPP(MathHypot) \ | 285 CPP(DateUTC) \ |
286 TFJ(MathImul, 3) \ | 286 \ |
287 TFJ(MathLog, 2) \ | 287 /* Function */ \ |
288 TFJ(MathLog1p, 2) \ | 288 CPP(FunctionConstructor) \ |
289 TFJ(MathLog10, 2) \ | 289 ASM(FunctionPrototypeApply) \ |
290 TFJ(MathLog2, 2) \ | 290 CPP(FunctionPrototypeBind) \ |
291 ASM(MathMax) \ | 291 ASM(FunctionPrototypeCall) \ |
292 ASM(MathMin) \ | 292 /* ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V ) */ \ |
293 TFJ(MathRound, 2) \ | 293 TFJ(FunctionPrototypeHasInstance, 2) \ |
294 TFJ(MathPow, 3) \ | 294 CPP(FunctionPrototypeToString) \ |
295 TFJ(MathSign, 2) \ | 295 \ |
296 TFJ(MathSin, 2) \ | 296 /* Generator and Async */ \ |
297 TFJ(MathSinh, 2) \ | 297 CPP(GeneratorFunctionConstructor) \ |
298 TFJ(MathTan, 2) \ | 298 /* ES6 section 25.3.1.2 Generator.prototype.next ( value ) */ \ |
299 TFJ(MathTanh, 2) \ | 299 TFJ(GeneratorPrototypeNext, 2) \ |
300 TFJ(MathSqrt, 2) \ | 300 /* ES6 section 25.3.1.3 Generator.prototype.return ( value ) */ \ |
301 TFJ(MathTrunc, 2) \ | 301 TFJ(GeneratorPrototypeReturn, 2) \ |
302 /* Number */ \ | 302 /* ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) */ \ |
303 ASM(NumberConstructor) \ | 303 TFJ(GeneratorPrototypeThrow, 2) \ |
304 ASM(NumberConstructor_ConstructStub) \ | 304 CPP(AsyncFunctionConstructor) \ |
305 CPP(NumberPrototypeToExponential) \ | 305 \ |
306 CPP(NumberPrototypeToFixed) \ | 306 /* Encode and decode */ \ |
307 CPP(NumberPrototypeToLocaleString) \ | 307 CPP(GlobalDecodeURI) \ |
308 CPP(NumberPrototypeToPrecision) \ | 308 CPP(GlobalDecodeURIComponent) \ |
309 CPP(NumberPrototypeToString) \ | 309 CPP(GlobalEncodeURI) \ |
310 TFJ(NumberPrototypeValueOf, 1) \ | 310 CPP(GlobalEncodeURIComponent) \ |
311 /* Object */ \ | 311 CPP(GlobalEscape) \ |
312 CPP(ObjectAssign) \ | 312 CPP(GlobalUnescape) \ |
313 CPP(ObjectCreate) \ | 313 \ |
314 CPP(ObjectDefineGetter) \ | 314 /* Eval */ \ |
315 CPP(ObjectDefineProperties) \ | 315 CPP(GlobalEval) \ |
316 CPP(ObjectDefineProperty) \ | 316 \ |
317 CPP(ObjectDefineSetter) \ | 317 /* JSON */ \ |
318 CPP(ObjectEntries) \ | 318 CPP(JsonParse) \ |
319 CPP(ObjectFreeze) \ | 319 CPP(JsonStringify) \ |
320 CPP(ObjectGetOwnPropertyDescriptor) \ | 320 \ |
321 CPP(ObjectGetOwnPropertyDescriptors) \ | 321 /* Math */ \ |
322 CPP(ObjectGetOwnPropertyNames) \ | 322 /* ES6 section 20.2.2.1 Math.abs ( x ) */ \ |
323 CPP(ObjectGetOwnPropertySymbols) \ | 323 TFJ(MathAbs, 2) \ |
324 CPP(ObjectGetPrototypeOf) \ | 324 /* ES6 section 20.2.2.2 Math.acos ( x ) */ \ |
325 TFJ(ObjectHasOwnProperty, 2) \ | 325 TFJ(MathAcos, 2) \ |
326 CPP(ObjectIs) \ | 326 /* ES6 section 20.2.2.3 Math.acosh ( x ) */ \ |
327 CPP(ObjectIsExtensible) \ | 327 TFJ(MathAcosh, 2) \ |
328 CPP(ObjectIsFrozen) \ | 328 /* ES6 section 20.2.2.4 Math.asin ( x ) */ \ |
329 CPP(ObjectIsSealed) \ | 329 TFJ(MathAsin, 2) \ |
330 CPP(ObjectKeys) \ | 330 /* ES6 section 20.2.2.5 Math.asinh ( x ) */ \ |
331 CPP(ObjectLookupGetter) \ | 331 TFJ(MathAsinh, 2) \ |
332 CPP(ObjectLookupSetter) \ | 332 /* ES6 section 20.2.2.6 Math.atan ( x ) */ \ |
333 CPP(ObjectPreventExtensions) \ | 333 TFJ(MathAtan, 2) \ |
334 TFJ(ObjectProtoToString, 1) \ | 334 /* ES6 section 20.2.2.7 Math.atanh ( x ) */ \ |
335 CPP(ObjectPrototypePropertyIsEnumerable) \ | 335 TFJ(MathAtanh, 2) \ |
336 CPP(ObjectSeal) \ | 336 /* ES6 section 20.2.2.8 Math.atan2 ( y, x ) */ \ |
337 CPP(ObjectValues) \ | 337 TFJ(MathAtan2, 3) \ |
338 /* Proxy */ \ | 338 /* ES6 section 20.2.2.9 Math.cbrt ( x ) */ \ |
339 CPP(ProxyConstructor) \ | 339 TFJ(MathCbrt, 2) \ |
340 CPP(ProxyConstructor_ConstructStub) \ | 340 /* ES6 section 20.2.2.10 Math.ceil ( x ) */ \ |
341 /* Reflect */ \ | 341 TFJ(MathCeil, 2) \ |
342 ASM(ReflectApply) \ | 342 /* ES6 section 20.2.2.11 Math.clz32 ( x ) */ \ |
343 ASM(ReflectConstruct) \ | 343 TFJ(MathClz32, 2) \ |
344 CPP(ReflectDefineProperty) \ | 344 /* ES6 section 20.2.2.12 Math.cos ( x ) */ \ |
345 CPP(ReflectDeleteProperty) \ | 345 TFJ(MathCos, 2) \ |
346 CPP(ReflectGet) \ | 346 /* ES6 section 20.2.2.13 Math.cosh ( x ) */ \ |
347 CPP(ReflectGetOwnPropertyDescriptor) \ | 347 TFJ(MathCosh, 2) \ |
348 CPP(ReflectGetPrototypeOf) \ | 348 /* ES6 section 20.2.2.14 Math.exp ( x ) */ \ |
349 CPP(ReflectHas) \ | 349 TFJ(MathExp, 2) \ |
350 CPP(ReflectIsExtensible) \ | 350 /* ES6 section 20.2.2.15 Math.expm1 ( x ) */ \ |
351 CPP(ReflectOwnKeys) \ | 351 TFJ(MathExpm1, 2) \ |
352 CPP(ReflectPreventExtensions) \ | 352 /* ES6 section 20.2.2.16 Math.floor ( x ) */ \ |
353 CPP(ReflectSet) \ | 353 TFJ(MathFloor, 2) \ |
354 CPP(ReflectSetPrototypeOf) \ | 354 /* ES6 section 20.2.2.17 Math.fround ( x ) */ \ |
355 /* SharedArrayBuffer */ \ | 355 TFJ(MathFround, 2) \ |
356 CPP(SharedArrayBufferPrototypeGetByteLength) \ | 356 /* ES6 section 20.2.2.18 Math.hypot ( value1, value2, ...values ) */ \ |
357 TFJ(AtomicsLoad, 3) \ | 357 CPP(MathHypot) \ |
358 TFJ(AtomicsStore, 4) \ | 358 /* ES6 section 20.2.2.19 Math.imul ( x, y ) */ \ |
359 /* String */ \ | 359 TFJ(MathImul, 3) \ |
360 ASM(StringConstructor) \ | 360 /* ES6 section 20.2.2.20 Math.log ( x ) */ \ |
361 ASM(StringConstructor_ConstructStub) \ | 361 TFJ(MathLog, 2) \ |
362 CPP(StringFromCodePoint) \ | 362 /* ES6 section 20.2.2.21 Math.log1p ( x ) */ \ |
363 TFJ(StringFromCharCode, 2) \ | 363 TFJ(MathLog1p, 2) \ |
364 TFJ(StringPrototypeCharAt, 2) \ | 364 /* ES6 section 20.2.2.22 Math.log10 ( x ) */ \ |
365 TFJ(StringPrototypeCharCodeAt, 2) \ | 365 TFJ(MathLog10, 2) \ |
366 TFJ(StringPrototypeToString, 1) \ | 366 /* ES6 section 20.2.2.23 Math.log2 ( x ) */ \ |
367 CPP(StringPrototypeTrim) \ | 367 TFJ(MathLog2, 2) \ |
368 CPP(StringPrototypeTrimLeft) \ | 368 /* ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) */ \ |
369 CPP(StringPrototypeTrimRight) \ | 369 ASM(MathMax) \ |
370 TFJ(StringPrototypeValueOf, 1) \ | 370 /* ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) */ \ |
371 /* Symbol */ \ | 371 ASM(MathMin) \ |
372 CPP(SymbolConstructor) \ | 372 /* ES6 section 20.2.2.26 Math.pow ( x, y ) */ \ |
373 CPP(SymbolConstructor_ConstructStub) \ | 373 TFJ(MathPow, 3) \ |
374 TFJ(SymbolPrototypeToPrimitive, 2) \ | 374 /* ES6 section 20.2.2.28 Math.round ( x ) */ \ |
375 TFJ(SymbolPrototypeToString, 1) \ | 375 TFJ(MathRound, 2) \ |
376 TFJ(SymbolPrototypeValueOf, 1) \ | 376 /* ES6 section 20.2.2.29 Math.sign ( x ) */ \ |
377 /* TypedArray */ \ | 377 TFJ(MathSign, 2) \ |
378 CPP(TypedArrayPrototypeBuffer) \ | 378 /* ES6 section 20.2.2.30 Math.sin ( x ) */ \ |
379 TFJ(TypedArrayPrototypeByteLength, 1) \ | 379 TFJ(MathSin, 2) \ |
380 TFJ(TypedArrayPrototypeByteOffset, 1) \ | 380 /* ES6 section 20.2.2.31 Math.sinh ( x ) */ \ |
| 381 TFJ(MathSinh, 2) \ |
| 382 /* ES6 section 20.2.2.32 Math.sqrt ( x ) */ \ |
| 383 TFJ(MathTan, 2) \ |
| 384 /* ES6 section 20.2.2.33 Math.tan ( x ) */ \ |
| 385 TFJ(MathTanh, 2) \ |
| 386 /* ES6 section 20.2.2.34 Math.tanh ( x ) */ \ |
| 387 TFJ(MathSqrt, 2) \ |
| 388 /* ES6 section 20.2.2.35 Math.trunc ( x ) */ \ |
| 389 TFJ(MathTrunc, 2) \ |
| 390 \ |
| 391 /* Number */ \ |
| 392 /* ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case */ \ |
| 393 ASM(NumberConstructor) \ |
| 394 /* ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case */ \ |
| 395 ASM(NumberConstructor_ConstructStub) \ |
| 396 CPP(NumberPrototypeToExponential) \ |
| 397 CPP(NumberPrototypeToFixed) \ |
| 398 CPP(NumberPrototypeToLocaleString) \ |
| 399 CPP(NumberPrototypeToPrecision) \ |
| 400 CPP(NumberPrototypeToString) \ |
| 401 /* ES6 section 20.1.3.7 Number.prototype.valueOf ( ) */ \ |
| 402 TFJ(NumberPrototypeValueOf, 1) \ |
| 403 /* Object */ \ |
| 404 CPP(ObjectAssign) \ |
| 405 CPP(ObjectCreate) \ |
| 406 CPP(ObjectDefineGetter) \ |
| 407 CPP(ObjectDefineProperties) \ |
| 408 CPP(ObjectDefineProperty) \ |
| 409 CPP(ObjectDefineSetter) \ |
| 410 CPP(ObjectEntries) \ |
| 411 CPP(ObjectFreeze) \ |
| 412 CPP(ObjectGetOwnPropertyDescriptor) \ |
| 413 CPP(ObjectGetOwnPropertyDescriptors) \ |
| 414 CPP(ObjectGetOwnPropertyNames) \ |
| 415 CPP(ObjectGetOwnPropertySymbols) \ |
| 416 CPP(ObjectGetPrototypeOf) \ |
| 417 /* ES6 section 19.1.3.2 Object.prototype.hasOwnProperty */ \ |
| 418 TFJ(ObjectHasOwnProperty, 2) \ |
| 419 CPP(ObjectIs) \ |
| 420 CPP(ObjectIsExtensible) \ |
| 421 CPP(ObjectIsFrozen) \ |
| 422 CPP(ObjectIsSealed) \ |
| 423 CPP(ObjectKeys) \ |
| 424 CPP(ObjectLookupGetter) \ |
| 425 CPP(ObjectLookupSetter) \ |
| 426 CPP(ObjectPreventExtensions) \ |
| 427 /* ES6 section 19.1.3.6 Object.prototype.toString () */ \ |
| 428 TFJ(ObjectProtoToString, 1) \ |
| 429 CPP(ObjectPrototypePropertyIsEnumerable) \ |
| 430 CPP(ObjectSeal) \ |
| 431 CPP(ObjectValues) \ |
| 432 \ |
| 433 /* Proxy */ \ |
| 434 CPP(ProxyConstructor) \ |
| 435 CPP(ProxyConstructor_ConstructStub) \ |
| 436 \ |
| 437 /* Reflect */ \ |
| 438 ASM(ReflectApply) \ |
| 439 ASM(ReflectConstruct) \ |
| 440 CPP(ReflectDefineProperty) \ |
| 441 CPP(ReflectDeleteProperty) \ |
| 442 CPP(ReflectGet) \ |
| 443 CPP(ReflectGetOwnPropertyDescriptor) \ |
| 444 CPP(ReflectGetPrototypeOf) \ |
| 445 CPP(ReflectHas) \ |
| 446 CPP(ReflectIsExtensible) \ |
| 447 CPP(ReflectOwnKeys) \ |
| 448 CPP(ReflectPreventExtensions) \ |
| 449 CPP(ReflectSet) \ |
| 450 CPP(ReflectSetPrototypeOf) \ |
| 451 \ |
| 452 /* SharedArrayBuffer */ \ |
| 453 CPP(SharedArrayBufferPrototypeGetByteLength) \ |
| 454 TFJ(AtomicsLoad, 3) \ |
| 455 TFJ(AtomicsStore, 4) \ |
| 456 \ |
| 457 /* String */ \ |
| 458 ASM(StringConstructor) \ |
| 459 ASM(StringConstructor_ConstructStub) \ |
| 460 CPP(StringFromCodePoint) \ |
| 461 /* ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) */ \ |
| 462 TFJ(StringFromCharCode, 2) \ |
| 463 /* ES6 section 21.1.3.1 String.prototype.charAt ( pos ) */ \ |
| 464 TFJ(StringPrototypeCharAt, 2) \ |
| 465 /* ES6 section 21.1.3.2 String.prototype.charCodeAt ( pos ) */ \ |
| 466 TFJ(StringPrototypeCharCodeAt, 2) \ |
| 467 /* ES6 section 21.1.3.25 String.prototype.toString () */ \ |
| 468 TFJ(StringPrototypeToString, 1) \ |
| 469 CPP(StringPrototypeTrim) \ |
| 470 CPP(StringPrototypeTrimLeft) \ |
| 471 CPP(StringPrototypeTrimRight) \ |
| 472 /* ES6 section 21.1.3.28 String.prototype.valueOf () */ \ |
| 473 TFJ(StringPrototypeValueOf, 1) \ |
| 474 \ |
| 475 /* Symbol */ \ |
| 476 CPP(SymbolConstructor) \ |
| 477 CPP(SymbolConstructor_ConstructStub) \ |
| 478 /* ES6 section 19.4.3.4 Symbol.prototype [ @@toPrimitive ] ( hint ) */ \ |
| 479 TFJ(SymbolPrototypeToPrimitive, 2) \ |
| 480 /* ES6 section 19.4.3.2 Symbol.prototype.toString ( ) */ \ |
| 481 TFJ(SymbolPrototypeToString, 1) \ |
| 482 /* ES6 section 19.4.3.3 Symbol.prototype.valueOf ( ) */ \ |
| 483 TFJ(SymbolPrototypeValueOf, 1) \ |
| 484 \ |
| 485 /* TypedArray */ \ |
| 486 CPP(TypedArrayPrototypeBuffer) \ |
| 487 /* ES6 section 22.2.3.2 get %TypedArray%.prototype.byteLength */ \ |
| 488 TFJ(TypedArrayPrototypeByteLength, 1) \ |
| 489 /* ES6 section 22.2.3.3 get %TypedArray%.prototype.byteOffset */ \ |
| 490 TFJ(TypedArrayPrototypeByteOffset, 1) \ |
| 491 /* ES6 section 22.2.3.18 get %TypedArray%.prototype.length */ \ |
381 TFJ(TypedArrayPrototypeLength, 1) | 492 TFJ(TypedArrayPrototypeLength, 1) |
382 | 493 |
383 #define IGNORE_BUILTIN(...) | 494 #define IGNORE_BUILTIN(...) |
384 | 495 |
385 #define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V) | 496 #define BUILTIN_LIST_ALL(V) BUILTIN_LIST(V, V, V, V, V, V, V) |
386 | 497 |
387 #define BUILTIN_LIST_C(V) \ | 498 #define BUILTIN_LIST_C(V) \ |
388 BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ | 499 BUILTIN_LIST(V, V, IGNORE_BUILTIN, IGNORE_BUILTIN, IGNORE_BUILTIN, \ |
389 IGNORE_BUILTIN, IGNORE_BUILTIN) | 500 IGNORE_BUILTIN, IGNORE_BUILTIN) |
390 | 501 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 int argc, Handle<Object> args[]); | 570 int argc, Handle<Object> args[]); |
460 | 571 |
461 enum ExitFrameType { EXIT, BUILTIN_EXIT }; | 572 enum ExitFrameType { EXIT, BUILTIN_EXIT }; |
462 | 573 |
463 static void Generate_Adaptor(MacroAssembler* masm, Address builtin_address, | 574 static void Generate_Adaptor(MacroAssembler* masm, Address builtin_address, |
464 ExitFrameType exit_frame_type); | 575 ExitFrameType exit_frame_type); |
465 | 576 |
466 private: | 577 private: |
467 Builtins(); | 578 Builtins(); |
468 | 579 |
469 static void Generate_AllocateInNewSpace(MacroAssembler* masm); | |
470 static void Generate_AllocateInOldSpace(MacroAssembler* masm); | |
471 static void Generate_ConstructedNonConstructable(MacroAssembler* masm); | |
472 static void Generate_InstantiateAsmJs(MacroAssembler* masm); | |
473 static void Generate_CompileLazy(MacroAssembler* masm); | |
474 static void Generate_CompileBaseline(MacroAssembler* masm); | |
475 static void Generate_InOptimizationQueue(MacroAssembler* masm); | |
476 static void Generate_CompileOptimized(MacroAssembler* masm); | |
477 static void Generate_CompileOptimizedConcurrent(MacroAssembler* masm); | |
478 static void Generate_JSConstructStubGeneric(MacroAssembler* masm); | |
479 static void Generate_JSBuiltinsConstructStub(MacroAssembler* masm); | |
480 static void Generate_JSBuiltinsConstructStubForDerived(MacroAssembler* masm); | |
481 static void Generate_JSConstructStubApi(MacroAssembler* masm); | |
482 static void Generate_JSEntryTrampoline(MacroAssembler* masm); | |
483 static void Generate_JSConstructEntryTrampoline(MacroAssembler* masm); | |
484 static void Generate_ResumeGeneratorTrampoline(MacroAssembler* masm); | |
485 static void Generate_NotifyDeoptimized(MacroAssembler* masm); | |
486 static void Generate_NotifySoftDeoptimized(MacroAssembler* masm); | |
487 static void Generate_NotifyLazyDeoptimized(MacroAssembler* masm); | |
488 static void Generate_NotifyStubFailure(MacroAssembler* masm); | |
489 static void Generate_NotifyStubFailureSaveDoubles(MacroAssembler* masm); | |
490 static void Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm); | |
491 static void Generate_StringToNumber(MacroAssembler* masm); | |
492 static void Generate_ToNumber(MacroAssembler* masm); | |
493 | |
494 static void Generate_Apply(MacroAssembler* masm); | |
495 | |
496 // ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) | |
497 static void Generate_CallFunction(MacroAssembler* masm, | 580 static void Generate_CallFunction(MacroAssembler* masm, |
498 ConvertReceiverMode mode, | 581 ConvertReceiverMode mode, |
499 TailCallMode tail_call_mode); | 582 TailCallMode tail_call_mode); |
500 static void Generate_CallFunction_ReceiverIsNullOrUndefined( | 583 |
501 MacroAssembler* masm) { | |
502 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, | |
503 TailCallMode::kDisallow); | |
504 } | |
505 static void Generate_CallFunction_ReceiverIsNotNullOrUndefined( | |
506 MacroAssembler* masm) { | |
507 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
508 TailCallMode::kDisallow); | |
509 } | |
510 static void Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) { | |
511 Generate_CallFunction(masm, ConvertReceiverMode::kAny, | |
512 TailCallMode::kDisallow); | |
513 } | |
514 static void Generate_TailCallFunction_ReceiverIsNullOrUndefined( | |
515 MacroAssembler* masm) { | |
516 Generate_CallFunction(masm, ConvertReceiverMode::kNullOrUndefined, | |
517 TailCallMode::kAllow); | |
518 } | |
519 static void Generate_TailCallFunction_ReceiverIsNotNullOrUndefined( | |
520 MacroAssembler* masm) { | |
521 Generate_CallFunction(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
522 TailCallMode::kAllow); | |
523 } | |
524 static void Generate_TailCallFunction_ReceiverIsAny(MacroAssembler* masm) { | |
525 Generate_CallFunction(masm, ConvertReceiverMode::kAny, | |
526 TailCallMode::kAllow); | |
527 } | |
528 // ES6 section 9.4.1.1 [[Call]] ( thisArgument, argumentsList) | |
529 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm, | 584 static void Generate_CallBoundFunctionImpl(MacroAssembler* masm, |
530 TailCallMode tail_call_mode); | 585 TailCallMode tail_call_mode); |
531 static void Generate_CallBoundFunction(MacroAssembler* masm) { | 586 |
532 Generate_CallBoundFunctionImpl(masm, TailCallMode::kDisallow); | |
533 } | |
534 static void Generate_TailCallBoundFunction(MacroAssembler* masm) { | |
535 Generate_CallBoundFunctionImpl(masm, TailCallMode::kAllow); | |
536 } | |
537 // ES6 section 7.3.12 Call(F, V, [argumentsList]) | |
538 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, | 587 static void Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode, |
539 TailCallMode tail_call_mode); | 588 TailCallMode tail_call_mode); |
540 static void Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) { | |
541 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, | |
542 TailCallMode::kDisallow); | |
543 } | |
544 static void Generate_Call_ReceiverIsNotNullOrUndefined(MacroAssembler* masm) { | |
545 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
546 TailCallMode::kDisallow); | |
547 } | |
548 static void Generate_Call_ReceiverIsAny(MacroAssembler* masm) { | |
549 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kDisallow); | |
550 } | |
551 static void Generate_TailCall_ReceiverIsNullOrUndefined( | |
552 MacroAssembler* masm) { | |
553 Generate_Call(masm, ConvertReceiverMode::kNullOrUndefined, | |
554 TailCallMode::kAllow); | |
555 } | |
556 static void Generate_TailCall_ReceiverIsNotNullOrUndefined( | |
557 MacroAssembler* masm) { | |
558 Generate_Call(masm, ConvertReceiverMode::kNotNullOrUndefined, | |
559 TailCallMode::kAllow); | |
560 } | |
561 static void Generate_TailCall_ReceiverIsAny(MacroAssembler* masm) { | |
562 Generate_Call(masm, ConvertReceiverMode::kAny, TailCallMode::kAllow); | |
563 } | |
564 | 589 |
565 // ES6 section 9.2.2 [[Construct]] ( argumentsList, newTarget) | 590 static void Generate_InterpreterPushArgsAndCallImpl( |
566 static void Generate_ConstructFunction(MacroAssembler* masm); | 591 MacroAssembler* masm, TailCallMode tail_call_mode, |
567 // ES6 section 9.4.1.2 [[Construct]] (argumentsList, newTarget) | 592 CallableType function_type); |
568 static void Generate_ConstructBoundFunction(MacroAssembler* masm); | |
569 // ES6 section 9.5.14 [[Construct]] ( argumentsList, newTarget) | |
570 static void Generate_ConstructProxy(MacroAssembler* masm); | |
571 // ES6 section 7.3.13 Construct (F, [argumentsList], [newTarget]) | |
572 static void Generate_Construct(MacroAssembler* masm); | |
573 | |
574 static void Generate_HandleFastApiCall(MacroAssembler* masm); | |
575 | |
576 // ES6 section 19.3.3.2 Boolean.prototype.toString ( ) | |
577 static void Generate_BooleanPrototypeToString(CodeStubAssembler* assembler); | |
578 // ES6 section 19.3.3.3 Boolean.prototype.valueOf ( ) | |
579 static void Generate_BooleanPrototypeValueOf(CodeStubAssembler* assembler); | |
580 | 593 |
581 static void Generate_DatePrototype_GetField(MacroAssembler* masm, | 594 static void Generate_DatePrototype_GetField(MacroAssembler* masm, |
582 int field_index); | 595 int field_index); |
583 // ES6 section 20.3.4.2 Date.prototype.getDate ( ) | |
584 static void Generate_DatePrototypeGetDate(MacroAssembler* masm); | |
585 // ES6 section 20.3.4.3 Date.prototype.getDay ( ) | |
586 static void Generate_DatePrototypeGetDay(MacroAssembler* masm); | |
587 // ES6 section 20.3.4.4 Date.prototype.getFullYear ( ) | |
588 static void Generate_DatePrototypeGetFullYear(MacroAssembler* masm); | |
589 // ES6 section 20.3.4.5 Date.prototype.getHours ( ) | |
590 static void Generate_DatePrototypeGetHours(MacroAssembler* masm); | |
591 // ES6 section 20.3.4.6 Date.prototype.getMilliseconds ( ) | |
592 static void Generate_DatePrototypeGetMilliseconds(MacroAssembler* masm); | |
593 // ES6 section 20.3.4.7 Date.prototype.getMinutes ( ) | |
594 static void Generate_DatePrototypeGetMinutes(MacroAssembler* masm); | |
595 // ES6 section 20.3.4.8 Date.prototype.getMonth ( ) | |
596 static void Generate_DatePrototypeGetMonth(MacroAssembler* masm); | |
597 // ES6 section 20.3.4.9 Date.prototype.getSeconds ( ) | |
598 static void Generate_DatePrototypeGetSeconds(MacroAssembler* masm); | |
599 // ES6 section 20.3.4.10 Date.prototype.getTime ( ) | |
600 static void Generate_DatePrototypeGetTime(MacroAssembler* masm); | |
601 // ES6 section 20.3.4.11 Date.prototype.getTimezoneOffset ( ) | |
602 static void Generate_DatePrototypeGetTimezoneOffset(MacroAssembler* masm); | |
603 // ES6 section 20.3.4.12 Date.prototype.getUTCDate ( ) | |
604 static void Generate_DatePrototypeGetUTCDate(MacroAssembler* masm); | |
605 // ES6 section 20.3.4.13 Date.prototype.getUTCDay ( ) | |
606 static void Generate_DatePrototypeGetUTCDay(MacroAssembler* masm); | |
607 // ES6 section 20.3.4.14 Date.prototype.getUTCFullYear ( ) | |
608 static void Generate_DatePrototypeGetUTCFullYear(MacroAssembler* masm); | |
609 // ES6 section 20.3.4.15 Date.prototype.getUTCHours ( ) | |
610 static void Generate_DatePrototypeGetUTCHours(MacroAssembler* masm); | |
611 // ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) | |
612 static void Generate_DatePrototypeGetUTCMilliseconds(MacroAssembler* masm); | |
613 // ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) | |
614 static void Generate_DatePrototypeGetUTCMinutes(MacroAssembler* masm); | |
615 // ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) | |
616 static void Generate_DatePrototypeGetUTCMonth(MacroAssembler* masm); | |
617 // ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) | |
618 static void Generate_DatePrototypeGetUTCSeconds(MacroAssembler* masm); | |
619 | |
620 static void Generate_FunctionPrototypeApply(MacroAssembler* masm); | |
621 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); | |
622 | |
623 static void Generate_ReflectApply(MacroAssembler* masm); | |
624 static void Generate_ReflectConstruct(MacroAssembler* masm); | |
625 | |
626 static void Generate_InternalArrayCode(MacroAssembler* masm); | |
627 static void Generate_ArrayCode(MacroAssembler* masm); | |
628 | |
629 // ES6 section 20.2.2.1 Math.abs ( x ) | |
630 static void Generate_MathAbs(CodeStubAssembler* assembler); | |
631 // ES6 section 20.2.2.2 Math.acos ( x ) | |
632 static void Generate_MathAcos(CodeStubAssembler* assembler); | |
633 // ES6 section 20.2.2.3 Math.acosh ( x ) | |
634 static void Generate_MathAcosh(CodeStubAssembler* assembler); | |
635 // ES6 section 20.2.2.4 Math.asin ( x ) | |
636 static void Generate_MathAsin(CodeStubAssembler* assembler); | |
637 // ES6 section 20.2.2.5 Math.asinh ( x ) | |
638 static void Generate_MathAsinh(CodeStubAssembler* assembler); | |
639 // ES6 section 20.2.2.6 Math.atan ( x ) | |
640 static void Generate_MathAtan(CodeStubAssembler* assembler); | |
641 // ES6 section 20.2.2.7 Math.atanh ( x ) | |
642 static void Generate_MathAtanh(CodeStubAssembler* assembler); | |
643 // ES6 section 20.2.2.8 Math.atan2 ( y, x ) | |
644 static void Generate_MathAtan2(CodeStubAssembler* assembler); | |
645 // ES6 section 20.2.2.10 Math.ceil ( x ) | |
646 static void Generate_MathCeil(CodeStubAssembler* assembler); | |
647 // ES6 section 20.2.2.9 Math.ceil ( x ) | |
648 static void Generate_MathCbrt(CodeStubAssembler* assembler); | |
649 // ES6 section 20.2.2.15 Math.expm1 ( x ) | |
650 static void Generate_MathExpm1(CodeStubAssembler* assembler); | |
651 // ES6 section 20.2.2.11 Math.clz32 ( x ) | |
652 static void Generate_MathClz32(CodeStubAssembler* assembler); | |
653 // ES6 section 20.2.2.12 Math.cos ( x ) | |
654 static void Generate_MathCos(CodeStubAssembler* assembler); | |
655 // ES6 section 20.2.2.13 Math.cosh ( x ) | |
656 static void Generate_MathCosh(CodeStubAssembler* assembler); | |
657 // ES6 section 20.2.2.14 Math.exp ( x ) | |
658 static void Generate_MathExp(CodeStubAssembler* assembler); | |
659 // ES6 section 20.2.2.16 Math.floor ( x ) | |
660 static void Generate_MathFloor(CodeStubAssembler* assembler); | |
661 // ES6 section 20.2.2.17 Math.fround ( x ) | |
662 static void Generate_MathFround(CodeStubAssembler* assembler); | |
663 // ES6 section 20.2.2.20 Math.imul ( x, y ) | |
664 static void Generate_MathImul(CodeStubAssembler* assembler); | |
665 // ES6 section 20.2.2.20 Math.log ( x ) | |
666 static void Generate_MathLog(CodeStubAssembler* assembler); | |
667 // ES6 section 20.2.2.21 Math.log ( x ) | |
668 static void Generate_MathLog1p(CodeStubAssembler* assembler); | |
669 | |
670 static void Generate_MathLog2(CodeStubAssembler* assembler); | |
671 static void Generate_MathLog10(CodeStubAssembler* assembler); | |
672 | 596 |
673 enum class MathMaxMinKind { kMax, kMin }; | 597 enum class MathMaxMinKind { kMax, kMin }; |
674 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); | 598 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); |
675 // ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) | |
676 static void Generate_MathMax(MacroAssembler* masm) { | |
677 Generate_MathMaxMin(masm, MathMaxMinKind::kMax); | |
678 } | |
679 // ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) | |
680 static void Generate_MathMin(MacroAssembler* masm) { | |
681 Generate_MathMaxMin(masm, MathMaxMinKind::kMin); | |
682 } | |
683 // ES6 section 20.2.2.26 Math.pow ( x, y ) | |
684 static void Generate_MathPow(CodeStubAssembler* assembler); | |
685 // ES6 section 20.2.2.28 Math.round ( x ) | |
686 static void Generate_MathRound(CodeStubAssembler* assembler); | |
687 // ES6 section 20.2.2.29 Math.sign ( x ) | |
688 static void Generate_MathSign(CodeStubAssembler* assembler); | |
689 // ES6 section 20.2.2.30 Math.sin ( x ) | |
690 static void Generate_MathSin(CodeStubAssembler* assembler); | |
691 // ES6 section 20.2.2.31 Math.sinh ( x ) | |
692 static void Generate_MathSinh(CodeStubAssembler* assembler); | |
693 // ES6 section 20.2.2.32 Math.sqrt ( x ) | |
694 static void Generate_MathSqrt(CodeStubAssembler* assembler); | |
695 // ES6 section 20.2.2.33 Math.tan ( x ) | |
696 static void Generate_MathTan(CodeStubAssembler* assembler); | |
697 // ES6 section 20.2.2.34 Math.tanh ( x ) | |
698 static void Generate_MathTanh(CodeStubAssembler* assembler); | |
699 // ES6 section 20.2.2.35 Math.trunc ( x ) | |
700 static void Generate_MathTrunc(CodeStubAssembler* assembler); | |
701 | 599 |
702 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case. | 600 #define DECLARE_ASM(Name, ...) \ |
703 static void Generate_NumberConstructor(MacroAssembler* masm); | 601 static void Generate_##Name(MacroAssembler* masm); |
704 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case. | 602 #define DECLARE_TF(Name, ...) \ |
705 static void Generate_NumberConstructor_ConstructStub(MacroAssembler* masm); | 603 static void Generate_##Name(CodeStubAssembler* csasm); |
706 // ES6 section 20.1.3.7 Number.prototype.valueOf ( ) | |
707 static void Generate_NumberPrototypeValueOf(CodeStubAssembler* assembler); | |
708 | 604 |
709 // ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V ) | 605 BUILTIN_LIST(IGNORE_BUILTIN, IGNORE_BUILTIN, DECLARE_TF, DECLARE_TF, |
710 static void Generate_FunctionPrototypeHasInstance( | 606 DECLARE_ASM, DECLARE_ASM, DECLARE_ASM) |
711 CodeStubAssembler* assembler); | |
712 | 607 |
713 // ES6 section 25.3.1.2 Generator.prototype.next ( value ) | 608 #undef DECLARE_ASM |
714 static void Generate_GeneratorPrototypeNext(CodeStubAssembler* assembler); | 609 #undef DECLARE_TF |
715 // ES6 section 25.3.1.3 Generator.prototype.return ( value ) | |
716 static void Generate_GeneratorPrototypeReturn(CodeStubAssembler* assembler); | |
717 // ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) | |
718 static void Generate_GeneratorPrototypeThrow(CodeStubAssembler* assembler); | |
719 | |
720 // ES6 section 19.1.3.2 Object.prototype.hasOwnProperty | |
721 static void Generate_ObjectHasOwnProperty(CodeStubAssembler* assembler); | |
722 | |
723 // ES6 section 19.1.3.6 Object.prototype.toString () | |
724 static void Generate_ObjectProtoToString(CodeStubAssembler* assembler); | |
725 | |
726 // ES6 section 22.1.2.2 Array.isArray | |
727 static void Generate_ArrayIsArray(CodeStubAssembler* assembler); | |
728 | |
729 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) | |
730 static void Generate_StringFromCharCode(CodeStubAssembler* assembler); | |
731 // ES6 section 21.1.3.1 String.prototype.charAt ( pos ) | |
732 static void Generate_StringPrototypeCharAt(CodeStubAssembler* assembler); | |
733 // ES6 section 21.1.3.2 String.prototype.charCodeAt ( pos ) | |
734 static void Generate_StringPrototypeCharCodeAt(CodeStubAssembler* assembler); | |
735 // ES6 section 21.1.3.25 String.prototype.toString () | |
736 static void Generate_StringPrototypeToString(CodeStubAssembler* assembler); | |
737 // ES6 section 21.1.3.28 String.prototype.valueOf () | |
738 static void Generate_StringPrototypeValueOf(CodeStubAssembler* assembler); | |
739 | |
740 static void Generate_StringConstructor(MacroAssembler* masm); | |
741 static void Generate_StringConstructor_ConstructStub(MacroAssembler* masm); | |
742 | |
743 // ES6 section 19.4.3.4 Symbol.prototype [ @@toPrimitive ] ( hint ) | |
744 static void Generate_SymbolPrototypeToPrimitive(CodeStubAssembler* assembler); | |
745 // ES6 section 19.4.3.2 Symbol.prototype.toString ( ) | |
746 static void Generate_SymbolPrototypeToString(CodeStubAssembler* assembler); | |
747 // ES6 section 19.4.3.3 Symbol.prototype.valueOf ( ) | |
748 static void Generate_SymbolPrototypeValueOf(CodeStubAssembler* assembler); | |
749 | |
750 // ES6 section 22.2.3.2 get %TypedArray%.prototype.byteLength | |
751 static void Generate_TypedArrayPrototypeByteLength( | |
752 CodeStubAssembler* assembler); | |
753 // ES6 section 22.2.3.3 get %TypedArray%.prototype.byteOffset | |
754 static void Generate_TypedArrayPrototypeByteOffset( | |
755 CodeStubAssembler* assembler); | |
756 // ES6 section 22.2.3.18 get %TypedArray%.prototype.length | |
757 static void Generate_TypedArrayPrototypeLength(CodeStubAssembler* assembler); | |
758 | |
759 static void Generate_OnStackReplacement(MacroAssembler* masm); | |
760 static void Generate_InterruptCheck(MacroAssembler* masm); | |
761 static void Generate_StackCheck(MacroAssembler* masm); | |
762 | |
763 static void Generate_InterpreterEntryTrampoline(MacroAssembler* masm); | |
764 static void Generate_InterpreterEnterBytecodeDispatch(MacroAssembler* masm); | |
765 static void Generate_InterpreterMarkBaselineOnReturn(MacroAssembler* masm); | |
766 static void Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { | |
767 return Generate_InterpreterPushArgsAndCallImpl( | |
768 masm, TailCallMode::kDisallow, CallableType::kAny); | |
769 } | |
770 static void Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { | |
771 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, | |
772 CallableType::kAny); | |
773 } | |
774 static void Generate_InterpreterPushArgsAndCallFunction( | |
775 MacroAssembler* masm) { | |
776 return Generate_InterpreterPushArgsAndCallImpl( | |
777 masm, TailCallMode::kDisallow, CallableType::kJSFunction); | |
778 } | |
779 static void Generate_InterpreterPushArgsAndTailCallFunction( | |
780 MacroAssembler* masm) { | |
781 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow, | |
782 CallableType::kJSFunction); | |
783 } | |
784 static void Generate_InterpreterPushArgsAndCallImpl( | |
785 MacroAssembler* masm, TailCallMode tail_call_mode, | |
786 CallableType function_type); | |
787 static void Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm); | |
788 | |
789 #define DECLARE_CODE_AGE_BUILTIN_GENERATOR(C) \ | |
790 static void Generate_Make##C##CodeYoungAgainEvenMarking( \ | |
791 MacroAssembler* masm); \ | |
792 static void Generate_Make##C##CodeYoungAgainOddMarking(MacroAssembler* masm); | |
793 CODE_AGE_LIST(DECLARE_CODE_AGE_BUILTIN_GENERATOR) | |
794 #undef DECLARE_CODE_AGE_BUILTIN_GENERATOR | |
795 | |
796 static void Generate_MarkCodeAsToBeExecutedOnce(MacroAssembler* masm); | |
797 static void Generate_MarkCodeAsExecutedOnce(MacroAssembler* masm); | |
798 static void Generate_MarkCodeAsExecutedTwice(MacroAssembler* masm); | |
799 | |
800 static void Generate_AtomicsLoad(CodeStubAssembler* assembler); | |
801 static void Generate_AtomicsStore(CodeStubAssembler* assembler); | |
802 | 610 |
803 // Note: These are always Code objects, but to conform with | 611 // Note: These are always Code objects, but to conform with |
804 // IterateBuiltins() above which assumes Object**'s for the callback | 612 // IterateBuiltins() above which assumes Object**'s for the callback |
805 // function f, we use an Object* array here. | 613 // function f, we use an Object* array here. |
806 Object* builtins_[builtin_count]; | 614 Object* builtins_[builtin_count]; |
807 bool initialized_; | 615 bool initialized_; |
808 | 616 |
809 friend class Isolate; | 617 friend class Isolate; |
810 | 618 |
811 DISALLOW_COPY_AND_ASSIGN(Builtins); | 619 DISALLOW_COPY_AND_ASSIGN(Builtins); |
812 }; | 620 }; |
813 | 621 |
814 } // namespace internal | 622 } // namespace internal |
815 } // namespace v8 | 623 } // namespace v8 |
816 | 624 |
817 #endif // V8_BUILTINS_BUILTINS_H_ | 625 #endif // V8_BUILTINS_BUILTINS_H_ |
OLD | NEW |