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

Side by Side Diff: src/hydrogen-instructions.h

Issue 484643002: Version 3.28.71.3 (merged r23081) (Closed) Base URL: https://v8.googlecode.com/svn/branches/3.28
Patch Set: Created 6 years, 4 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/hydrogen.cc ('k') | src/ia32/lithium-ia32.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_HYDROGEN_INSTRUCTIONS_H_ 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_
6 #define V8_HYDROGEN_INSTRUCTIONS_H_ 6 #define V8_HYDROGEN_INSTRUCTIONS_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 // Declare virtual predicates for abstract HInstruction or HValue 544 // Declare virtual predicates for abstract HInstruction or HValue
545 #define DECLARE_PREDICATE(type) \ 545 #define DECLARE_PREDICATE(type) \
546 virtual bool Is##type() const { return false; } 546 virtual bool Is##type() const { return false; }
547 HYDROGEN_ABSTRACT_INSTRUCTION_LIST(DECLARE_PREDICATE) 547 HYDROGEN_ABSTRACT_INSTRUCTION_LIST(DECLARE_PREDICATE)
548 #undef DECLARE_PREDICATE 548 #undef DECLARE_PREDICATE
549 549
550 bool IsBitwiseBinaryShift() { 550 bool IsBitwiseBinaryShift() {
551 return IsShl() || IsShr() || IsSar(); 551 return IsShl() || IsShr() || IsSar();
552 } 552 }
553 553
554 HValue(HType type = HType::Tagged()) 554 explicit HValue(HType type = HType::Tagged())
555 : block_(NULL), 555 : block_(NULL),
556 id_(kNoNumber), 556 id_(kNoNumber),
557 type_(type), 557 type_(type),
558 use_list_(NULL), 558 use_list_(NULL),
559 range_(NULL), 559 range_(NULL),
560 #ifdef DEBUG 560 #ifdef DEBUG
561 range_poisoned_(false), 561 range_poisoned_(false),
562 #endif 562 #endif
563 flags_(0) {} 563 flags_(0) {}
564 virtual ~HValue() {} 564 virtual ~HValue() {}
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 virtual void Verify() V8_OVERRIDE; 1198 virtual void Verify() V8_OVERRIDE;
1199 #endif 1199 #endif
1200 1200
1201 bool CanDeoptimize(); 1201 bool CanDeoptimize();
1202 1202
1203 virtual bool HasStackCheck() { return false; } 1203 virtual bool HasStackCheck() { return false; }
1204 1204
1205 DECLARE_ABSTRACT_INSTRUCTION(Instruction) 1205 DECLARE_ABSTRACT_INSTRUCTION(Instruction)
1206 1206
1207 protected: 1207 protected:
1208 HInstruction(HType type = HType::Tagged()) 1208 explicit HInstruction(HType type = HType::Tagged())
1209 : HValue(type), 1209 : HValue(type),
1210 next_(NULL), 1210 next_(NULL),
1211 previous_(NULL), 1211 previous_(NULL),
1212 position_(RelocInfo::kNoPosition) { 1212 position_(RelocInfo::kNoPosition) {
1213 SetDependsOnFlag(kOsrEntries); 1213 SetDependsOnFlag(kOsrEntries);
1214 } 1214 }
1215 1215
1216 virtual void DeleteFromGraph() V8_OVERRIDE { Unlink(); } 1216 virtual void DeleteFromGraph() V8_OVERRIDE { Unlink(); }
1217 1217
1218 private: 1218 private:
(...skipping 12 matching lines...) Expand all
1231 1231
1232 template<int V> 1232 template<int V>
1233 class HTemplateInstruction : public HInstruction { 1233 class HTemplateInstruction : public HInstruction {
1234 public: 1234 public:
1235 virtual int OperandCount() const V8_FINAL V8_OVERRIDE { return V; } 1235 virtual int OperandCount() const V8_FINAL V8_OVERRIDE { return V; }
1236 virtual HValue* OperandAt(int i) const V8_FINAL V8_OVERRIDE { 1236 virtual HValue* OperandAt(int i) const V8_FINAL V8_OVERRIDE {
1237 return inputs_[i]; 1237 return inputs_[i];
1238 } 1238 }
1239 1239
1240 protected: 1240 protected:
1241 HTemplateInstruction(HType type = HType::Tagged()) : HInstruction(type) {} 1241 explicit HTemplateInstruction(HType type = HType::Tagged())
1242 : HInstruction(type) {}
1242 1243
1243 virtual void InternalSetOperandAt(int i, HValue* value) V8_FINAL V8_OVERRIDE { 1244 virtual void InternalSetOperandAt(int i, HValue* value) V8_FINAL V8_OVERRIDE {
1244 inputs_[i] = value; 1245 inputs_[i] = value;
1245 } 1246 }
1246 1247
1247 private: 1248 private:
1248 EmbeddedContainer<HValue*, V> inputs_; 1249 EmbeddedContainer<HValue*, V> inputs_;
1249 }; 1250 };
1250 1251
1251 1252
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
1591 } 1592 }
1592 1593
1593 DECLARE_CONCRETE_INSTRUCTION(AbnormalExit) 1594 DECLARE_CONCRETE_INSTRUCTION(AbnormalExit)
1594 private: 1595 private:
1595 HAbnormalExit() {} 1596 HAbnormalExit() {}
1596 }; 1597 };
1597 1598
1598 1599
1599 class HUnaryOperation : public HTemplateInstruction<1> { 1600 class HUnaryOperation : public HTemplateInstruction<1> {
1600 public: 1601 public:
1601 HUnaryOperation(HValue* value, HType type = HType::Tagged()) 1602 explicit HUnaryOperation(HValue* value, HType type = HType::Tagged())
1602 : HTemplateInstruction<1>(type) { 1603 : HTemplateInstruction<1>(type) {
1603 SetOperandAt(0, value); 1604 SetOperandAt(0, value);
1604 } 1605 }
1605 1606
1606 static HUnaryOperation* cast(HValue* value) { 1607 static HUnaryOperation* cast(HValue* value) {
1607 return reinterpret_cast<HUnaryOperation*>(value); 1608 return reinterpret_cast<HUnaryOperation*>(value);
1608 } 1609 }
1609 1610
1610 HValue* value() const { return OperandAt(0); } 1611 HValue* value() const { return OperandAt(0); }
1611 virtual OStream& PrintDataTo(OStream& os) const V8_OVERRIDE; // NOLINT 1612 virtual OStream& PrintDataTo(OStream& os) const V8_OVERRIDE; // NOLINT
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after
2709 2710
2710 DECLARE_CONCRETE_INSTRUCTION(LoadRoot) 2711 DECLARE_CONCRETE_INSTRUCTION(LoadRoot)
2711 2712
2712 protected: 2713 protected:
2713 virtual bool DataEquals(HValue* other) V8_OVERRIDE { 2714 virtual bool DataEquals(HValue* other) V8_OVERRIDE {
2714 HLoadRoot* b = HLoadRoot::cast(other); 2715 HLoadRoot* b = HLoadRoot::cast(other);
2715 return index_ == b->index_; 2716 return index_ == b->index_;
2716 } 2717 }
2717 2718
2718 private: 2719 private:
2719 HLoadRoot(Heap::RootListIndex index, HType type = HType::Tagged()) 2720 explicit HLoadRoot(Heap::RootListIndex index, HType type = HType::Tagged())
2720 : HTemplateInstruction<0>(type), index_(index) { 2721 : HTemplateInstruction<0>(type), index_(index) {
2721 SetFlag(kUseGVN); 2722 SetFlag(kUseGVN);
2722 // TODO(bmeurer): We'll need kDependsOnRoots once we add the 2723 // TODO(bmeurer): We'll need kDependsOnRoots once we add the
2723 // corresponding HStoreRoot instruction. 2724 // corresponding HStoreRoot instruction.
2724 SetDependsOnFlag(kCalls); 2725 SetDependsOnFlag(kCalls);
2725 } 2726 }
2726 2727
2727 virtual bool IsDeletable() const V8_OVERRIDE { return true; } 2728 virtual bool IsDeletable() const V8_OVERRIDE { return true; }
2728 2729
2729 const Heap::RootListIndex index_; 2730 const Heap::RootListIndex index_;
(...skipping 969 matching lines...) Expand 10 before | Expand all | Expand 10 after
3699 virtual void Verify() V8_OVERRIDE { } 3700 virtual void Verify() V8_OVERRIDE { }
3700 #endif 3701 #endif
3701 3702
3702 DECLARE_CONCRETE_INSTRUCTION(Constant) 3703 DECLARE_CONCRETE_INSTRUCTION(Constant)
3703 3704
3704 protected: 3705 protected:
3705 virtual Range* InferRange(Zone* zone) V8_OVERRIDE; 3706 virtual Range* InferRange(Zone* zone) V8_OVERRIDE;
3706 3707
3707 private: 3708 private:
3708 friend class HGraph; 3709 friend class HGraph;
3709 HConstant(Handle<Object> handle, Representation r = Representation::None()); 3710 explicit HConstant(Handle<Object> handle,
3711 Representation r = Representation::None());
3710 HConstant(int32_t value, 3712 HConstant(int32_t value,
3711 Representation r = Representation::None(), 3713 Representation r = Representation::None(),
3712 bool is_not_in_new_space = true, 3714 bool is_not_in_new_space = true,
3713 Unique<Object> optional = Unique<Object>(Handle<Object>::null())); 3715 Unique<Object> optional = Unique<Object>(Handle<Object>::null()));
3714 HConstant(double value, 3716 HConstant(double value,
3715 Representation r = Representation::None(), 3717 Representation r = Representation::None(),
3716 bool is_not_in_new_space = true, 3718 bool is_not_in_new_space = true,
3717 Unique<Object> optional = Unique<Object>(Handle<Object>::null())); 3719 Unique<Object> optional = Unique<Object>(Handle<Object>::null()));
3718 HConstant(Unique<Object> object, 3720 HConstant(Unique<Object> object,
3719 Unique<Map> object_map, 3721 Unique<Map> object_map,
(...skipping 4137 matching lines...) Expand 10 before | Expand all | Expand 10 after
7857 }; 7859 };
7858 7860
7859 7861
7860 7862
7861 #undef DECLARE_INSTRUCTION 7863 #undef DECLARE_INSTRUCTION
7862 #undef DECLARE_CONCRETE_INSTRUCTION 7864 #undef DECLARE_CONCRETE_INSTRUCTION
7863 7865
7864 } } // namespace v8::internal 7866 } } // namespace v8::internal
7865 7867
7866 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ 7868 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ia32/lithium-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698