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 |