| OLD | NEW |
| 1 | 1 |
| 2 // Copyright 2011 the V8 project authors. All rights reserved. | 2 // Copyright 2011 the V8 project authors. All rights reserved. |
| 3 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
| 4 // found in the LICENSE file. | 4 // found in the LICENSE file. |
| 5 | 5 |
| 6 #ifndef V8_BUILTINS_H_ | 6 #ifndef V8_BUILTINS_H_ |
| 7 #define V8_BUILTINS_H_ | 7 #define V8_BUILTINS_H_ |
| 8 | 8 |
| 9 #include "src/base/flags.h" | 9 #include "src/base/flags.h" |
| 10 #include "src/handles.h" | 10 #include "src/handles.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 V(GlobalEncodeURI, BUILTIN_EXIT) \ | 110 V(GlobalEncodeURI, BUILTIN_EXIT) \ |
| 111 V(GlobalEncodeURIComponent, BUILTIN_EXIT) \ | 111 V(GlobalEncodeURIComponent, BUILTIN_EXIT) \ |
| 112 V(GlobalEscape, BUILTIN_EXIT) \ | 112 V(GlobalEscape, BUILTIN_EXIT) \ |
| 113 V(GlobalUnescape, BUILTIN_EXIT) \ | 113 V(GlobalUnescape, BUILTIN_EXIT) \ |
| 114 \ | 114 \ |
| 115 V(GlobalEval, BUILTIN_EXIT) \ | 115 V(GlobalEval, BUILTIN_EXIT) \ |
| 116 \ | 116 \ |
| 117 V(JsonParse, BUILTIN_EXIT) \ | 117 V(JsonParse, BUILTIN_EXIT) \ |
| 118 V(JsonStringify, BUILTIN_EXIT) \ | 118 V(JsonStringify, BUILTIN_EXIT) \ |
| 119 \ | 119 \ |
| 120 V(MathAcos, BUILTIN_EXIT) \ | |
| 121 V(MathAsin, BUILTIN_EXIT) \ | |
| 122 V(MathFround, BUILTIN_EXIT) \ | |
| 123 V(MathHypot, BUILTIN_EXIT) \ | 120 V(MathHypot, BUILTIN_EXIT) \ |
| 124 V(MathImul, BUILTIN_EXIT) \ | |
| 125 \ | 121 \ |
| 126 V(ObjectAssign, BUILTIN_EXIT) \ | 122 V(ObjectAssign, BUILTIN_EXIT) \ |
| 127 V(ObjectCreate, BUILTIN_EXIT) \ | 123 V(ObjectCreate, BUILTIN_EXIT) \ |
| 128 V(ObjectDefineGetter, BUILTIN_EXIT) \ | 124 V(ObjectDefineGetter, BUILTIN_EXIT) \ |
| 129 V(ObjectDefineProperties, BUILTIN_EXIT) \ | 125 V(ObjectDefineProperties, BUILTIN_EXIT) \ |
| 130 V(ObjectDefineProperty, BUILTIN_EXIT) \ | 126 V(ObjectDefineProperty, BUILTIN_EXIT) \ |
| 131 V(ObjectDefineSetter, BUILTIN_EXIT) \ | 127 V(ObjectDefineSetter, BUILTIN_EXIT) \ |
| 132 V(ObjectEntries, BUILTIN_EXIT) \ | 128 V(ObjectEntries, BUILTIN_EXIT) \ |
| 133 V(ObjectFreeze, BUILTIN_EXIT) \ | 129 V(ObjectFreeze, BUILTIN_EXIT) \ |
| 134 V(ObjectGetOwnPropertyDescriptor, BUILTIN_EXIT) \ | 130 V(ObjectGetOwnPropertyDescriptor, BUILTIN_EXIT) \ |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 V(MarkCodeAsExecutedOnce, BUILTIN, kNoExtraICState) \ | 296 V(MarkCodeAsExecutedOnce, BUILTIN, kNoExtraICState) \ |
| 301 V(MarkCodeAsExecutedTwice, BUILTIN, kNoExtraICState) \ | 297 V(MarkCodeAsExecutedTwice, BUILTIN, kNoExtraICState) \ |
| 302 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) | 298 CODE_AGE_LIST_WITH_ARG(DECLARE_CODE_AGE_BUILTIN, V) |
| 303 | 299 |
| 304 // Define list of builtins implemented in TurboFan (with JS linkage). | 300 // Define list of builtins implemented in TurboFan (with JS linkage). |
| 305 #define BUILTIN_LIST_T(V) \ | 301 #define BUILTIN_LIST_T(V) \ |
| 306 V(FunctionPrototypeHasInstance, 2) \ | 302 V(FunctionPrototypeHasInstance, 2) \ |
| 307 V(GeneratorPrototypeNext, 2) \ | 303 V(GeneratorPrototypeNext, 2) \ |
| 308 V(GeneratorPrototypeReturn, 2) \ | 304 V(GeneratorPrototypeReturn, 2) \ |
| 309 V(GeneratorPrototypeThrow, 2) \ | 305 V(GeneratorPrototypeThrow, 2) \ |
| 306 V(MathAcos, 2) \ |
| 307 V(MathAcosh, 2) \ |
| 308 V(MathAsin, 2) \ |
| 309 V(MathAsinh, 2) \ |
| 310 V(MathAtan, 2) \ | 310 V(MathAtan, 2) \ |
| 311 V(MathAtanh, 2) \ |
| 311 V(MathAtan2, 3) \ | 312 V(MathAtan2, 3) \ |
| 312 V(MathAtanh, 2) \ | |
| 313 V(MathCeil, 2) \ | 313 V(MathCeil, 2) \ |
| 314 V(MathCbrt, 2) \ | 314 V(MathCbrt, 2) \ |
| 315 V(MathAbs, 2) \ | 315 V(MathAbs, 2) \ |
| 316 V(MathExpm1, 2) \ | 316 V(MathExpm1, 2) \ |
| 317 V(MathClz32, 2) \ | 317 V(MathClz32, 2) \ |
| 318 V(MathCos, 2) \ | 318 V(MathCos, 2) \ |
| 319 V(MathCosh, 2) \ | 319 V(MathCosh, 2) \ |
| 320 V(MathExp, 2) \ | 320 V(MathExp, 2) \ |
| 321 V(MathFloor, 2) \ | 321 V(MathFloor, 2) \ |
| 322 V(MathFround, 2) \ |
| 323 V(MathImul, 3) \ |
| 322 V(MathLog, 2) \ | 324 V(MathLog, 2) \ |
| 323 V(MathLog1p, 2) \ | 325 V(MathLog1p, 2) \ |
| 324 V(MathLog10, 2) \ | 326 V(MathLog10, 2) \ |
| 325 V(MathLog2, 2) \ | 327 V(MathLog2, 2) \ |
| 326 V(MathRound, 2) \ | 328 V(MathRound, 2) \ |
| 327 V(MathPow, 3) \ | 329 V(MathPow, 3) \ |
| 330 V(MathSign, 2) \ |
| 328 V(MathSin, 2) \ | 331 V(MathSin, 2) \ |
| 329 V(MathSinh, 2) \ | 332 V(MathSinh, 2) \ |
| 330 V(MathTan, 2) \ | 333 V(MathTan, 2) \ |
| 331 V(MathTanh, 2) \ | 334 V(MathTanh, 2) \ |
| 332 V(MathSqrt, 2) \ | 335 V(MathSqrt, 2) \ |
| 333 V(MathTrunc, 2) \ | 336 V(MathTrunc, 2) \ |
| 334 V(ObjectHasOwnProperty, 2) \ | 337 V(ObjectHasOwnProperty, 2) \ |
| 335 V(ArrayIsArray, 2) \ | 338 V(ArrayIsArray, 2) \ |
| 336 V(StringFromCharCode, 2) \ | 339 V(StringFromCharCode, 2) \ |
| 337 V(StringPrototypeCharAt, 2) \ | 340 V(StringPrototypeCharAt, 2) \ |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); | 631 static void Generate_FunctionPrototypeCall(MacroAssembler* masm); |
| 629 | 632 |
| 630 static void Generate_ReflectApply(MacroAssembler* masm); | 633 static void Generate_ReflectApply(MacroAssembler* masm); |
| 631 static void Generate_ReflectConstruct(MacroAssembler* masm); | 634 static void Generate_ReflectConstruct(MacroAssembler* masm); |
| 632 | 635 |
| 633 static void Generate_InternalArrayCode(MacroAssembler* masm); | 636 static void Generate_InternalArrayCode(MacroAssembler* masm); |
| 634 static void Generate_ArrayCode(MacroAssembler* masm); | 637 static void Generate_ArrayCode(MacroAssembler* masm); |
| 635 | 638 |
| 636 // ES6 section 20.2.2.1 Math.abs ( x ) | 639 // ES6 section 20.2.2.1 Math.abs ( x ) |
| 637 static void Generate_MathAbs(CodeStubAssembler* assembler); | 640 static void Generate_MathAbs(CodeStubAssembler* assembler); |
| 641 // ES6 section 20.2.2.2 Math.acos ( x ) |
| 642 static void Generate_MathAcos(CodeStubAssembler* assembler); |
| 643 // ES6 section 20.2.2.3 Math.acosh ( x ) |
| 644 static void Generate_MathAcosh(CodeStubAssembler* assembler); |
| 645 // ES6 section 20.2.2.4 Math.asin ( x ) |
| 646 static void Generate_MathAsin(CodeStubAssembler* assembler); |
| 647 // ES6 section 20.2.2.5 Math.asinh ( x ) |
| 648 static void Generate_MathAsinh(CodeStubAssembler* assembler); |
| 638 // ES6 section 20.2.2.6 Math.atan ( x ) | 649 // ES6 section 20.2.2.6 Math.atan ( x ) |
| 639 static void Generate_MathAtan(CodeStubAssembler* assembler); | 650 static void Generate_MathAtan(CodeStubAssembler* assembler); |
| 651 // ES6 section 20.2.2.7 Math.atanh ( x ) |
| 652 static void Generate_MathAtanh(CodeStubAssembler* assembler); |
| 640 // ES6 section 20.2.2.8 Math.atan2 ( y, x ) | 653 // ES6 section 20.2.2.8 Math.atan2 ( y, x ) |
| 641 static void Generate_MathAtan2(CodeStubAssembler* assembler); | 654 static void Generate_MathAtan2(CodeStubAssembler* assembler); |
| 642 // ES6 section 20.2.2.7 Math.atanh ( x ) | |
| 643 static void Generate_MathAtanh(CodeStubAssembler* assembler); | |
| 644 // ES6 section 20.2.2.10 Math.ceil ( x ) | 655 // ES6 section 20.2.2.10 Math.ceil ( x ) |
| 645 static void Generate_MathCeil(CodeStubAssembler* assembler); | 656 static void Generate_MathCeil(CodeStubAssembler* assembler); |
| 646 // ES6 section 20.2.2.9 Math.ceil ( x ) | 657 // ES6 section 20.2.2.9 Math.ceil ( x ) |
| 647 static void Generate_MathCbrt(CodeStubAssembler* assembler); | 658 static void Generate_MathCbrt(CodeStubAssembler* assembler); |
| 648 // ES6 section 20.2.2.15 Math.expm1 ( x ) | 659 // ES6 section 20.2.2.15 Math.expm1 ( x ) |
| 649 static void Generate_MathExpm1(CodeStubAssembler* assembler); | 660 static void Generate_MathExpm1(CodeStubAssembler* assembler); |
| 650 // ES6 section 20.2.2.11 Math.clz32 ( x ) | 661 // ES6 section 20.2.2.11 Math.clz32 ( x ) |
| 651 static void Generate_MathClz32(CodeStubAssembler* assembler); | 662 static void Generate_MathClz32(CodeStubAssembler* assembler); |
| 652 // ES6 section 20.2.2.12 Math.cos ( x ) | 663 // ES6 section 20.2.2.12 Math.cos ( x ) |
| 653 static void Generate_MathCos(CodeStubAssembler* assembler); | 664 static void Generate_MathCos(CodeStubAssembler* assembler); |
| 654 // ES6 section 20.2.2.13 Math.cosh ( x ) | 665 // ES6 section 20.2.2.13 Math.cosh ( x ) |
| 655 static void Generate_MathCosh(CodeStubAssembler* assembler); | 666 static void Generate_MathCosh(CodeStubAssembler* assembler); |
| 656 // ES6 section 20.2.2.14 Math.exp ( x ) | 667 // ES6 section 20.2.2.14 Math.exp ( x ) |
| 657 static void Generate_MathExp(CodeStubAssembler* assembler); | 668 static void Generate_MathExp(CodeStubAssembler* assembler); |
| 658 // ES6 section 20.2.2.16 Math.floor ( x ) | 669 // ES6 section 20.2.2.16 Math.floor ( x ) |
| 659 static void Generate_MathFloor(CodeStubAssembler* assembler); | 670 static void Generate_MathFloor(CodeStubAssembler* assembler); |
| 671 // ES6 section 20.2.2.17 Math.fround ( x ) |
| 672 static void Generate_MathFround(CodeStubAssembler* assembler); |
| 673 // ES6 section 20.2.2.20 Math.imul ( x, y ) |
| 674 static void Generate_MathImul(CodeStubAssembler* assembler); |
| 660 // ES6 section 20.2.2.20 Math.log ( x ) | 675 // ES6 section 20.2.2.20 Math.log ( x ) |
| 661 static void Generate_MathLog(CodeStubAssembler* assembler); | 676 static void Generate_MathLog(CodeStubAssembler* assembler); |
| 662 // ES6 section 20.2.2.21 Math.log ( x ) | 677 // ES6 section 20.2.2.21 Math.log ( x ) |
| 663 static void Generate_MathLog1p(CodeStubAssembler* assembler); | 678 static void Generate_MathLog1p(CodeStubAssembler* assembler); |
| 664 | 679 |
| 665 static void Generate_MathLog2(CodeStubAssembler* assembler); | 680 static void Generate_MathLog2(CodeStubAssembler* assembler); |
| 666 static void Generate_MathLog10(CodeStubAssembler* assembler); | 681 static void Generate_MathLog10(CodeStubAssembler* assembler); |
| 667 | 682 |
| 668 enum class MathMaxMinKind { kMax, kMin }; | 683 enum class MathMaxMinKind { kMax, kMin }; |
| 669 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); | 684 static void Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind); |
| 670 // ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) | 685 // ES6 section 20.2.2.24 Math.max ( value1, value2 , ...values ) |
| 671 static void Generate_MathMax(MacroAssembler* masm) { | 686 static void Generate_MathMax(MacroAssembler* masm) { |
| 672 Generate_MathMaxMin(masm, MathMaxMinKind::kMax); | 687 Generate_MathMaxMin(masm, MathMaxMinKind::kMax); |
| 673 } | 688 } |
| 674 // ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) | 689 // ES6 section 20.2.2.25 Math.min ( value1, value2 , ...values ) |
| 675 static void Generate_MathMin(MacroAssembler* masm) { | 690 static void Generate_MathMin(MacroAssembler* masm) { |
| 676 Generate_MathMaxMin(masm, MathMaxMinKind::kMin); | 691 Generate_MathMaxMin(masm, MathMaxMinKind::kMin); |
| 677 } | 692 } |
| 678 // ES6 section 20.2.2.26 Math.pow ( x, y ) | 693 // ES6 section 20.2.2.26 Math.pow ( x, y ) |
| 679 static void Generate_MathPow(CodeStubAssembler* assembler); | 694 static void Generate_MathPow(CodeStubAssembler* assembler); |
| 680 // ES6 section 20.2.2.28 Math.round ( x ) | 695 // ES6 section 20.2.2.28 Math.round ( x ) |
| 681 static void Generate_MathRound(CodeStubAssembler* assembler); | 696 static void Generate_MathRound(CodeStubAssembler* assembler); |
| 682 // ES6 section 20.2.2.20 Math.sin ( x ) | 697 // ES6 section 20.2.2.29 Math.sign ( x ) |
| 698 static void Generate_MathSign(CodeStubAssembler* assembler); |
| 699 // ES6 section 20.2.2.30 Math.sin ( x ) |
| 683 static void Generate_MathSin(CodeStubAssembler* assembler); | 700 static void Generate_MathSin(CodeStubAssembler* assembler); |
| 684 // ES6 section 20.2.2.21 Math.sinh ( x ) | 701 // ES6 section 20.2.2.31 Math.sinh ( x ) |
| 685 static void Generate_MathSinh(CodeStubAssembler* assembler); | 702 static void Generate_MathSinh(CodeStubAssembler* assembler); |
| 686 // ES6 section 20.2.2.32 Math.sqrt ( x ) | 703 // ES6 section 20.2.2.32 Math.sqrt ( x ) |
| 687 static void Generate_MathSqrt(CodeStubAssembler* assembler); | 704 static void Generate_MathSqrt(CodeStubAssembler* assembler); |
| 688 // ES6 section 20.2.2.33 Math.tan ( x ) | 705 // ES6 section 20.2.2.33 Math.tan ( x ) |
| 689 static void Generate_MathTan(CodeStubAssembler* assembler); | 706 static void Generate_MathTan(CodeStubAssembler* assembler); |
| 690 // ES6 section 20.2.2.34 Math.tanh ( x ) | 707 // ES6 section 20.2.2.34 Math.tanh ( x ) |
| 691 static void Generate_MathTanh(CodeStubAssembler* assembler); | 708 static void Generate_MathTanh(CodeStubAssembler* assembler); |
| 692 // ES6 section 20.2.2.35 Math.trunc ( x ) | 709 // ES6 section 20.2.2.35 Math.trunc ( x ) |
| 693 static void Generate_MathTrunc(CodeStubAssembler* assembler); | 710 static void Generate_MathTrunc(CodeStubAssembler* assembler); |
| 694 | 711 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 773 friend class BuiltinFunctionTable; | 790 friend class BuiltinFunctionTable; |
| 774 friend class Isolate; | 791 friend class Isolate; |
| 775 | 792 |
| 776 DISALLOW_COPY_AND_ASSIGN(Builtins); | 793 DISALLOW_COPY_AND_ASSIGN(Builtins); |
| 777 }; | 794 }; |
| 778 | 795 |
| 779 } // namespace internal | 796 } // namespace internal |
| 780 } // namespace v8 | 797 } // namespace v8 |
| 781 | 798 |
| 782 #endif // V8_BUILTINS_H_ | 799 #endif // V8_BUILTINS_H_ |
| OLD | NEW |