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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 V(DatePrototypeGetTimezoneOffset, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 273 V(DatePrototypeGetTimezoneOffset, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
274 V(DatePrototypeGetUTCDate, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 274 V(DatePrototypeGetUTCDate, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
275 V(DatePrototypeGetUTCDay, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 275 V(DatePrototypeGetUTCDay, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
276 V(DatePrototypeGetUTCFullYear, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 276 V(DatePrototypeGetUTCFullYear, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
277 V(DatePrototypeGetUTCHours, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 277 V(DatePrototypeGetUTCHours, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
278 V(DatePrototypeGetUTCMilliseconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 278 V(DatePrototypeGetUTCMilliseconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
279 V(DatePrototypeGetUTCMinutes, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 279 V(DatePrototypeGetUTCMinutes, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
280 V(DatePrototypeGetUTCMonth, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 280 V(DatePrototypeGetUTCMonth, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
281 V(DatePrototypeGetUTCSeconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 281 V(DatePrototypeGetUTCSeconds, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
282 \ | 282 \ |
283 V(FunctionHasInstance, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | |
284 V(FunctionPrototypeApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 283 V(FunctionPrototypeApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
285 V(FunctionPrototypeCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 284 V(FunctionPrototypeCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
286 \ | 285 \ |
287 V(ReflectApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 286 V(ReflectApply, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
288 V(ReflectConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 287 V(ReflectConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
289 \ | 288 \ |
290 V(InternalArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 289 V(InternalArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
291 V(ArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 290 V(ArrayCode, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
292 \ | 291 \ |
293 V(MathMax, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 292 V(MathMax, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
294 V(MathMin, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 293 V(MathMin, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
295 \ | 294 \ |
296 V(NumberConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 295 V(NumberConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
297 V(NumberConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 296 V(NumberConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
298 \ | 297 \ |
299 V(StringConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 298 V(StringConstructor, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
300 V(StringConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 299 V(StringConstructor_ConstructStub, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
301 \ | 300 \ |
302 V(OnStackReplacement, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 301 V(OnStackReplacement, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
303 V(InterruptCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 302 V(InterruptCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
304 V(StackCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 303 V(StackCheck, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
305 \ | 304 \ |
306 V(MarkCodeAsToBeExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 305 V(MarkCodeAsToBeExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
307 V(MarkCodeAsExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 306 V(MarkCodeAsExecutedOnce, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
308 V(MarkCodeAsExecutedTwice, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 307 V(MarkCodeAsExecutedTwice, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
309 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) | 308 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) |
310 | 309 |
311 // Define list of builtins implemented in TurboFan (with JS linkage). | 310 // Define list of builtins implemented in TurboFan (with JS linkage). |
312 #define BUILTIN_LIST_T(V) \ | 311 #define BUILTIN_LIST_T(V) \ |
313 V(GeneratorPrototypeNext, 2) \ | 312 V(FunctionPrototypeHasInstance, 2) \ |
314 V(GeneratorPrototypeReturn, 2) \ | 313 V(GeneratorPrototypeNext, 2) \ |
315 V(GeneratorPrototypeThrow, 2) \ | 314 V(GeneratorPrototypeReturn, 2) \ |
316 V(MathCeil, 2) \ | 315 V(GeneratorPrototypeThrow, 2) \ |
317 V(MathClz32, 2) \ | 316 V(MathCeil, 2) \ |
318 V(MathFloor, 2) \ | 317 V(MathClz32, 2) \ |
319 V(MathRound, 2) \ | 318 V(MathFloor, 2) \ |
320 V(MathSqrt, 2) \ | 319 V(MathRound, 2) \ |
321 V(MathTrunc, 2) \ | 320 V(MathSqrt, 2) \ |
322 V(ObjectHasOwnProperty, 2) \ | 321 V(MathTrunc, 2) \ |
323 V(ArrayIsArray, 2) \ | 322 V(ObjectHasOwnProperty, 2) \ |
324 V(StringPrototypeCharAt, 2) \ | 323 V(ArrayIsArray, 2) \ |
325 V(StringPrototypeCharCodeAt, 2) \ | 324 V(StringPrototypeCharAt, 2) \ |
326 V(AtomicsLoad, 3) \ | 325 V(StringPrototypeCharCodeAt, 2) \ |
| 326 V(AtomicsLoad, 3) \ |
327 V(AtomicsStore, 4) | 327 V(AtomicsStore, 4) |
328 | 328 |
329 // Define list of builtin handlers implemented in assembly. | 329 // Define list of builtin handlers implemented in assembly. |
330 #define BUILTIN_LIST_H(V) \ | 330 #define BUILTIN_LIST_H(V) \ |
331 V(LoadIC_Slow, LOAD_IC) \ | 331 V(LoadIC_Slow, LOAD_IC) \ |
332 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ | 332 V(KeyedLoadIC_Slow, KEYED_LOAD_IC) \ |
333 V(StoreIC_Slow, STORE_IC) \ | 333 V(StoreIC_Slow, STORE_IC) \ |
334 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ | 334 V(KeyedStoreIC_Slow, KEYED_STORE_IC) \ |
335 V(LoadIC_Normal, LOAD_IC) \ | 335 V(LoadIC_Normal, LOAD_IC) \ |
336 V(StoreIC_Normal, STORE_IC) | 336 V(StoreIC_Normal, STORE_IC) |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 static void Generate_DatePrototypeGetUTCHours(MacroAssembler* masm); | 584 static void Generate_DatePrototypeGetUTCHours(MacroAssembler* masm); |
585 // ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) | 585 // ES6 section 20.3.4.16 Date.prototype.getUTCMilliseconds ( ) |
586 static void Generate_DatePrototypeGetUTCMilliseconds(MacroAssembler* masm); | 586 static void Generate_DatePrototypeGetUTCMilliseconds(MacroAssembler* masm); |
587 // ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) | 587 // ES6 section 20.3.4.17 Date.prototype.getUTCMinutes ( ) |
588 static void Generate_DatePrototypeGetUTCMinutes(MacroAssembler* masm); | 588 static void Generate_DatePrototypeGetUTCMinutes(MacroAssembler* masm); |
589 // ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) | 589 // ES6 section 20.3.4.18 Date.prototype.getUTCMonth ( ) |
590 static void Generate_DatePrototypeGetUTCMonth(MacroAssembler* masm); | 590 static void Generate_DatePrototypeGetUTCMonth(MacroAssembler* masm); |
591 // ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) | 591 // ES6 section 20.3.4.19 Date.prototype.getUTCSeconds ( ) |
592 static void Generate_DatePrototypeGetUTCSeconds(MacroAssembler* masm); | 592 static void Generate_DatePrototypeGetUTCSeconds(MacroAssembler* masm); |
593 | 593 |
594 static void Generate_FunctionHasInstance(MacroAssembler* masm); | |
595 static void Generate_FunctionPrototypeApply(MacroAssembler* masm); | 594 static void Generate_FunctionPrototypeApply(MacroAssembler* masm); |
596 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); | 595 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); |
597 | 596 |
598 static void Generate_ReflectApply(MacroAssembler* masm); | 597 static void Generate_ReflectApply(MacroAssembler* masm); |
599 static void Generate_ReflectConstruct(MacroAssembler* masm); | 598 static void Generate_ReflectConstruct(MacroAssembler* masm); |
600 | 599 |
601 static void Generate_InternalArrayCode(MacroAssembler* masm); | 600 static void Generate_InternalArrayCode(MacroAssembler* masm); |
602 static void Generate_ArrayCode(MacroAssembler* masm); | 601 static void Generate_ArrayCode(MacroAssembler* masm); |
603 | 602 |
604 // ES6 section 20.2.2.10 Math.ceil ( x ) | 603 // ES6 section 20.2.2.10 Math.ceil ( x ) |
(...skipping 17 matching lines...) Expand all Loading... |
622 // ES6 section 20.2.2.32 Math.sqrt ( x ) | 621 // ES6 section 20.2.2.32 Math.sqrt ( x ) |
623 static void Generate_MathSqrt(CodeStubAssembler* assembler); | 622 static void Generate_MathSqrt(CodeStubAssembler* assembler); |
624 // ES6 section 20.2.2.35 Math.trunc ( x ) | 623 // ES6 section 20.2.2.35 Math.trunc ( x ) |
625 static void Generate_MathTrunc(CodeStubAssembler* assembler); | 624 static void Generate_MathTrunc(CodeStubAssembler* assembler); |
626 | 625 |
627 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case. | 626 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Call]] case. |
628 static void Generate_NumberConstructor(MacroAssembler* masm); | 627 static void Generate_NumberConstructor(MacroAssembler* masm); |
629 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case. | 628 // ES6 section 20.1.1.1 Number ( [ value ] ) for the [[Construct]] case. |
630 static void Generate_NumberConstructor_ConstructStub(MacroAssembler* masm); | 629 static void Generate_NumberConstructor_ConstructStub(MacroAssembler* masm); |
631 | 630 |
| 631 // ES6 section 19.2.3.6 Function.prototype [ @@hasInstance ] ( V ) |
| 632 static void Generate_FunctionPrototypeHasInstance( |
| 633 CodeStubAssembler* assembler); |
| 634 |
632 // ES6 section 25.3.1.2 Generator.prototype.next ( value ) | 635 // ES6 section 25.3.1.2 Generator.prototype.next ( value ) |
633 static void Generate_GeneratorPrototypeNext(CodeStubAssembler* assembler); | 636 static void Generate_GeneratorPrototypeNext(CodeStubAssembler* assembler); |
634 // ES6 section 25.3.1.3 Generator.prototype.return ( value ) | 637 // ES6 section 25.3.1.3 Generator.prototype.return ( value ) |
635 static void Generate_GeneratorPrototypeReturn(CodeStubAssembler* assembler); | 638 static void Generate_GeneratorPrototypeReturn(CodeStubAssembler* assembler); |
636 // ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) | 639 // ES6 section 25.3.1.4 Generator.prototype.throw ( exception ) |
637 static void Generate_GeneratorPrototypeThrow(CodeStubAssembler* assembler); | 640 static void Generate_GeneratorPrototypeThrow(CodeStubAssembler* assembler); |
638 | 641 |
639 // ES6 section 19.1.3.2 Object.prototype.hasOwnProperty | 642 // ES6 section 19.1.3.2 Object.prototype.hasOwnProperty |
640 static void Generate_ObjectHasOwnProperty(CodeStubAssembler* assembler); | 643 static void Generate_ObjectHasOwnProperty(CodeStubAssembler* assembler); |
641 | 644 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 friend class BuiltinFunctionTable; | 695 friend class BuiltinFunctionTable; |
693 friend class Isolate; | 696 friend class Isolate; |
694 | 697 |
695 DISALLOW_COPY_AND_ASSIGN(Builtins); | 698 DISALLOW_COPY_AND_ASSIGN(Builtins); |
696 }; | 699 }; |
697 | 700 |
698 } // namespace internal | 701 } // namespace internal |
699 } // namespace v8 | 702 } // namespace v8 |
700 | 703 |
701 #endif // V8_BUILTINS_H_ | 704 #endif // V8_BUILTINS_H_ |
OLD | NEW |