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

Side by Side Diff: src/ia32/lithium-ia32.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/ia32/lithium-codegen-ia32.cc ('k') | src/ia32/lithium-ia32.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_IA32_LITHIUM_IA32_H_ 5 #ifndef V8_IA32_LITHIUM_IA32_H_
6 #define V8_IA32_LITHIUM_IA32_H_ 6 #define V8_IA32_LITHIUM_IA32_H_
7 7
8 #include "src/hydrogen.h" 8 #include "src/hydrogen.h"
9 #include "src/lithium.h" 9 #include "src/lithium.h"
10 #include "src/lithium-allocator.h" 10 #include "src/lithium-allocator.h"
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 V(StoreKeyed) \ 148 V(StoreKeyed) \
149 V(StoreKeyedGeneric) \ 149 V(StoreKeyedGeneric) \
150 V(StoreNamedField) \ 150 V(StoreNamedField) \
151 V(StoreNamedGeneric) \ 151 V(StoreNamedGeneric) \
152 V(StringAdd) \ 152 V(StringAdd) \
153 V(StringCharCodeAt) \ 153 V(StringCharCodeAt) \
154 V(StringCharFromCode) \ 154 V(StringCharFromCode) \
155 V(StringCompareAndBranch) \ 155 V(StringCompareAndBranch) \
156 V(SubI) \ 156 V(SubI) \
157 V(TaggedToI) \ 157 V(TaggedToI) \
158 V(TailCallThroughMegamorphicCache) \
158 V(ThisFunction) \ 159 V(ThisFunction) \
159 V(ToFastProperties) \ 160 V(ToFastProperties) \
160 V(TransitionElementsKind) \ 161 V(TransitionElementsKind) \
161 V(TrapAllocationMemento) \ 162 V(TrapAllocationMemento) \
162 V(Typeof) \ 163 V(Typeof) \
163 V(TypeofIsAndBranch) \ 164 V(TypeofIsAndBranch) \
164 V(Uint32ToDouble) \ 165 V(Uint32ToDouble) \
165 V(UnknownOSRValue) \ 166 V(UnknownOSRValue) \
166 V(WrapReceiver) 167 V(WrapReceiver)
167 168
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 inputs_[0] = context; 473 inputs_[0] = context;
473 } 474 }
474 475
475 LOperand* context() { return inputs_[0]; } 476 LOperand* context() { return inputs_[0]; }
476 477
477 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") 478 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
478 DECLARE_HYDROGEN_ACCESSOR(CallStub) 479 DECLARE_HYDROGEN_ACCESSOR(CallStub)
479 }; 480 };
480 481
481 482
483 class LTailCallThroughMegamorphicCache FINAL
484 : public LTemplateInstruction<0, 3, 0> {
485 public:
486 explicit LTailCallThroughMegamorphicCache(LOperand* context,
487 LOperand* receiver,
488 LOperand* name) {
489 inputs_[0] = context;
490 inputs_[1] = receiver;
491 inputs_[2] = name;
492 }
493
494 LOperand* context() { return inputs_[0]; }
495 LOperand* receiver() { return inputs_[1]; }
496 LOperand* name() { return inputs_[2]; }
497
498 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache,
499 "tail-call-through-megamorphic-cache")
500 DECLARE_HYDROGEN_ACCESSOR(TailCallThroughMegamorphicCache)
501 };
502
503
482 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> { 504 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> {
483 public: 505 public:
484 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 506 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE {
485 return false; 507 return false;
486 } 508 }
487 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") 509 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value")
488 }; 510 };
489 511
490 512
491 template<int I, int T> 513 template<int I, int T>
(...skipping 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 public: 1915 public:
1894 LCallWithDescriptor(CallInterfaceDescriptor descriptor, 1916 LCallWithDescriptor(CallInterfaceDescriptor descriptor,
1895 const ZoneList<LOperand*>& operands, Zone* zone) 1917 const ZoneList<LOperand*>& operands, Zone* zone)
1896 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) { 1918 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) {
1897 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length()); 1919 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length());
1898 inputs_.AddAll(operands, zone); 1920 inputs_.AddAll(operands, zone);
1899 } 1921 }
1900 1922
1901 LOperand* target() const { return inputs_[0]; } 1923 LOperand* target() const { return inputs_[0]; }
1902 1924
1925 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor)
1926
1903 private: 1927 private:
1904 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor") 1928 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
1905 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor)
1906 1929
1907 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1930 virtual void PrintDataTo(StringStream* stream) OVERRIDE;
1908 1931
1909 int arity() const { return hydrogen()->argument_count() - 1; } 1932 int arity() const { return hydrogen()->argument_count() - 1; }
1910 1933
1911 ZoneList<LOperand*> inputs_; 1934 ZoneList<LOperand*> inputs_;
1912 1935
1913 // Iterator support. 1936 // Iterator support.
1914 virtual int InputCount() FINAL OVERRIDE { return inputs_.length(); } 1937 virtual int InputCount() FINAL OVERRIDE { return inputs_.length(); }
1915 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; } 1938 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; }
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
2891 2914
2892 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2915 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2893 }; 2916 };
2894 2917
2895 #undef DECLARE_HYDROGEN_ACCESSOR 2918 #undef DECLARE_HYDROGEN_ACCESSOR
2896 #undef DECLARE_CONCRETE_INSTRUCTION 2919 #undef DECLARE_CONCRETE_INSTRUCTION
2897 2920
2898 } } // namespace v8::internal 2921 } } // namespace v8::internal
2899 2922
2900 #endif // V8_IA32_LITHIUM_IA32_H_ 2923 #endif // V8_IA32_LITHIUM_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/lithium-codegen-ia32.cc ('k') | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698