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_H_ | 5 #ifndef V8_BUILTINS_H_ |
6 #define V8_BUILTINS_H_ | 6 #define V8_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 28 matching lines...) Expand all Loading... |
39 #define CODE_AGE_LIST(V) \ | 39 #define CODE_AGE_LIST(V) \ |
40 CODE_AGE_LIST_WITH_ARG(CODE_AGE_LIST_IGNORE_ARG, V) | 40 CODE_AGE_LIST_WITH_ARG(CODE_AGE_LIST_IGNORE_ARG, V) |
41 | 41 |
42 #define CODE_AGE_LIST_COMPLETE(V) \ | 42 #define CODE_AGE_LIST_COMPLETE(V) \ |
43 V(ToBeExecutedOnce) \ | 43 V(ToBeExecutedOnce) \ |
44 V(NotExecuted) \ | 44 V(NotExecuted) \ |
45 V(ExecutedOnce) \ | 45 V(ExecutedOnce) \ |
46 V(NoAge) \ | 46 V(NoAge) \ |
47 CODE_AGE_LIST_WITH_ARG(CODE_AGE_LIST_IGNORE_ARG, V) | 47 CODE_AGE_LIST_WITH_ARG(CODE_AGE_LIST_IGNORE_ARG, V) |
48 | 48 |
49 #define DECLARE_CODE_AGE_BUILTIN(C, V) \ | 49 #define DECLARE_CODE_AGE_BUILTIN(C, V) \ |
50 V(Make##C##CodeYoungAgainOddMarking, BUILTIN, \ | 50 V(Make##C##CodeYoungAgainOddMarking, BUILTIN, kNoExtraICState) \ |
51 UNINITIALIZED, kNoExtraICState) \ | 51 V(Make##C##CodeYoungAgainEvenMarking, BUILTIN, kNoExtraICState) |
52 V(Make##C##CodeYoungAgainEvenMarking, BUILTIN, \ | |
53 UNINITIALIZED, kNoExtraICState) | |
54 | |
55 | 52 |
56 // Define list of builtins implemented in C++. | 53 // Define list of builtins implemented in C++. |
57 #define BUILTIN_LIST_C(V) \ | 54 #define BUILTIN_LIST_C(V) \ |
58 V(Illegal, kNone) \ | 55 V(Illegal, kNone) \ |
59 \ | 56 \ |
60 V(EmptyFunction, kNone) \ | 57 V(EmptyFunction, kNone) \ |
61 \ | 58 \ |
62 V(ArrayConcat, kNone) \ | 59 V(ArrayConcat, kNone) \ |
63 V(ArrayPop, kNone) \ | 60 V(ArrayPop, kNone) \ |
64 V(ArrayPush, kNone) \ | 61 V(ArrayPush, kNone) \ |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 V(TypedArrayPrototypeBuffer, kNone) \ | 185 V(TypedArrayPrototypeBuffer, kNone) \ |
189 \ | 186 \ |
190 V(HandleApiCall, kTargetAndNewTarget) \ | 187 V(HandleApiCall, kTargetAndNewTarget) \ |
191 V(HandleApiCallAsFunction, kNone) \ | 188 V(HandleApiCallAsFunction, kNone) \ |
192 V(HandleApiCallAsConstructor, kNone) \ | 189 V(HandleApiCallAsConstructor, kNone) \ |
193 \ | 190 \ |
194 V(RestrictedFunctionPropertiesThrower, kNone) \ | 191 V(RestrictedFunctionPropertiesThrower, kNone) \ |
195 V(RestrictedStrictArgumentsPropertiesThrower, kNone) | 192 V(RestrictedStrictArgumentsPropertiesThrower, kNone) |
196 | 193 |
197 // Define list of builtins implemented in assembly. | 194 // Define list of builtins implemented in assembly. |
198 #define BUILTIN_LIST_A(V) \ | 195 #define BUILTIN_LIST_A(V) \ |
199 V(AllocateInNewSpace, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 196 V(AllocateInNewSpace, BUILTIN, kNoExtraICState) \ |
200 V(AllocateInOldSpace, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 197 V(AllocateInOldSpace, BUILTIN, kNoExtraICState) \ |
201 \ | 198 \ |
202 V(ArgumentsAdaptorTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 199 V(ArgumentsAdaptorTrampoline, BUILTIN, kNoExtraICState) \ |
203 \ | 200 \ |
204 V(ConstructedNonConstructable, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 201 V(ConstructedNonConstructable, BUILTIN, kNoExtraICState) \ |
205 \ | 202 \ |
206 V(CallFunction_ReceiverIsNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 203 V(CallFunction_ReceiverIsNullOrUndefined, BUILTIN, kNoExtraICState) \ |
207 kNoExtraICState) \ | 204 V(CallFunction_ReceiverIsNotNullOrUndefined, BUILTIN, kNoExtraICState) \ |
208 V(CallFunction_ReceiverIsNotNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 205 V(CallFunction_ReceiverIsAny, BUILTIN, kNoExtraICState) \ |
209 kNoExtraICState) \ | 206 V(TailCallFunction_ReceiverIsNullOrUndefined, BUILTIN, kNoExtraICState) \ |
210 V(CallFunction_ReceiverIsAny, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 207 V(TailCallFunction_ReceiverIsNotNullOrUndefined, BUILTIN, kNoExtraICState) \ |
211 V(TailCallFunction_ReceiverIsNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 208 V(TailCallFunction_ReceiverIsAny, BUILTIN, kNoExtraICState) \ |
212 kNoExtraICState) \ | 209 V(CallBoundFunction, BUILTIN, kNoExtraICState) \ |
213 V(TailCallFunction_ReceiverIsNotNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 210 V(TailCallBoundFunction, BUILTIN, kNoExtraICState) \ |
214 kNoExtraICState) \ | 211 V(Call_ReceiverIsNullOrUndefined, BUILTIN, kNoExtraICState) \ |
215 V(TailCallFunction_ReceiverIsAny, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 212 V(Call_ReceiverIsNotNullOrUndefined, BUILTIN, kNoExtraICState) \ |
216 V(CallBoundFunction, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 213 V(Call_ReceiverIsAny, BUILTIN, kNoExtraICState) \ |
217 V(TailCallBoundFunction, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 214 V(TailCall_ReceiverIsNullOrUndefined, BUILTIN, kNoExtraICState) \ |
218 V(Call_ReceiverIsNullOrUndefined, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 215 V(TailCall_ReceiverIsNotNullOrUndefined, BUILTIN, kNoExtraICState) \ |
219 V(Call_ReceiverIsNotNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 216 V(TailCall_ReceiverIsAny, BUILTIN, kNoExtraICState) \ |
220 kNoExtraICState) \ | 217 \ |
221 V(Call_ReceiverIsAny, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 218 V(ConstructFunction, BUILTIN, kNoExtraICState) \ |
222 V(TailCall_ReceiverIsNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 219 V(ConstructBoundFunction, BUILTIN, kNoExtraICState) \ |
223 kNoExtraICState) \ | 220 V(ConstructProxy, BUILTIN, kNoExtraICState) \ |
224 V(TailCall_ReceiverIsNotNullOrUndefined, BUILTIN, UNINITIALIZED, \ | 221 V(Construct, BUILTIN, kNoExtraICState) \ |
225 kNoExtraICState) \ | 222 \ |
226 V(TailCall_ReceiverIsAny, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 223 V(StringToNumber, BUILTIN, kNoExtraICState) \ |
227 \ | 224 \ |
228 V(ConstructFunction, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 225 V(Apply, BUILTIN, kNoExtraICState) \ |
229 V(ConstructBoundFunction, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 226 \ |
230 V(ConstructProxy, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 227 V(HandleFastApiCall, BUILTIN, kNoExtraICState) \ |
231 V(Construct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 228 \ |
232 \ | 229 V(InOptimizationQueue, BUILTIN, kNoExtraICState) \ |
233 V(StringToNumber, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 230 V(JSConstructStubGeneric, BUILTIN, kNoExtraICState) \ |
234 \ | 231 V(JSBuiltinsConstructStub, BUILTIN, kNoExtraICState) \ |
235 V(Apply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 232 V(JSBuiltinsConstructStubForDerived, BUILTIN, kNoExtraICState) \ |
236 \ | 233 V(JSConstructStubApi, BUILTIN, kNoExtraICState) \ |
237 V(HandleFastApiCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 234 V(JSEntryTrampoline, BUILTIN, kNoExtraICState) \ |
238 \ | 235 V(JSConstructEntryTrampoline, BUILTIN, kNoExtraICState) \ |
239 V(InOptimizationQueue, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 236 V(ResumeGeneratorTrampoline, BUILTIN, kNoExtraICState) \ |
240 V(JSConstructStubGeneric, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 237 V(CompileLazy, BUILTIN, kNoExtraICState) \ |
241 V(JSBuiltinsConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 238 V(CompileBaseline, BUILTIN, kNoExtraICState) \ |
242 V(JSBuiltinsConstructStubForDerived, BUILTIN, UNINITIALIZED, \ | 239 V(CompileOptimized, BUILTIN, kNoExtraICState) \ |
243 kNoExtraICState) \ | 240 V(CompileOptimizedConcurrent, BUILTIN, kNoExtraICState) \ |
244 V(JSConstructStubApi, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 241 V(NotifyDeoptimized, BUILTIN, kNoExtraICState) \ |
245 V(JSEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 242 V(NotifySoftDeoptimized, BUILTIN, kNoExtraICState) \ |
246 V(JSConstructEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 243 V(NotifyLazyDeoptimized, BUILTIN, kNoExtraICState) \ |
247 V(ResumeGeneratorTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 244 V(NotifyStubFailure, BUILTIN, kNoExtraICState) \ |
248 V(CompileLazy, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 245 V(NotifyStubFailureSaveDoubles, BUILTIN, kNoExtraICState) \ |
249 V(CompileBaseline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 246 \ |
250 V(CompileOptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 247 V(InterpreterEntryTrampoline, BUILTIN, kNoExtraICState) \ |
251 V(CompileOptimizedConcurrent, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 248 V(InterpreterMarkBaselineOnReturn, BUILTIN, kNoExtraICState) \ |
252 V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 249 V(InterpreterPushArgsAndCall, BUILTIN, kNoExtraICState) \ |
253 V(NotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 250 V(InterpreterPushArgsAndTailCall, BUILTIN, kNoExtraICState) \ |
254 V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 251 V(InterpreterPushArgsAndConstruct, BUILTIN, kNoExtraICState) \ |
255 V(NotifyStubFailure, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 252 V(InterpreterEnterBytecodeDispatch, BUILTIN, kNoExtraICState) \ |
256 V(NotifyStubFailureSaveDoubles, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 253 \ |
257 \ | 254 V(LoadIC_Miss, BUILTIN, kNoExtraICState) \ |
258 V(InterpreterEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 255 V(KeyedLoadIC_Miss, BUILTIN, kNoExtraICState) \ |
259 V(InterpreterMarkBaselineOnReturn, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 256 V(StoreIC_Miss, BUILTIN, kNoExtraICState) \ |
260 V(InterpreterPushArgsAndCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 257 V(KeyedStoreIC_Miss, BUILTIN, kNoExtraICState) \ |
261 V(InterpreterPushArgsAndTailCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 258 V(LoadIC_Getter_ForDeopt, LOAD_IC, kNoExtraICState) \ |
262 V(InterpreterPushArgsAndConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 259 V(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, kNoExtraICState) \ |
263 V(InterpreterEnterBytecodeDispatch, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 260 \ |
264 \ | 261 V(StoreIC_Setter_ForDeopt, STORE_IC, StoreICState::kStrictModeState) \ |
265 V(LoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 262 \ |
266 V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 263 V(StoreIC_Megamorphic, STORE_IC, kNoExtraICState) \ |
267 V(StoreIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 264 V(StoreIC_Megamorphic_Strict, STORE_IC, StoreICState::kStrictModeState) \ |
268 V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 265 \ |
269 V(LoadIC_Getter_ForDeopt, LOAD_IC, MONOMORPHIC, kNoExtraICState) \ | 266 V(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, kNoExtraICState) \ |
270 V(KeyedLoadIC_Megamorphic, KEYED_LOAD_IC, MEGAMORPHIC, kNoExtraICState) \ | 267 V(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, \ |
271 \ | 268 StoreICState::kStrictModeState) \ |
272 V(StoreIC_Setter_ForDeopt, STORE_IC, MONOMORPHIC, \ | 269 \ |
273 StoreICState::kStrictModeState) \ | 270 V(DatePrototypeGetDate, BUILTIN, kNoExtraICState) \ |
274 \ | 271 V(DatePrototypeGetDay, BUILTIN, kNoExtraICState) \ |
275 V(StoreIC_Megamorphic, STORE_IC, MEGAMORPHIC, kNoExtraICState) \ | 272 V(DatePrototypeGetFullYear, BUILTIN, kNoExtraICState) \ |
276 V(StoreIC_Megamorphic_Strict, STORE_IC, MEGAMORPHIC, \ | 273 V(DatePrototypeGetHours, BUILTIN, kNoExtraICState) \ |
277 StoreICState::kStrictModeState) \ | 274 V(DatePrototypeGetMilliseconds, BUILTIN, kNoExtraICState) \ |
278 \ | 275 V(DatePrototypeGetMinutes, BUILTIN, kNoExtraICState) \ |
279 V(KeyedStoreIC_Megamorphic, KEYED_STORE_IC, MEGAMORPHIC, kNoExtraICState) \ | 276 V(DatePrototypeGetMonth, BUILTIN, kNoExtraICState) \ |
280 V(KeyedStoreIC_Megamorphic_Strict, KEYED_STORE_IC, MEGAMORPHIC, \ | 277 V(DatePrototypeGetSeconds, BUILTIN, kNoExtraICState) \ |
281 StoreICState::kStrictModeState) \ | 278 V(DatePrototypeGetTime, BUILTIN, kNoExtraICState) \ |
282 \ | 279 V(DatePrototypeGetTimezoneOffset, BUILTIN, kNoExtraICState) \ |
283 V(DatePrototypeGetDate, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 280 V(DatePrototypeGetUTCDate, BUILTIN, kNoExtraICState) \ |
284 V(DatePrototypeGetDay, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 281 V(DatePrototypeGetUTCDay, BUILTIN, kNoExtraICState) \ |
285 V(DatePrototypeGetFullYear, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 282 V(DatePrototypeGetUTCFullYear, BUILTIN, kNoExtraICState) \ |
286 V(DatePrototypeGetHours, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 283 V(DatePrototypeGetUTCHours, BUILTIN, kNoExtraICState) \ |
287 V(DatePrototypeGetMilliseconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 284 V(DatePrototypeGetUTCMilliseconds, BUILTIN, kNoExtraICState) \ |
288 V(DatePrototypeGetMinutes, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 285 V(DatePrototypeGetUTCMinutes, BUILTIN, kNoExtraICState) \ |
289 V(DatePrototypeGetMonth, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 286 V(DatePrototypeGetUTCMonth, BUILTIN, kNoExtraICState) \ |
290 V(DatePrototypeGetSeconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 287 V(DatePrototypeGetUTCSeconds, BUILTIN, kNoExtraICState) \ |
291 V(DatePrototypeGetTime, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 288 \ |
292 V(DatePrototypeGetTimezoneOffset, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 289 V(FunctionPrototypeApply, BUILTIN, kNoExtraICState) \ |
293 V(DatePrototypeGetUTCDate, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 290 V(FunctionPrototypeCall, BUILTIN, kNoExtraICState) \ |
294 V(DatePrototypeGetUTCDay, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 291 \ |
295 V(DatePrototypeGetUTCFullYear, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 292 V(ReflectApply, BUILTIN, kNoExtraICState) \ |
296 V(DatePrototypeGetUTCHours, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 293 V(ReflectConstruct, BUILTIN, kNoExtraICState) \ |
297 V(DatePrototypeGetUTCMilliseconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 294 \ |
298 V(DatePrototypeGetUTCMinutes, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 295 V(InternalArrayCode, BUILTIN, kNoExtraICState) \ |
299 V(DatePrototypeGetUTCMonth, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 296 V(ArrayCode, BUILTIN, kNoExtraICState) \ |
300 V(DatePrototypeGetUTCSeconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 297 \ |
301 \ | 298 V(MathMax, BUILTIN, kNoExtraICState) \ |
302 V(FunctionPrototypeApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 299 V(MathMin, BUILTIN, kNoExtraICState) \ |
303 V(FunctionPrototypeCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 300 \ |
304 \ | 301 V(NumberConstructor, BUILTIN, kNoExtraICState) \ |
305 V(ReflectApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 302 V(NumberConstructor_ConstructStub, BUILTIN, kNoExtraICState) \ |
306 V(ReflectConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 303 \ |
307 \ | 304 V(StringConstructor, BUILTIN, kNoExtraICState) \ |
308 V(InternalArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 305 V(StringConstructor_ConstructStub, BUILTIN, kNoExtraICState) \ |
309 V(ArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 306 \ |
310 \ | 307 V(OnStackReplacement, BUILTIN, kNoExtraICState) \ |
311 V(MathMax, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 308 V(InterruptCheck, BUILTIN, kNoExtraICState) \ |
312 V(MathMin, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 309 V(StackCheck, BUILTIN, kNoExtraICState) \ |
313 \ | 310 \ |
314 V(NumberConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 311 V(MarkCodeAsToBeExecutedOnce, BUILTIN, kNoExtraICState) \ |
315 V(NumberConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 312 V(MarkCodeAsExecutedOnce, BUILTIN, kNoExtraICState) \ |
316 \ | 313 V(MarkCodeAsExecutedTwice, BUILTIN, kNoExtraICState) \ |
317 V(StringConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
318 V(StringConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
319 \ | |
320 V(OnStackReplacement, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
321 V(InterruptCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
322 V(StackCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
323 \ | |
324 V(MarkCodeAsToBeExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
325 V(MarkCodeAsExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
326 V(MarkCodeAsExecutedTwice, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
327 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) | 314 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) |
328 | 315 |
329 // Define list of builtins implemented in TurboFan (with JS linkage). | 316 // Define list of builtins implemented in TurboFan (with JS linkage). |
330 #define BUILTIN_LIST_T(V) \ | 317 #define BUILTIN_LIST_T(V) \ |
331 V(FunctionPrototypeHasInstance, 2) \ | 318 V(FunctionPrototypeHasInstance, 2) \ |
332 V(GeneratorPrototypeNext, 2) \ | 319 V(GeneratorPrototypeNext, 2) \ |
333 V(GeneratorPrototypeReturn, 2) \ | 320 V(GeneratorPrototypeReturn, 2) \ |
334 V(GeneratorPrototypeThrow, 2) \ | 321 V(GeneratorPrototypeThrow, 2) \ |
335 V(MathCeil, 2) \ | 322 V(MathCeil, 2) \ |
336 V(MathClz32, 2) \ | 323 V(MathClz32, 2) \ |
(...skipping 16 matching lines...) Expand all Loading... |
353 // Define list of builtin handlers implemented in assembly. | 340 // Define list of builtin handlers implemented in assembly. |
354 #define BUILTIN_LIST_H(V) \ | 341 #define BUILTIN_LIST_H(V) \ |
355 V(LoadIC_Slow, LOAD_IC) \ | 342 V(LoadIC_Slow, LOAD_IC) \ |
356 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ | 343 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ |
357 V(StoreIC_Slow, STORE_IC) \ | 344 V(StoreIC_Slow, STORE_IC) \ |
358 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ | 345 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ |
359 V(LoadIC_Normal, LOAD_IC) \ | 346 V(LoadIC_Normal, LOAD_IC) \ |
360 V(StoreIC_Normal, STORE_IC) | 347 V(StoreIC_Normal, STORE_IC) |
361 | 348 |
362 // Define list of builtins used by the debugger implemented in assembly. | 349 // Define list of builtins used by the debugger implemented in assembly. |
363 #define BUILTIN_LIST_DEBUG_A(V) \ | 350 #define BUILTIN_LIST_DEBUG_A(V) \ |
364 V(Return_DebugBreak, BUILTIN, DEBUG_STUB, kNoExtraICState) \ | 351 V(Return_DebugBreak, DEBUG_STUB, kNoExtraICState) \ |
365 V(Slot_DebugBreak, BUILTIN, DEBUG_STUB, kNoExtraICState) \ | 352 V(Slot_DebugBreak, DEBUG_STUB, kNoExtraICState) \ |
366 V(FrameDropper_LiveEdit, BUILTIN, DEBUG_STUB, kNoExtraICState) | 353 V(FrameDropper_LiveEdit, DEBUG_STUB, kNoExtraICState) |
367 | |
368 | 354 |
369 class BuiltinFunctionTable; | 355 class BuiltinFunctionTable; |
370 class ObjectVisitor; | 356 class ObjectVisitor; |
371 | 357 |
372 | 358 |
373 class Builtins { | 359 class Builtins { |
374 public: | 360 public: |
375 ~Builtins(); | 361 ~Builtins(); |
376 | 362 |
377 // Generate all builtin code objects. Should be called once during | 363 // Generate all builtin code objects. Should be called once during |
378 // isolate initialization. | 364 // isolate initialization. |
379 void SetUp(Isolate* isolate, bool create_heap_objects); | 365 void SetUp(Isolate* isolate, bool create_heap_objects); |
380 void TearDown(); | 366 void TearDown(); |
381 | 367 |
382 // Garbage collection support. | 368 // Garbage collection support. |
383 void IterateBuiltins(ObjectVisitor* v); | 369 void IterateBuiltins(ObjectVisitor* v); |
384 | 370 |
385 // Disassembler support. | 371 // Disassembler support. |
386 const char* Lookup(byte* pc); | 372 const char* Lookup(byte* pc); |
387 | 373 |
388 enum Name { | 374 enum Name { |
389 #define DEF_ENUM_C(name, ignore) k##name, | 375 #define DEF_ENUM_C(name, ignore) k##name, |
390 #define DEF_ENUM_A(name, kind, state, extra) k##name, | 376 #define DEF_ENUM_A(name, kind, extra) k##name, |
391 #define DEF_ENUM_T(name, argc) k##name, | 377 #define DEF_ENUM_T(name, argc) k##name, |
392 #define DEF_ENUM_H(name, kind) k##name, | 378 #define DEF_ENUM_H(name, kind) k##name, |
393 BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A) | 379 BUILTIN_LIST_C(DEF_ENUM_C) BUILTIN_LIST_A(DEF_ENUM_A) |
394 BUILTIN_LIST_T(DEF_ENUM_T) BUILTIN_LIST_H(DEF_ENUM_H) | 380 BUILTIN_LIST_T(DEF_ENUM_T) BUILTIN_LIST_H(DEF_ENUM_H) |
395 BUILTIN_LIST_DEBUG_A(DEF_ENUM_A) | 381 BUILTIN_LIST_DEBUG_A(DEF_ENUM_A) |
396 #undef DEF_ENUM_C | 382 #undef DEF_ENUM_C |
397 #undef DEF_ENUM_A | 383 #undef DEF_ENUM_A |
398 #undef DEF_ENUM_T | 384 #undef DEF_ENUM_T |
399 #undef DEF_ENUM_H | 385 #undef DEF_ENUM_H |
400 builtin_count | 386 builtin_count |
401 }; | 387 }; |
402 | 388 |
403 enum CFunctionId { | 389 enum CFunctionId { |
404 #define DEF_ENUM_C(name, ignore) c_##name, | 390 #define DEF_ENUM_C(name, ignore) c_##name, |
405 BUILTIN_LIST_C(DEF_ENUM_C) | 391 BUILTIN_LIST_C(DEF_ENUM_C) |
406 #undef DEF_ENUM_C | 392 #undef DEF_ENUM_C |
407 cfunction_count | 393 cfunction_count |
408 }; | 394 }; |
409 | 395 |
410 #define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name(); | 396 #define DECLARE_BUILTIN_ACCESSOR_C(name, ignore) Handle<Code> name(); |
411 #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, state, extra) \ | 397 #define DECLARE_BUILTIN_ACCESSOR_A(name, kind, extra) Handle<Code> name(); |
412 Handle<Code> name(); | |
413 #define DECLARE_BUILTIN_ACCESSOR_T(name, argc) Handle<Code> name(); | 398 #define DECLARE_BUILTIN_ACCESSOR_T(name, argc) Handle<Code> name(); |
414 #define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle<Code> name(); | 399 #define DECLARE_BUILTIN_ACCESSOR_H(name, kind) Handle<Code> name(); |
415 BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C) | 400 BUILTIN_LIST_C(DECLARE_BUILTIN_ACCESSOR_C) |
416 BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A) | 401 BUILTIN_LIST_A(DECLARE_BUILTIN_ACCESSOR_A) |
417 BUILTIN_LIST_T(DECLARE_BUILTIN_ACCESSOR_T) | 402 BUILTIN_LIST_T(DECLARE_BUILTIN_ACCESSOR_T) |
418 BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H) | 403 BUILTIN_LIST_H(DECLARE_BUILTIN_ACCESSOR_H) |
419 BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A) | 404 BUILTIN_LIST_DEBUG_A(DECLARE_BUILTIN_ACCESSOR_A) |
420 #undef DECLARE_BUILTIN_ACCESSOR_C | 405 #undef DECLARE_BUILTIN_ACCESSOR_C |
421 #undef DECLARE_BUILTIN_ACCESSOR_A | 406 #undef DECLARE_BUILTIN_ACCESSOR_A |
422 #undef DECLARE_BUILTIN_ACCESSOR_T | 407 #undef DECLARE_BUILTIN_ACCESSOR_T |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
731 friend class BuiltinFunctionTable; | 716 friend class BuiltinFunctionTable; |
732 friend class Isolate; | 717 friend class Isolate; |
733 | 718 |
734 DISALLOW_COPY_AND_ASSIGN(Builtins); | 719 DISALLOW_COPY_AND_ASSIGN(Builtins); |
735 }; | 720 }; |
736 | 721 |
737 } // namespace internal | 722 } // namespace internal |
738 } // namespace v8 | 723 } // namespace v8 |
739 | 724 |
740 #endif // V8_BUILTINS_H_ | 725 #endif // V8_BUILTINS_H_ |
OLD | NEW |