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

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

Issue 535873002: Encapsulate megamorphic load/tail-call in hydrogen (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/arm64/lithium-codegen-arm64.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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 V(FastCloneShallowArray) \ 60 V(FastCloneShallowArray) \
61 V(FastCloneShallowObject) \ 61 V(FastCloneShallowObject) \
62 V(FastNewClosure) \ 62 V(FastNewClosure) \
63 V(FastNewContext) \ 63 V(FastNewContext) \
64 V(InternalArrayNArgumentsConstructor) \ 64 V(InternalArrayNArgumentsConstructor) \
65 V(InternalArrayNoArgumentConstructor) \ 65 V(InternalArrayNoArgumentConstructor) \
66 V(InternalArraySingleArgumentConstructor) \ 66 V(InternalArraySingleArgumentConstructor) \
67 V(KeyedLoadGeneric) \ 67 V(KeyedLoadGeneric) \
68 V(LoadDictionaryElement) \ 68 V(LoadDictionaryElement) \
69 V(LoadFastElement) \ 69 V(LoadFastElement) \
70 V(MegamorphicLoad) \
70 V(NameDictionaryLookup) \ 71 V(NameDictionaryLookup) \
71 V(NumberToString) \ 72 V(NumberToString) \
72 V(RegExpConstructResult) \ 73 V(RegExpConstructResult) \
73 V(StoreFastElement) \ 74 V(StoreFastElement) \
74 V(StringAdd) \ 75 V(StringAdd) \
75 V(ToBoolean) \ 76 V(ToBoolean) \
76 V(ToNumber) \ 77 V(ToNumber) \
77 V(TransitionElementsKind) \ 78 V(TransitionElementsKind) \
78 V(VectorKeyedLoad) \ 79 V(VectorKeyedLoad) \
79 V(VectorLoad) \ 80 V(VectorLoad) \
(...skipping 1646 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 : LoadICTrampolineStub(isolate, LoadIC::State(0)) {} 1727 : LoadICTrampolineStub(isolate, LoadIC::State(0)) {}
1727 1728
1728 virtual Code::Kind GetCodeKind() const OVERRIDE { 1729 virtual Code::Kind GetCodeKind() const OVERRIDE {
1729 return Code::KEYED_LOAD_IC; 1730 return Code::KEYED_LOAD_IC;
1730 } 1731 }
1731 1732
1732 DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub); 1733 DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub);
1733 }; 1734 };
1734 1735
1735 1736
1737 class MegamorphicLoadStub : public HydrogenCodeStub {
1738 public:
1739 MegamorphicLoadStub(Isolate* isolate, const LoadIC::State& state)
1740 : HydrogenCodeStub(isolate) {
1741 set_sub_minor_key(state.GetExtraICState());
1742 }
1743
1744 virtual Code::Kind GetCodeKind() const OVERRIDE { return Code::LOAD_IC; }
1745
1746 virtual InlineCacheState GetICState() const FINAL OVERRIDE {
1747 return MEGAMORPHIC;
1748 }
1749
1750 virtual ExtraICState GetExtraICState() const FINAL OVERRIDE {
1751 return static_cast<ExtraICState>(sub_minor_key());
1752 }
1753
1754 DEFINE_HYDROGEN_CODE_STUB(MegamorphicLoad, HydrogenCodeStub);
1755 };
1756
1757
1736 class VectorLoadStub : public HydrogenCodeStub { 1758 class VectorLoadStub : public HydrogenCodeStub {
1737 public: 1759 public:
1738 explicit VectorLoadStub(Isolate* isolate, const LoadIC::State& state) 1760 explicit VectorLoadStub(Isolate* isolate, const LoadIC::State& state)
1739 : HydrogenCodeStub(isolate) { 1761 : HydrogenCodeStub(isolate) {
1740 set_sub_minor_key(state.GetExtraICState()); 1762 set_sub_minor_key(state.GetExtraICState());
1741 } 1763 }
1742 1764
1743 virtual Code::Kind GetCodeKind() const OVERRIDE { return Code::LOAD_IC; } 1765 virtual Code::Kind GetCodeKind() const OVERRIDE { return Code::LOAD_IC; }
1744 1766
1745 virtual InlineCacheState GetICState() const FINAL OVERRIDE { 1767 virtual InlineCacheState GetICState() const FINAL OVERRIDE {
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
2296 2318
2297 2319
2298 #undef DEFINE_PLATFORM_CODE_STUB 2320 #undef DEFINE_PLATFORM_CODE_STUB
2299 #undef DEFINE_HANDLER_CODE_STUB 2321 #undef DEFINE_HANDLER_CODE_STUB
2300 #undef DEFINE_HYDROGEN_CODE_STUB 2322 #undef DEFINE_HYDROGEN_CODE_STUB
2301 #undef DEFINE_CODE_STUB 2323 #undef DEFINE_CODE_STUB
2302 #undef DEFINE_CODE_STUB_BASE 2324 #undef DEFINE_CODE_STUB_BASE
2303 } } // namespace v8::internal 2325 } } // namespace v8::internal
2304 2326
2305 #endif // V8_CODE_STUBS_H_ 2327 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/arm64/lithium-codegen-arm64.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698