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

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

Issue 1144063002: Cleanup interface descriptors to reflect that vectors are part of loads. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixes for test failures. Created 5 years, 7 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
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 V(LoadDictionaryElement) \ 78 V(LoadDictionaryElement) \
79 V(NameDictionaryLookup) \ 79 V(NameDictionaryLookup) \
80 V(NumberToString) \ 80 V(NumberToString) \
81 V(Typeof) \ 81 V(Typeof) \
82 V(RegExpConstructResult) \ 82 V(RegExpConstructResult) \
83 V(StoreFastElement) \ 83 V(StoreFastElement) \
84 V(StoreScriptContextField) \ 84 V(StoreScriptContextField) \
85 V(StringAdd) \ 85 V(StringAdd) \
86 V(ToBoolean) \ 86 V(ToBoolean) \
87 V(TransitionElementsKind) \ 87 V(TransitionElementsKind) \
88 V(VectorRawKeyedLoad) \ 88 V(KeyedLoadIC) \
89 V(VectorRawLoad) \ 89 V(LoadIC) \
90 /* TurboFanCodeStubs */ \ 90 /* TurboFanCodeStubs */ \
91 V(StringLengthTF) \ 91 V(StringLengthTF) \
92 V(MathFloor) \ 92 V(MathFloor) \
93 /* IC Handler stubs */ \ 93 /* IC Handler stubs */ \
94 V(ArrayBufferViewLoadField) \ 94 V(ArrayBufferViewLoadField) \
95 V(LoadConstant) \ 95 V(LoadConstant) \
96 V(LoadFastElement) \ 96 V(LoadFastElement) \
97 V(LoadField) \ 97 V(LoadField) \
98 V(KeyedLoadSloppyArguments) \ 98 V(KeyedLoadSloppyArguments) \
99 V(StoreField) \ 99 V(StoreField) \
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 }; 620 };
621 621
622 622
623 class MathFloorStub : public TurboFanCodeStub { 623 class MathFloorStub : public TurboFanCodeStub {
624 DEFINE_TURBOFAN_CODE_STUB(MathFloor, TurboFanCodeStub, 624 DEFINE_TURBOFAN_CODE_STUB(MathFloor, TurboFanCodeStub,
625 MathRoundVariantDescriptor, 1); 625 MathRoundVariantDescriptor, 1);
626 }; 626 };
627 627
628 628
629 class StringLengthTFStub : public TurboFanCodeStub { 629 class StringLengthTFStub : public TurboFanCodeStub {
630 DEFINE_TURBOFAN_CODE_STUB(StringLengthTF, TurboFanCodeStub, LoadDescriptor, 630 DEFINE_TURBOFAN_CODE_STUB(StringLengthTF, TurboFanCodeStub,
631 0); 631 LoadWithVectorDescriptor, 0);
632 632
633 public: 633 public:
634 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 634 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
635 InlineCacheState GetICState() const override { return MONOMORPHIC; } 635 InlineCacheState GetICState() const override { return MONOMORPHIC; }
636 ExtraICState GetExtraICState() const override { return Code::LOAD_IC; } 636 ExtraICState GetExtraICState() const override { return Code::LOAD_IC; }
637 }; 637 };
638 638
639 639
640 class NumberToStringStub final : public HydrogenCodeStub { 640 class NumberToStringStub final : public HydrogenCodeStub {
641 public: 641 public:
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 public: 979 public:
980 explicit FunctionPrototypeStub(Isolate* isolate) 980 explicit FunctionPrototypeStub(Isolate* isolate)
981 : PlatformCodeStub(isolate) {} 981 : PlatformCodeStub(isolate) {}
982 982
983 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 983 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
984 984
985 // TODO(mvstanton): only the receiver register is accessed. When this is 985 // TODO(mvstanton): only the receiver register is accessed. When this is
986 // translated to a hydrogen code stub, a new CallInterfaceDescriptor 986 // translated to a hydrogen code stub, a new CallInterfaceDescriptor
987 // should be created that just uses that register for more efficient code. 987 // should be created that just uses that register for more efficient code.
988 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 988 CallInterfaceDescriptor GetCallInterfaceDescriptor() override {
989 return VectorLoadICDescriptor(isolate()); 989 return LoadWithVectorDescriptor(isolate());
990 } 990 }
991 991
992 DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub); 992 DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub);
993 }; 993 };
994 994
995 995
996 // TODO(mvstanton): Translate to hydrogen code stub. 996 // TODO(mvstanton): Translate to hydrogen code stub.
997 class LoadIndexedInterceptorStub : public PlatformCodeStub { 997 class LoadIndexedInterceptorStub : public PlatformCodeStub {
998 public: 998 public:
999 explicit LoadIndexedInterceptorStub(Isolate* isolate) 999 explicit LoadIndexedInterceptorStub(Isolate* isolate)
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after
2070 DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator); 2070 DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator);
2071 }; 2071 };
2072 2072
2073 2073
2074 class LoadDictionaryElementStub : public HydrogenCodeStub { 2074 class LoadDictionaryElementStub : public HydrogenCodeStub {
2075 public: 2075 public:
2076 explicit LoadDictionaryElementStub(Isolate* isolate) 2076 explicit LoadDictionaryElementStub(Isolate* isolate)
2077 : HydrogenCodeStub(isolate) {} 2077 : HydrogenCodeStub(isolate) {}
2078 2078
2079 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 2079 CallInterfaceDescriptor GetCallInterfaceDescriptor() override {
2080 return VectorLoadICDescriptor(isolate()); 2080 return LoadWithVectorDescriptor(isolate());
2081 } 2081 }
2082 2082
2083 DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub); 2083 DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub);
2084 }; 2084 };
2085 2085
2086 2086
2087 class KeyedLoadGenericStub : public HydrogenCodeStub { 2087 class KeyedLoadGenericStub : public HydrogenCodeStub {
2088 public: 2088 public:
2089 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 2089 explicit KeyedLoadGenericStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
2090 2090
2091 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } 2091 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
2092 InlineCacheState GetICState() const override { return GENERIC; } 2092 InlineCacheState GetICState() const override { return GENERIC; }
2093 2093
2094 // Since KeyedLoadGeneric stub doesn't miss (simply calls runtime), it
2095 // doesn't need to use the VectorLoadICDescriptor for the case when
2096 // flag --vector-ics is true.
2097 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load); 2094 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
2098 2095
2099 DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub); 2096 DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub);
2100 }; 2097 };
2101 2098
2102 2099
2103 class LoadICTrampolineStub : public PlatformCodeStub { 2100 class LoadICTrampolineStub : public PlatformCodeStub {
2104 public: 2101 public:
2105 LoadICTrampolineStub(Isolate* isolate, const LoadICState& state) 2102 LoadICTrampolineStub(Isolate* isolate, const LoadICState& state)
2106 : PlatformCodeStub(isolate) { 2103 : PlatformCodeStub(isolate) {
2107 minor_key_ = state.GetExtraICState(); 2104 minor_key_ = state.GetExtraICState();
2108 } 2105 }
2109 2106
2110 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } 2107 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
2111 2108
2112 InlineCacheState GetICState() const final { return DEFAULT; } 2109 InlineCacheState GetICState() const final { return DEFAULT; }
2113 2110
2114 ExtraICState GetExtraICState() const final { 2111 ExtraICState GetExtraICState() const final {
2115 return static_cast<ExtraICState>(minor_key_); 2112 return static_cast<ExtraICState>(minor_key_);
2116 } 2113 }
2117 2114
2118 private: 2115 private:
2119 LoadICState state() const { 2116 LoadICState state() const {
2120 return LoadICState(static_cast<ExtraICState>(minor_key_)); 2117 return LoadICState(static_cast<ExtraICState>(minor_key_));
2121 } 2118 }
2122 2119
2123 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadICTrampoline); 2120 DEFINE_CALL_INTERFACE_DESCRIPTOR(Load);
2124 DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub); 2121 DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub);
2125 }; 2122 };
2126 2123
2127 2124
2128 class KeyedLoadICTrampolineStub : public LoadICTrampolineStub { 2125 class KeyedLoadICTrampolineStub : public LoadICTrampolineStub {
2129 public: 2126 public:
2130 explicit KeyedLoadICTrampolineStub(Isolate* isolate) 2127 explicit KeyedLoadICTrampolineStub(Isolate* isolate)
2131 : LoadICTrampolineStub(isolate, LoadICState(0)) {} 2128 : LoadICTrampolineStub(isolate, LoadICState(0)) {}
2132 2129
2133 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } 2130 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
(...skipping 30 matching lines...) Expand all
2164 class CallIC_ArrayTrampolineStub : public CallICTrampolineStub { 2161 class CallIC_ArrayTrampolineStub : public CallICTrampolineStub {
2165 public: 2162 public:
2166 CallIC_ArrayTrampolineStub(Isolate* isolate, const CallICState& state) 2163 CallIC_ArrayTrampolineStub(Isolate* isolate, const CallICState& state)
2167 : CallICTrampolineStub(isolate, state) {} 2164 : CallICTrampolineStub(isolate, state) {}
2168 2165
2169 private: 2166 private:
2170 DEFINE_PLATFORM_CODE_STUB(CallIC_ArrayTrampoline, CallICTrampolineStub); 2167 DEFINE_PLATFORM_CODE_STUB(CallIC_ArrayTrampoline, CallICTrampolineStub);
2171 }; 2168 };
2172 2169
2173 2170
2174 class VectorRawLoadStub : public PlatformCodeStub { 2171 class LoadICStub : public PlatformCodeStub {
2175 public: 2172 public:
2176 explicit VectorRawLoadStub(Isolate* isolate, const LoadICState& state) 2173 explicit LoadICStub(Isolate* isolate, const LoadICState& state)
2177 : PlatformCodeStub(isolate) { 2174 : PlatformCodeStub(isolate) {
2178 minor_key_ = state.GetExtraICState(); 2175 minor_key_ = state.GetExtraICState();
2179 } 2176 }
2180 2177
2181 void GenerateForTrampoline(MacroAssembler* masm); 2178 void GenerateForTrampoline(MacroAssembler* masm);
2182 2179
2183 virtual Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } 2180 virtual Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
2184 2181
2185 virtual InlineCacheState GetICState() const final override { return DEFAULT; } 2182 virtual InlineCacheState GetICState() const final override { return DEFAULT; }
2186 2183
2187 virtual ExtraICState GetExtraICState() const final override { 2184 virtual ExtraICState GetExtraICState() const final override {
2188 return static_cast<ExtraICState>(minor_key_); 2185 return static_cast<ExtraICState>(minor_key_);
2189 } 2186 }
2190 2187
2191 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadIC); 2188 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2192 DEFINE_PLATFORM_CODE_STUB(VectorRawLoad, PlatformCodeStub); 2189 DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub);
2193 2190
2194 protected: 2191 protected:
2195 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2192 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2196 }; 2193 };
2197 2194
2198 2195
2199 class VectorRawKeyedLoadStub : public PlatformCodeStub { 2196 class KeyedLoadICStub : public PlatformCodeStub {
2200 public: 2197 public:
2201 explicit VectorRawKeyedLoadStub(Isolate* isolate) 2198 explicit KeyedLoadICStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2202 : PlatformCodeStub(isolate) {}
2203 2199
2204 void GenerateForTrampoline(MacroAssembler* masm); 2200 void GenerateForTrampoline(MacroAssembler* masm);
2205 2201
2206 virtual Code::Kind GetCodeKind() const override { 2202 virtual Code::Kind GetCodeKind() const override {
2207 return Code::KEYED_LOAD_IC; 2203 return Code::KEYED_LOAD_IC;
2208 } 2204 }
2209 2205
2210 virtual InlineCacheState GetICState() const final override { return DEFAULT; } 2206 virtual InlineCacheState GetICState() const final override { return DEFAULT; }
2211 2207
2212 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadIC); 2208 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2213 DEFINE_PLATFORM_CODE_STUB(VectorRawKeyedLoad, PlatformCodeStub); 2209 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub);
2214 2210
2215 protected: 2211 protected:
2216 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2212 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2217 }; 2213 };
2218 2214
2219 2215
2220 class DoubleToIStub : public PlatformCodeStub { 2216 class DoubleToIStub : public PlatformCodeStub {
2221 public: 2217 public:
2222 DoubleToIStub(Isolate* isolate, Register source, Register destination, 2218 DoubleToIStub(Isolate* isolate, Register source, Register destination,
2223 int offset, bool is_truncating, bool skip_fastpath = false) 2219 int offset, bool is_truncating, bool skip_fastpath = false)
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
2856 2852
2857 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR 2853 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR
2858 #undef DEFINE_PLATFORM_CODE_STUB 2854 #undef DEFINE_PLATFORM_CODE_STUB
2859 #undef DEFINE_HANDLER_CODE_STUB 2855 #undef DEFINE_HANDLER_CODE_STUB
2860 #undef DEFINE_HYDROGEN_CODE_STUB 2856 #undef DEFINE_HYDROGEN_CODE_STUB
2861 #undef DEFINE_CODE_STUB 2857 #undef DEFINE_CODE_STUB
2862 #undef DEFINE_CODE_STUB_BASE 2858 #undef DEFINE_CODE_STUB_BASE
2863 } } // namespace v8::internal 2859 } } // namespace v8::internal
2864 2860
2865 #endif // V8_CODE_STUBS_H_ 2861 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-factory.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698