Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 4a23f2a327ef4d41e19481c84c6279ee779a1907..de003477315395d95cfb9d24bf244cf5461e4833 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -773,6 +773,10 @@ class HInstruction: public HValue { |
virtual void Verify() const; |
#endif |
+ // Conservative indication of whether the instruction can |
+ // deoptimize. Allowed to have false positives. |
Kevin Millikin (Chromium)
2011/01/18 11:18:39
The comment is also confusing. The predicate has
Vitaly Repeshko
2011/01/18 12:24:56
I renamed the function and the comment is much cle
|
+ virtual bool CanDeoptimize() const { return false; } |
fschneider
2011/01/18 10:45:51
I'd rather name this predicate IsCheckInstruction(
Vitaly Repeshko
2011/01/18 12:24:56
Done.
|
+ |
DECLARE_INSTRUCTION(Instruction) |
protected: |
@@ -1504,6 +1508,8 @@ class HCheckMap: public HUnaryOperation { |
SetFlag(kDependsOnMaps); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Tagged(); |
} |
@@ -1537,6 +1543,8 @@ class HCheckFunction: public HUnaryOperation { |
SetFlag(kUseGVN); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Tagged(); |
} |
@@ -1573,6 +1581,8 @@ class HCheckInstanceType: public HUnaryOperation { |
SetFlag(kUseGVN); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Tagged(); |
} |
@@ -1610,6 +1620,8 @@ class HCheckNonSmi: public HUnaryOperation { |
SetFlag(kUseGVN); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Tagged(); |
} |
@@ -1632,6 +1644,8 @@ class HCheckPrototypeMaps: public HInstruction { |
SetFlag(kDependsOnMaps); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
#ifdef DEBUG |
virtual void Verify() const; |
#endif |
@@ -1668,6 +1682,8 @@ class HCheckSmi: public HUnaryOperation { |
SetFlag(kUseGVN); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Tagged(); |
} |
@@ -1996,6 +2012,8 @@ class HBoundsCheck: public HBinaryOperation { |
SetFlag(kUseGVN); |
} |
+ virtual bool CanDeoptimize() const { return true; } |
+ |
virtual Representation RequiredInputRepresentation(int index) const { |
return Representation::Integer32(); |
} |