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

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

Issue 1427803003: Vector ICs: Allow for more IC kinds. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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 | « no previous file | src/globals.h » ('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 957 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 968
969 class CallICStub: public PlatformCodeStub { 969 class CallICStub: public PlatformCodeStub {
970 public: 970 public:
971 CallICStub(Isolate* isolate, const CallICState& state) 971 CallICStub(Isolate* isolate, const CallICState& state)
972 : PlatformCodeStub(isolate) { 972 : PlatformCodeStub(isolate) {
973 minor_key_ = state.GetExtraICState(); 973 minor_key_ = state.GetExtraICState();
974 } 974 }
975 975
976 Code::Kind GetCodeKind() const override { return Code::CALL_IC; } 976 Code::Kind GetCodeKind() const override { return Code::CALL_IC; }
977 977
978 InlineCacheState GetICState() const override { return DEFAULT; } 978 InlineCacheState GetICState() const override { return GENERIC; }
979 979
980 ExtraICState GetExtraICState() const final { 980 ExtraICState GetExtraICState() const final {
981 return static_cast<ExtraICState>(minor_key_); 981 return static_cast<ExtraICState>(minor_key_);
982 } 982 }
983 983
984 protected: 984 protected:
985 bool CallAsMethod() const { 985 bool CallAsMethod() const {
986 return state().call_type() == CallICState::METHOD; 986 return state().call_type() == CallICState::METHOD;
987 } 987 }
988 988
(...skipping 1262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2251 2251
2252 class LoadICTrampolineStub : public PlatformCodeStub { 2252 class LoadICTrampolineStub : public PlatformCodeStub {
2253 public: 2253 public:
2254 LoadICTrampolineStub(Isolate* isolate, const LoadICState& state) 2254 LoadICTrampolineStub(Isolate* isolate, const LoadICState& state)
2255 : PlatformCodeStub(isolate) { 2255 : PlatformCodeStub(isolate) {
2256 minor_key_ = state.GetExtraICState(); 2256 minor_key_ = state.GetExtraICState();
2257 } 2257 }
2258 2258
2259 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } 2259 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
2260 2260
2261 InlineCacheState GetICState() const final { return DEFAULT; } 2261 InlineCacheState GetICState() const final { return GENERIC; }
2262 2262
2263 ExtraICState GetExtraICState() const final { 2263 ExtraICState GetExtraICState() const final {
2264 return static_cast<ExtraICState>(minor_key_); 2264 return static_cast<ExtraICState>(minor_key_);
2265 } 2265 }
2266 2266
2267 protected: 2267 protected:
2268 LoadICState state() const { 2268 LoadICState state() const {
2269 return LoadICState(static_cast<ExtraICState>(minor_key_)); 2269 return LoadICState(static_cast<ExtraICState>(minor_key_));
2270 } 2270 }
2271 2271
(...skipping 15 matching lines...) Expand all
2287 2287
2288 class VectorStoreICTrampolineStub : public PlatformCodeStub { 2288 class VectorStoreICTrampolineStub : public PlatformCodeStub {
2289 public: 2289 public:
2290 VectorStoreICTrampolineStub(Isolate* isolate, const StoreICState& state) 2290 VectorStoreICTrampolineStub(Isolate* isolate, const StoreICState& state)
2291 : PlatformCodeStub(isolate) { 2291 : PlatformCodeStub(isolate) {
2292 minor_key_ = state.GetExtraICState(); 2292 minor_key_ = state.GetExtraICState();
2293 } 2293 }
2294 2294
2295 Code::Kind GetCodeKind() const override { return Code::STORE_IC; } 2295 Code::Kind GetCodeKind() const override { return Code::STORE_IC; }
2296 2296
2297 InlineCacheState GetICState() const final { return DEFAULT; } 2297 InlineCacheState GetICState() const final { return GENERIC; }
2298 2298
2299 ExtraICState GetExtraICState() const final { 2299 ExtraICState GetExtraICState() const final {
2300 return static_cast<ExtraICState>(minor_key_); 2300 return static_cast<ExtraICState>(minor_key_);
2301 } 2301 }
2302 2302
2303 protected: 2303 protected:
2304 StoreICState state() const { 2304 StoreICState state() const {
2305 return StoreICState(static_cast<ExtraICState>(minor_key_)); 2305 return StoreICState(static_cast<ExtraICState>(minor_key_));
2306 } 2306 }
2307 2307
(...skipping 17 matching lines...) Expand all
2325 2325
2326 class CallICTrampolineStub : public PlatformCodeStub { 2326 class CallICTrampolineStub : public PlatformCodeStub {
2327 public: 2327 public:
2328 CallICTrampolineStub(Isolate* isolate, const CallICState& state) 2328 CallICTrampolineStub(Isolate* isolate, const CallICState& state)
2329 : PlatformCodeStub(isolate) { 2329 : PlatformCodeStub(isolate) {
2330 minor_key_ = state.GetExtraICState(); 2330 minor_key_ = state.GetExtraICState();
2331 } 2331 }
2332 2332
2333 Code::Kind GetCodeKind() const override { return Code::CALL_IC; } 2333 Code::Kind GetCodeKind() const override { return Code::CALL_IC; }
2334 2334
2335 InlineCacheState GetICState() const final { return DEFAULT; } 2335 InlineCacheState GetICState() const final { return GENERIC; }
2336 2336
2337 ExtraICState GetExtraICState() const final { 2337 ExtraICState GetExtraICState() const final {
2338 return static_cast<ExtraICState>(minor_key_); 2338 return static_cast<ExtraICState>(minor_key_);
2339 } 2339 }
2340 2340
2341 protected: 2341 protected:
2342 CallICState state() const { 2342 CallICState state() const {
2343 return CallICState(static_cast<ExtraICState>(minor_key_)); 2343 return CallICState(static_cast<ExtraICState>(minor_key_));
2344 } 2344 }
2345 2345
2346 DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback); 2346 DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback);
2347 DEFINE_PLATFORM_CODE_STUB(CallICTrampoline, PlatformCodeStub); 2347 DEFINE_PLATFORM_CODE_STUB(CallICTrampoline, PlatformCodeStub);
2348 }; 2348 };
2349 2349
2350 2350
2351 class LoadICStub : public PlatformCodeStub { 2351 class LoadICStub : public PlatformCodeStub {
2352 public: 2352 public:
2353 explicit LoadICStub(Isolate* isolate, const LoadICState& state) 2353 explicit LoadICStub(Isolate* isolate, const LoadICState& state)
2354 : PlatformCodeStub(isolate) { 2354 : PlatformCodeStub(isolate) {
2355 minor_key_ = state.GetExtraICState(); 2355 minor_key_ = state.GetExtraICState();
2356 } 2356 }
2357 2357
2358 void GenerateForTrampoline(MacroAssembler* masm); 2358 void GenerateForTrampoline(MacroAssembler* masm);
2359 2359
2360 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } 2360 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
2361 InlineCacheState GetICState() const final { return DEFAULT; } 2361 InlineCacheState GetICState() const final { return GENERIC; }
2362 ExtraICState GetExtraICState() const final { 2362 ExtraICState GetExtraICState() const final {
2363 return static_cast<ExtraICState>(minor_key_); 2363 return static_cast<ExtraICState>(minor_key_);
2364 } 2364 }
2365 2365
2366 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); 2366 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2367 DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub); 2367 DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub);
2368 2368
2369 protected: 2369 protected:
2370 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2370 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2371 }; 2371 };
2372 2372
2373 2373
2374 class KeyedLoadICStub : public PlatformCodeStub { 2374 class KeyedLoadICStub : public PlatformCodeStub {
2375 public: 2375 public:
2376 explicit KeyedLoadICStub(Isolate* isolate, const LoadICState& state) 2376 explicit KeyedLoadICStub(Isolate* isolate, const LoadICState& state)
2377 : PlatformCodeStub(isolate) { 2377 : PlatformCodeStub(isolate) {
2378 minor_key_ = state.GetExtraICState(); 2378 minor_key_ = state.GetExtraICState();
2379 } 2379 }
2380 2380
2381 void GenerateForTrampoline(MacroAssembler* masm); 2381 void GenerateForTrampoline(MacroAssembler* masm);
2382 2382
2383 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; } 2383 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
2384 InlineCacheState GetICState() const final { return DEFAULT; } 2384 InlineCacheState GetICState() const final { return GENERIC; }
2385 ExtraICState GetExtraICState() const final { 2385 ExtraICState GetExtraICState() const final {
2386 return static_cast<ExtraICState>(minor_key_); 2386 return static_cast<ExtraICState>(minor_key_);
2387 } 2387 }
2388 2388
2389 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); 2389 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2390 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); 2390 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub);
2391 2391
2392 protected: 2392 protected:
2393 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2393 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2394 }; 2394 };
2395 2395
2396 2396
2397 class VectorStoreICStub : public PlatformCodeStub { 2397 class VectorStoreICStub : public PlatformCodeStub {
2398 public: 2398 public:
2399 VectorStoreICStub(Isolate* isolate, const StoreICState& state) 2399 VectorStoreICStub(Isolate* isolate, const StoreICState& state)
2400 : PlatformCodeStub(isolate) { 2400 : PlatformCodeStub(isolate) {
2401 minor_key_ = state.GetExtraICState(); 2401 minor_key_ = state.GetExtraICState();
2402 } 2402 }
2403 2403
2404 void GenerateForTrampoline(MacroAssembler* masm); 2404 void GenerateForTrampoline(MacroAssembler* masm);
2405 2405
2406 Code::Kind GetCodeKind() const final { return Code::STORE_IC; } 2406 Code::Kind GetCodeKind() const final { return Code::STORE_IC; }
2407 InlineCacheState GetICState() const final { return DEFAULT; } 2407 InlineCacheState GetICState() const final { return GENERIC; }
2408 ExtraICState GetExtraICState() const final { 2408 ExtraICState GetExtraICState() const final {
2409 return static_cast<ExtraICState>(minor_key_); 2409 return static_cast<ExtraICState>(minor_key_);
2410 } 2410 }
2411 2411
2412 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC); 2412 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC);
2413 DEFINE_PLATFORM_CODE_STUB(VectorStoreIC, PlatformCodeStub); 2413 DEFINE_PLATFORM_CODE_STUB(VectorStoreIC, PlatformCodeStub);
2414 2414
2415 protected: 2415 protected:
2416 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2416 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2417 }; 2417 };
2418 2418
2419 2419
2420 class VectorKeyedStoreICStub : public PlatformCodeStub { 2420 class VectorKeyedStoreICStub : public PlatformCodeStub {
2421 public: 2421 public:
2422 VectorKeyedStoreICStub(Isolate* isolate, const StoreICState& state) 2422 VectorKeyedStoreICStub(Isolate* isolate, const StoreICState& state)
2423 : PlatformCodeStub(isolate) { 2423 : PlatformCodeStub(isolate) {
2424 minor_key_ = state.GetExtraICState(); 2424 minor_key_ = state.GetExtraICState();
2425 } 2425 }
2426 2426
2427 void GenerateForTrampoline(MacroAssembler* masm); 2427 void GenerateForTrampoline(MacroAssembler* masm);
2428 2428
2429 Code::Kind GetCodeKind() const final { return Code::KEYED_STORE_IC; } 2429 Code::Kind GetCodeKind() const final { return Code::KEYED_STORE_IC; }
2430 InlineCacheState GetICState() const final { return DEFAULT; } 2430 InlineCacheState GetICState() const final { return GENERIC; }
2431 virtual ExtraICState GetExtraICState() const final { 2431 virtual ExtraICState GetExtraICState() const final {
2432 return static_cast<ExtraICState>(minor_key_); 2432 return static_cast<ExtraICState>(minor_key_);
2433 } 2433 }
2434 2434
2435 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC); 2435 DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorStoreIC);
2436 DEFINE_PLATFORM_CODE_STUB(VectorKeyedStoreIC, PlatformCodeStub); 2436 DEFINE_PLATFORM_CODE_STUB(VectorKeyedStoreIC, PlatformCodeStub);
2437 2437
2438 protected: 2438 protected:
2439 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2439 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2440 }; 2440 };
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
3119 #undef DEFINE_HYDROGEN_CODE_STUB 3119 #undef DEFINE_HYDROGEN_CODE_STUB
3120 #undef DEFINE_CODE_STUB 3120 #undef DEFINE_CODE_STUB
3121 #undef DEFINE_CODE_STUB_BASE 3121 #undef DEFINE_CODE_STUB_BASE
3122 3122
3123 extern Representation RepresentationFromType(Type* type); 3123 extern Representation RepresentationFromType(Type* type);
3124 3124
3125 } // namespace internal 3125 } // namespace internal
3126 } // namespace v8 3126 } // namespace v8
3127 3127
3128 #endif // V8_CODE_STUBS_H_ 3128 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « no previous file | src/globals.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698