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

Side by Side Diff: src/x87/lithium-x87.h

Issue 564683002: X87: Encapsulate megamorphic load/tail-call in hydrogen (Closed) Base URL: https://github.com/v8/v8.git@bleeding_edge
Patch Set: 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
« no previous file with comments | « src/x87/lithium-codegen-x87.cc ('k') | src/x87/lithium-x87.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_X87_LITHIUM_X87_H_ 5 #ifndef V8_X87_LITHIUM_X87_H_
6 #define V8_X87_LITHIUM_X87_H_ 6 #define V8_X87_LITHIUM_X87_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 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 V(StoreKeyed) \ 149 V(StoreKeyed) \
150 V(StoreKeyedGeneric) \ 150 V(StoreKeyedGeneric) \
151 V(StoreNamedField) \ 151 V(StoreNamedField) \
152 V(StoreNamedGeneric) \ 152 V(StoreNamedGeneric) \
153 V(StringAdd) \ 153 V(StringAdd) \
154 V(StringCharCodeAt) \ 154 V(StringCharCodeAt) \
155 V(StringCharFromCode) \ 155 V(StringCharFromCode) \
156 V(StringCompareAndBranch) \ 156 V(StringCompareAndBranch) \
157 V(SubI) \ 157 V(SubI) \
158 V(TaggedToI) \ 158 V(TaggedToI) \
159 V(TailCallThroughMegamorphicCache) \
159 V(ThisFunction) \ 160 V(ThisFunction) \
160 V(ToFastProperties) \ 161 V(ToFastProperties) \
161 V(TransitionElementsKind) \ 162 V(TransitionElementsKind) \
162 V(TrapAllocationMemento) \ 163 V(TrapAllocationMemento) \
163 V(Typeof) \ 164 V(Typeof) \
164 V(TypeofIsAndBranch) \ 165 V(TypeofIsAndBranch) \
165 V(Uint32ToDouble) \ 166 V(Uint32ToDouble) \
166 V(UnknownOSRValue) \ 167 V(UnknownOSRValue) \
167 V(WrapReceiver) 168 V(WrapReceiver)
168 169
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 inputs_[0] = context; 490 inputs_[0] = context;
490 } 491 }
491 492
492 LOperand* context() { return inputs_[0]; } 493 LOperand* context() { return inputs_[0]; }
493 494
494 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") 495 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
495 DECLARE_HYDROGEN_ACCESSOR(CallStub) 496 DECLARE_HYDROGEN_ACCESSOR(CallStub)
496 }; 497 };
497 498
498 499
500 class LTailCallThroughMegamorphicCache FINAL
501 : public LTemplateInstruction<0, 3, 0> {
502 public:
503 explicit LTailCallThroughMegamorphicCache(LOperand* context,
504 LOperand* receiver,
505 LOperand* name) {
506 inputs_[0] = context;
507 inputs_[1] = receiver;
508 inputs_[2] = name;
509 }
510
511 LOperand* context() { return inputs_[0]; }
512 LOperand* receiver() { return inputs_[1]; }
513 LOperand* name() { return inputs_[2]; }
514
515 DECLARE_CONCRETE_INSTRUCTION(TailCallThroughMegamorphicCache,
516 "tail-call-through-megamorphic-cache")
517 DECLARE_HYDROGEN_ACCESSOR(TailCallThroughMegamorphicCache)
518 };
519
520
499 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> { 521 class LUnknownOSRValue FINAL : public LTemplateInstruction<1, 0, 0> {
500 public: 522 public:
501 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE { 523 virtual bool HasInterestingComment(LCodeGen* gen) const OVERRIDE {
502 return false; 524 return false;
503 } 525 }
504 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") 526 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value")
505 }; 527 };
506 528
507 529
508 template<int I, int T> 530 template<int I, int T>
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1902 public: 1924 public:
1903 LCallWithDescriptor(CallInterfaceDescriptor descriptor, 1925 LCallWithDescriptor(CallInterfaceDescriptor descriptor,
1904 const ZoneList<LOperand*>& operands, Zone* zone) 1926 const ZoneList<LOperand*>& operands, Zone* zone)
1905 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) { 1927 : inputs_(descriptor.GetRegisterParameterCount() + 1, zone) {
1906 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length()); 1928 DCHECK(descriptor.GetRegisterParameterCount() + 1 == operands.length());
1907 inputs_.AddAll(operands, zone); 1929 inputs_.AddAll(operands, zone);
1908 } 1930 }
1909 1931
1910 LOperand* target() const { return inputs_[0]; } 1932 LOperand* target() const { return inputs_[0]; }
1911 1933
1934 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor)
1935
1912 private: 1936 private:
1913 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor") 1937 DECLARE_CONCRETE_INSTRUCTION(CallWithDescriptor, "call-with-descriptor")
1914 DECLARE_HYDROGEN_ACCESSOR(CallWithDescriptor)
1915 1938
1916 virtual void PrintDataTo(StringStream* stream) OVERRIDE; 1939 virtual void PrintDataTo(StringStream* stream) OVERRIDE;
1917 1940
1918 int arity() const { return hydrogen()->argument_count() - 1; } 1941 int arity() const { return hydrogen()->argument_count() - 1; }
1919 1942
1920 ZoneList<LOperand*> inputs_; 1943 ZoneList<LOperand*> inputs_;
1921 1944
1922 // Iterator support. 1945 // Iterator support.
1923 virtual int InputCount() FINAL OVERRIDE { return inputs_.length(); } 1946 virtual int InputCount() FINAL OVERRIDE { return inputs_.length(); }
1924 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; } 1947 virtual LOperand* InputAt(int i) FINAL OVERRIDE { return inputs_[i]; }
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
2901 2924
2902 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2925 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2903 }; 2926 };
2904 2927
2905 #undef DECLARE_HYDROGEN_ACCESSOR 2928 #undef DECLARE_HYDROGEN_ACCESSOR
2906 #undef DECLARE_CONCRETE_INSTRUCTION 2929 #undef DECLARE_CONCRETE_INSTRUCTION
2907 2930
2908 } } // namespace v8::internal 2931 } } // namespace v8::internal
2909 2932
2910 #endif // V8_X87_LITHIUM_X87_H_ 2933 #endif // V8_X87_LITHIUM_X87_H_
OLDNEW
« no previous file with comments | « src/x87/lithium-codegen-x87.cc ('k') | src/x87/lithium-x87.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698