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

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

Issue 2403483002: [stubs] Port KeyedStoreIC dispatcher to TurboFan (Closed)
Patch Set: addressed comments Created 4 years, 2 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-stub-assembler.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/code-stub-assembler.h" 10 #include "src/code-stub-assembler.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 V(StoreScriptContextField) \ 119 V(StoreScriptContextField) \
120 V(NumberToString) \ 120 V(NumberToString) \
121 V(StringAdd) \ 121 V(StringAdd) \
122 V(GetProperty) \ 122 V(GetProperty) \
123 V(LoadIC) \ 123 V(LoadIC) \
124 V(KeyedLoadICTF) \ 124 V(KeyedLoadICTF) \
125 V(StoreFastElement) \ 125 V(StoreFastElement) \
126 V(StoreField) \ 126 V(StoreField) \
127 V(StoreGlobal) \ 127 V(StoreGlobal) \
128 V(StoreIC) \ 128 V(StoreIC) \
129 V(KeyedStoreICTF) \
129 V(StoreInterceptor) \ 130 V(StoreInterceptor) \
130 V(StoreMap) \ 131 V(StoreMap) \
131 V(StoreTransition) \ 132 V(StoreTransition) \
132 V(LoadApiGetter) \ 133 V(LoadApiGetter) \
133 V(LoadIndexedInterceptor) \ 134 V(LoadIndexedInterceptor) \
134 V(GrowArrayElements) \ 135 V(GrowArrayElements) \
135 /* These are only called from FGC and */ \ 136 /* These are only called from FGC and */ \
136 /* can be removed when we use ignition */ \ 137 /* can be removed when we use ignition */ \
137 /* only */ \ 138 /* only */ \
138 V(LoadICTrampoline) \ 139 V(LoadICTrampoline) \
139 V(LoadGlobalICTrampoline) \ 140 V(LoadGlobalICTrampoline) \
140 V(KeyedLoadICTrampolineTF) \ 141 V(KeyedLoadICTrampolineTF) \
141 V(StoreICTrampoline) 142 V(StoreICTrampoline) \
143 V(KeyedStoreICTrampolineTF)
142 144
143 // List of code stubs only used on ARM 32 bits platforms. 145 // List of code stubs only used on ARM 32 bits platforms.
144 #if V8_TARGET_ARCH_ARM 146 #if V8_TARGET_ARCH_ARM
145 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry) 147 #define CODE_STUB_LIST_ARM(V) V(DirectCEntry)
146 148
147 #else 149 #else
148 #define CODE_STUB_LIST_ARM(V) 150 #define CODE_STUB_LIST_ARM(V)
149 #endif 151 #endif
150 152
151 // List of code stubs only used on ARM 64 bits platforms. 153 // List of code stubs only used on ARM 64 bits platforms.
(...skipping 1918 matching lines...) Expand 10 before | Expand all | Expand 10 after
2070 } 2072 }
2071 2073
2072 protected: 2074 protected:
2073 StoreICState state() const { return StoreICState(GetExtraICState()); } 2075 StoreICState state() const { return StoreICState(GetExtraICState()); }
2074 2076
2075 private: 2077 private:
2076 DEFINE_CALL_INTERFACE_DESCRIPTOR(Store); 2078 DEFINE_CALL_INTERFACE_DESCRIPTOR(Store);
2077 DEFINE_PLATFORM_CODE_STUB(KeyedStoreICTrampoline, PlatformCodeStub); 2079 DEFINE_PLATFORM_CODE_STUB(KeyedStoreICTrampoline, PlatformCodeStub);
2078 }; 2080 };
2079 2081
2082 class KeyedStoreICTrampolineTFStub : public StoreICTrampolineStub {
2083 public:
2084 KeyedStoreICTrampolineTFStub(Isolate* isolate, const StoreICState& state)
2085 : StoreICTrampolineStub(isolate, state) {}
2086
2087 void GenerateAssembly(CodeStubAssembler* assembler) const override;
2088
2089 Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; }
2090
2091 DEFINE_CODE_STUB(KeyedStoreICTrampolineTF, StoreICTrampolineStub);
2092 };
2080 2093
2081 class CallICTrampolineStub : public PlatformCodeStub { 2094 class CallICTrampolineStub : public PlatformCodeStub {
2082 public: 2095 public:
2083 CallICTrampolineStub(Isolate* isolate, const CallICState& state) 2096 CallICTrampolineStub(Isolate* isolate, const CallICState& state)
2084 : PlatformCodeStub(isolate) { 2097 : PlatformCodeStub(isolate) {
2085 minor_key_ = state.GetExtraICState(); 2098 minor_key_ = state.GetExtraICState();
2086 } 2099 }
2087 2100
2088 Code::Kind GetCodeKind() const override { return Code::CALL_IC; } 2101 Code::Kind GetCodeKind() const override { return Code::CALL_IC; }
2089 2102
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
2175 return static_cast<ExtraICState>(minor_key_); 2188 return static_cast<ExtraICState>(minor_key_);
2176 } 2189 }
2177 2190
2178 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector); 2191 DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreWithVector);
2179 DEFINE_PLATFORM_CODE_STUB(KeyedStoreIC, PlatformCodeStub); 2192 DEFINE_PLATFORM_CODE_STUB(KeyedStoreIC, PlatformCodeStub);
2180 2193
2181 protected: 2194 protected:
2182 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2195 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2183 }; 2196 };
2184 2197
2198 class KeyedStoreICTFStub : public StoreICStub {
2199 public:
2200 KeyedStoreICTFStub(Isolate* isolate, const StoreICState& state)
2201 : StoreICStub(isolate, state) {}
2202
2203 void GenerateAssembly(CodeStubAssembler* assembler) const override;
2204
2205 Code::Kind GetCodeKind() const override { return Code::KEYED_STORE_IC; }
2206
2207 DEFINE_CODE_STUB(KeyedStoreICTF, StoreICStub);
2208 };
2185 2209
2186 class DoubleToIStub : public PlatformCodeStub { 2210 class DoubleToIStub : public PlatformCodeStub {
2187 public: 2211 public:
2188 DoubleToIStub(Isolate* isolate, Register source, Register destination, 2212 DoubleToIStub(Isolate* isolate, Register source, Register destination,
2189 int offset, bool is_truncating, bool skip_fastpath = false) 2213 int offset, bool is_truncating, bool skip_fastpath = false)
2190 : PlatformCodeStub(isolate) { 2214 : PlatformCodeStub(isolate) {
2191 minor_key_ = SourceRegisterBits::encode(source.code()) | 2215 minor_key_ = SourceRegisterBits::encode(source.code()) |
2192 DestinationRegisterBits::encode(destination.code()) | 2216 DestinationRegisterBits::encode(destination.code()) |
2193 OffsetBits::encode(offset) | 2217 OffsetBits::encode(offset) |
2194 IsTruncatingBits::encode(is_truncating) | 2218 IsTruncatingBits::encode(is_truncating) |
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
2748 #undef DEFINE_HYDROGEN_CODE_STUB 2772 #undef DEFINE_HYDROGEN_CODE_STUB
2749 #undef DEFINE_CODE_STUB 2773 #undef DEFINE_CODE_STUB
2750 #undef DEFINE_CODE_STUB_BASE 2774 #undef DEFINE_CODE_STUB_BASE
2751 2775
2752 extern Representation RepresentationFromMachineType(MachineType type); 2776 extern Representation RepresentationFromMachineType(MachineType type);
2753 2777
2754 } // namespace internal 2778 } // namespace internal
2755 } // namespace v8 2779 } // namespace v8
2756 2780
2757 #endif // V8_CODE_STUBS_H_ 2781 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/code-stub-assembler.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698