| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/bootstrapper.h" | 7 #include "src/bootstrapper.h" |
| 8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/cpu-profiler.h" | 9 #include "src/cpu-profiler.h" |
| 10 #include "src/factory.h" | 10 #include "src/factory.h" |
| (...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 } | 667 } |
| 668 | 668 |
| 669 | 669 |
| 670 void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) { | 670 void CreateAllocationSiteStub::GenerateAheadOfTime(Isolate* isolate) { |
| 671 CreateAllocationSiteStub stub(isolate); | 671 CreateAllocationSiteStub stub(isolate); |
| 672 stub.GetCode(); | 672 stub.GetCode(); |
| 673 } | 673 } |
| 674 | 674 |
| 675 | 675 |
| 676 void StoreElementStub::Generate(MacroAssembler* masm) { | 676 void StoreElementStub::Generate(MacroAssembler* masm) { |
| 677 switch (elements_kind_) { | 677 switch (elements_kind()) { |
| 678 case FAST_ELEMENTS: | 678 case FAST_ELEMENTS: |
| 679 case FAST_HOLEY_ELEMENTS: | 679 case FAST_HOLEY_ELEMENTS: |
| 680 case FAST_SMI_ELEMENTS: | 680 case FAST_SMI_ELEMENTS: |
| 681 case FAST_HOLEY_SMI_ELEMENTS: | 681 case FAST_HOLEY_SMI_ELEMENTS: |
| 682 case FAST_DOUBLE_ELEMENTS: | 682 case FAST_DOUBLE_ELEMENTS: |
| 683 case FAST_HOLEY_DOUBLE_ELEMENTS: | 683 case FAST_HOLEY_DOUBLE_ELEMENTS: |
| 684 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 684 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ |
| 685 case EXTERNAL_##TYPE##_ELEMENTS: \ | 685 case EXTERNAL_##TYPE##_ELEMENTS: \ |
| 686 case TYPE##_ELEMENTS: | 686 case TYPE##_ELEMENTS: |
| 687 | 687 |
| 688 TYPED_ARRAYS(TYPED_ARRAY_CASE) | 688 TYPED_ARRAYS(TYPED_ARRAY_CASE) |
| 689 #undef TYPED_ARRAY_CASE | 689 #undef TYPED_ARRAY_CASE |
| 690 UNREACHABLE(); | 690 UNREACHABLE(); |
| 691 break; | 691 break; |
| 692 case DICTIONARY_ELEMENTS: | 692 case DICTIONARY_ELEMENTS: |
| 693 ElementHandlerCompiler::GenerateStoreSlow(masm); | 693 ElementHandlerCompiler::GenerateStoreSlow(masm); |
| 694 break; | 694 break; |
| 695 case SLOPPY_ARGUMENTS_ELEMENTS: | 695 case SLOPPY_ARGUMENTS_ELEMENTS: |
| 696 UNREACHABLE(); | 696 UNREACHABLE(); |
| 697 break; | 697 break; |
| 698 } | 698 } |
| 699 } | 699 } |
| 700 | 700 |
| 701 | 701 |
| 702 void ArgumentsAccessStub::Generate(MacroAssembler* masm) { |
| 703 switch (type()) { |
| 704 case READ_ELEMENT: |
| 705 GenerateReadElement(masm); |
| 706 break; |
| 707 case NEW_SLOPPY_FAST: |
| 708 GenerateNewSloppyFast(masm); |
| 709 break; |
| 710 case NEW_SLOPPY_SLOW: |
| 711 GenerateNewSloppySlow(masm); |
| 712 break; |
| 713 case NEW_STRICT: |
| 714 GenerateNewStrict(masm); |
| 715 break; |
| 716 } |
| 717 } |
| 718 |
| 719 |
| 702 void ArgumentsAccessStub::PrintName(OStream& os) const { // NOLINT | 720 void ArgumentsAccessStub::PrintName(OStream& os) const { // NOLINT |
| 703 os << "ArgumentsAccessStub_"; | 721 os << "ArgumentsAccessStub_"; |
| 704 switch (type_) { | 722 switch (type()) { |
| 705 case READ_ELEMENT: | 723 case READ_ELEMENT: |
| 706 os << "ReadElement"; | 724 os << "ReadElement"; |
| 707 break; | 725 break; |
| 708 case NEW_SLOPPY_FAST: | 726 case NEW_SLOPPY_FAST: |
| 709 os << "NewSloppyFast"; | 727 os << "NewSloppyFast"; |
| 710 break; | 728 break; |
| 711 case NEW_SLOPPY_SLOW: | 729 case NEW_SLOPPY_SLOW: |
| 712 os << "NewSloppySlow"; | 730 os << "NewSloppySlow"; |
| 713 break; | 731 break; |
| 714 case NEW_STRICT: | 732 case NEW_STRICT: |
| 715 os << "NewStrict"; | 733 os << "NewStrict"; |
| 716 break; | 734 break; |
| 717 } | 735 } |
| 718 return; | 736 return; |
| 719 } | 737 } |
| 720 | 738 |
| 721 | 739 |
| 722 void CallFunctionStub::PrintName(OStream& os) const { // NOLINT | 740 void CallFunctionStub::PrintName(OStream& os) const { // NOLINT |
| 723 os << "CallFunctionStub_Args" << argc_; | 741 os << "CallFunctionStub_Args" << argc(); |
| 724 } | 742 } |
| 725 | 743 |
| 726 | 744 |
| 727 void CallConstructStub::PrintName(OStream& os) const { // NOLINT | 745 void CallConstructStub::PrintName(OStream& os) const { // NOLINT |
| 728 os << "CallConstructStub"; | 746 os << "CallConstructStub"; |
| 729 if (RecordCallTarget()) os << "_Recording"; | 747 if (RecordCallTarget()) os << "_Recording"; |
| 730 } | 748 } |
| 731 | 749 |
| 732 | 750 |
| 733 void ArrayConstructorStub::PrintName(OStream& os) const { // NOLINT | 751 void ArrayConstructorStub::PrintName(OStream& os) const { // NOLINT |
| 734 os << "ArrayConstructorStub"; | 752 os << "ArrayConstructorStub"; |
| 735 switch (argument_count_) { | 753 switch (argument_count()) { |
| 736 case ANY: | 754 case ANY: |
| 737 os << "_Any"; | 755 os << "_Any"; |
| 738 break; | 756 break; |
| 739 case NONE: | 757 case NONE: |
| 740 os << "_None"; | 758 os << "_None"; |
| 741 break; | 759 break; |
| 742 case ONE: | 760 case ONE: |
| 743 os << "_One"; | 761 os << "_One"; |
| 744 break; | 762 break; |
| 745 case MORE_THAN_ONE: | 763 case MORE_THAN_ONE: |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 | 957 |
| 940 // static | 958 // static |
| 941 void StoreFieldStub::InstallDescriptors(Isolate* isolate) { | 959 void StoreFieldStub::InstallDescriptors(Isolate* isolate) { |
| 942 StoreFieldStub stub(isolate, FieldIndex::ForInObjectOffset(0), | 960 StoreFieldStub stub(isolate, FieldIndex::ForInObjectOffset(0), |
| 943 Representation::None()); | 961 Representation::None()); |
| 944 InstallDescriptor(isolate, &stub); | 962 InstallDescriptor(isolate, &stub); |
| 945 } | 963 } |
| 946 | 964 |
| 947 | 965 |
| 948 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate) | 966 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate) |
| 949 : PlatformCodeStub(isolate), argument_count_(ANY) { | 967 : PlatformCodeStub(isolate) { |
| 968 minor_key_ = ArgumentCountBits::encode(ANY); |
| 950 ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); | 969 ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |
| 951 } | 970 } |
| 952 | 971 |
| 953 | 972 |
| 954 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate, | 973 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate, |
| 955 int argument_count) | 974 int argument_count) |
| 956 : PlatformCodeStub(isolate) { | 975 : PlatformCodeStub(isolate) { |
| 957 if (argument_count == 0) { | 976 if (argument_count == 0) { |
| 958 argument_count_ = NONE; | 977 minor_key_ = ArgumentCountBits::encode(NONE); |
| 959 } else if (argument_count == 1) { | 978 } else if (argument_count == 1) { |
| 960 argument_count_ = ONE; | 979 minor_key_ = ArgumentCountBits::encode(ONE); |
| 961 } else if (argument_count >= 2) { | 980 } else if (argument_count >= 2) { |
| 962 argument_count_ = MORE_THAN_ONE; | 981 minor_key_ = ArgumentCountBits::encode(MORE_THAN_ONE); |
| 963 } else { | 982 } else { |
| 964 UNREACHABLE(); | 983 UNREACHABLE(); |
| 965 } | 984 } |
| 966 ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); | 985 ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |
| 967 } | 986 } |
| 968 | 987 |
| 969 | 988 |
| 970 void InternalArrayConstructorStubBase::InstallDescriptors(Isolate* isolate) { | 989 void InternalArrayConstructorStubBase::InstallDescriptors(Isolate* isolate) { |
| 971 InternalArrayNoArgumentConstructorStub stub1(isolate, FAST_ELEMENTS); | 990 InternalArrayNoArgumentConstructorStub stub1(isolate, FAST_ELEMENTS); |
| 972 InstallDescriptor(isolate, &stub1); | 991 InstallDescriptor(isolate, &stub1); |
| 973 InternalArraySingleArgumentConstructorStub stub2(isolate, FAST_ELEMENTS); | 992 InternalArraySingleArgumentConstructorStub stub2(isolate, FAST_ELEMENTS); |
| 974 InstallDescriptor(isolate, &stub2); | 993 InstallDescriptor(isolate, &stub2); |
| 975 InternalArrayNArgumentsConstructorStub stub3(isolate, FAST_ELEMENTS); | 994 InternalArrayNArgumentsConstructorStub stub3(isolate, FAST_ELEMENTS); |
| 976 InstallDescriptor(isolate, &stub3); | 995 InstallDescriptor(isolate, &stub3); |
| 977 } | 996 } |
| 978 | 997 |
| 979 InternalArrayConstructorStub::InternalArrayConstructorStub( | 998 InternalArrayConstructorStub::InternalArrayConstructorStub( |
| 980 Isolate* isolate) : PlatformCodeStub(isolate) { | 999 Isolate* isolate) : PlatformCodeStub(isolate) { |
| 981 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); | 1000 InternalArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate); |
| 982 } | 1001 } |
| 983 | 1002 |
| 984 | 1003 |
| 985 } } // namespace v8::internal | 1004 } } // namespace v8::internal |
| OLD | NEW |