Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Side by Side Diff: src/code-stubs.h

Issue 1676883002: [runtime] Optimize and unify rest parameters. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef V8_CODE_STUBS_H_ 5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_ 6 #define V8_CODE_STUBS_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/assembler.h" 9 #include "src/assembler.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 26 matching lines...) Expand all
37 V(InternalArrayConstructor) \ 37 V(InternalArrayConstructor) \
38 V(JSEntry) \ 38 V(JSEntry) \
39 V(KeyedLoadICTrampoline) \ 39 V(KeyedLoadICTrampoline) \
40 V(LoadICTrampoline) \ 40 V(LoadICTrampoline) \
41 V(CallICTrampoline) \ 41 V(CallICTrampoline) \
42 V(LoadIndexedInterceptor) \ 42 V(LoadIndexedInterceptor) \
43 V(LoadIndexedString) \ 43 V(LoadIndexedString) \
44 V(MathPow) \ 44 V(MathPow) \
45 V(ProfileEntryHook) \ 45 V(ProfileEntryHook) \
46 V(RecordWrite) \ 46 V(RecordWrite) \
47 V(RestParamAccess) \
48 V(RegExpExec) \ 47 V(RegExpExec) \
49 V(StoreBufferOverflow) \ 48 V(StoreBufferOverflow) \
50 V(StoreElement) \ 49 V(StoreElement) \
51 V(StringCompare) \ 50 V(StringCompare) \
52 V(StubFailureTrampoline) \ 51 V(StubFailureTrampoline) \
53 V(SubString) \ 52 V(SubString) \
54 V(ToNumber) \ 53 V(ToNumber) \
55 V(ToLength) \ 54 V(ToLength) \
56 V(ToString) \ 55 V(ToString) \
57 V(ToName) \ 56 V(ToName) \
(...skipping 13 matching lines...) Expand all
71 V(BinaryOpWithAllocationSite) \ 70 V(BinaryOpWithAllocationSite) \
72 V(CompareNilIC) \ 71 V(CompareNilIC) \
73 V(CreateAllocationSite) \ 72 V(CreateAllocationSite) \
74 V(CreateWeakCell) \ 73 V(CreateWeakCell) \
75 V(ElementsTransitionAndStore) \ 74 V(ElementsTransitionAndStore) \
76 V(FastCloneRegExp) \ 75 V(FastCloneRegExp) \
77 V(FastCloneShallowArray) \ 76 V(FastCloneShallowArray) \
78 V(FastCloneShallowObject) \ 77 V(FastCloneShallowObject) \
79 V(FastNewClosure) \ 78 V(FastNewClosure) \
80 V(FastNewContext) \ 79 V(FastNewContext) \
80 V(FastNewRestParameter) \
81 V(GrowArrayElements) \ 81 V(GrowArrayElements) \
82 V(InternalArrayNArgumentsConstructor) \ 82 V(InternalArrayNArgumentsConstructor) \
83 V(InternalArrayNoArgumentConstructor) \ 83 V(InternalArrayNoArgumentConstructor) \
84 V(InternalArraySingleArgumentConstructor) \ 84 V(InternalArraySingleArgumentConstructor) \
85 V(KeyedLoadGeneric) \ 85 V(KeyedLoadGeneric) \
86 V(LoadGlobalViaContext) \ 86 V(LoadGlobalViaContext) \
87 V(LoadScriptContextField) \ 87 V(LoadScriptContextField) \
88 V(LoadDictionaryElement) \ 88 V(LoadDictionaryElement) \
89 V(NameDictionaryLookup) \ 89 V(NameDictionaryLookup) \
90 V(NumberToString) \ 90 V(NumberToString) \
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 static const int kFunction = 0; 718 static const int kFunction = 0;
719 719
720 private: 720 private:
721 class SlotsBits : public BitField<int, 0, 8> {}; 721 class SlotsBits : public BitField<int, 0, 8> {};
722 722
723 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewContext); 723 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewContext);
724 DEFINE_HYDROGEN_CODE_STUB(FastNewContext, HydrogenCodeStub); 724 DEFINE_HYDROGEN_CODE_STUB(FastNewContext, HydrogenCodeStub);
725 }; 725 };
726 726
727 727
728 // TODO(turbofan): This stub should be possible to write in TurboFan
729 // using the CodeStubAssembler very soon in a way that is as efficient
730 // and easy as the current handwritten version, which is partly a copy
731 // of the strict arguments object materialization code.
732 class FastNewRestParameterStub final : public PlatformCodeStub {
733 public:
734 explicit FastNewRestParameterStub(Isolate* isolate)
735 : PlatformCodeStub(isolate) {}
736
737 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewRestParameter);
738 DEFINE_PLATFORM_CODE_STUB(FastNewRestParameter, PlatformCodeStub);
739 };
740
741
728 class FastCloneRegExpStub final : public HydrogenCodeStub { 742 class FastCloneRegExpStub final : public HydrogenCodeStub {
729 public: 743 public:
730 explicit FastCloneRegExpStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 744 explicit FastCloneRegExpStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
731 745
732 private: 746 private:
733 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneRegExp); 747 DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneRegExp);
734 DEFINE_HYDROGEN_CODE_STUB(FastCloneRegExp, HydrogenCodeStub); 748 DEFINE_HYDROGEN_CODE_STUB(FastCloneRegExp, HydrogenCodeStub);
735 }; 749 };
736 750
737 751
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1847 void GenerateNewSloppySlow(MacroAssembler* masm); 1861 void GenerateNewSloppySlow(MacroAssembler* masm);
1848 1862
1849 void PrintName(std::ostream& os) const override; // NOLINT 1863 void PrintName(std::ostream& os) const override; // NOLINT
1850 1864
1851 class TypeBits : public BitField<Type, 0, 2> {}; 1865 class TypeBits : public BitField<Type, 0, 2> {};
1852 1866
1853 DEFINE_PLATFORM_CODE_STUB(ArgumentsAccess, PlatformCodeStub); 1867 DEFINE_PLATFORM_CODE_STUB(ArgumentsAccess, PlatformCodeStub);
1854 }; 1868 };
1855 1869
1856 1870
1857 class RestParamAccessStub : public PlatformCodeStub {
1858 public:
1859 explicit RestParamAccessStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
1860
1861 private:
1862 void GenerateNew(MacroAssembler* masm);
1863
1864 void PrintName(std::ostream& os) const override; // NOLINT
1865
1866 DEFINE_CALL_INTERFACE_DESCRIPTOR(RestParamAccess);
1867 DEFINE_PLATFORM_CODE_STUB(RestParamAccess, PlatformCodeStub);
1868 };
1869
1870
1871 class RegExpExecStub: public PlatformCodeStub { 1871 class RegExpExecStub: public PlatformCodeStub {
1872 public: 1872 public:
1873 explicit RegExpExecStub(Isolate* isolate) : PlatformCodeStub(isolate) { } 1873 explicit RegExpExecStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
1874 1874
1875 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly); 1875 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly);
1876 DEFINE_PLATFORM_CODE_STUB(RegExpExec, PlatformCodeStub); 1876 DEFINE_PLATFORM_CODE_STUB(RegExpExec, PlatformCodeStub);
1877 }; 1877 };
1878 1878
1879 1879
1880 class RegExpConstructResultStub final : public HydrogenCodeStub { 1880 class RegExpConstructResultStub final : public HydrogenCodeStub {
(...skipping 1107 matching lines...) Expand 10 before | Expand all | Expand 10 after
2988 #undef DEFINE_HYDROGEN_CODE_STUB 2988 #undef DEFINE_HYDROGEN_CODE_STUB
2989 #undef DEFINE_CODE_STUB 2989 #undef DEFINE_CODE_STUB
2990 #undef DEFINE_CODE_STUB_BASE 2990 #undef DEFINE_CODE_STUB_BASE
2991 2991
2992 extern Representation RepresentationFromType(Type* type); 2992 extern Representation RepresentationFromType(Type* type);
2993 2993
2994 } // namespace internal 2994 } // namespace internal
2995 } // namespace v8 2995 } // namespace v8
2996 2996
2997 #endif // V8_CODE_STUBS_H_ 2997 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stubs.cc » ('j') | src/interpreter/bytecode-array-builder.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698