Index: src/ia32/lithium-ia32.h |
diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h |
index 568ef87b1bf36173a47cfbc8e071f73ef85dad43..f5828a9366c3be1e416546380dfdcde1e4b3efe4 100644 |
--- a/src/ia32/lithium-ia32.h |
+++ b/src/ia32/lithium-ia32.h |
@@ -88,6 +88,8 @@ class LCodeGen; |
V(DebugBreak) \ |
V(DeclareGlobals) \ |
V(DeleteProperty) \ |
+ V(DeoptCounter) \ |
+ V(DeoptCounterAdd) \ |
V(Deoptimize) \ |
V(DivI) \ |
V(DoubleToI) \ |
@@ -419,6 +421,51 @@ class LDummyUse: public LTemplateInstruction<1, 1, 0> { |
}; |
+class LDeoptCounter: public LTemplateInstruction<0, 0, 0> { |
+ public: |
+ LDeoptCounter(int id, int initial_value, int max_value) |
+ : id_(id), |
+ initial_value_(initial_value), |
+ max_value_(max_value) { |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(DeoptCounter, "deopt_counter") |
+ |
+ int id() const { return id_; } |
+ int initial_value() const { return initial_value_; } |
+ int max_value() const { return max_value_; } |
+ |
+ private: |
+ int id_; |
+ int initial_value_; |
+ int max_value_; |
+}; |
+ |
+ |
+class LDeoptCounterAdd: public LTemplateInstruction<0, 0, 2> { |
+ public: |
+ LDeoptCounterAdd(int counter, |
+ int delta, |
+ LOperand* temp, |
+ LOperand* temp2) : counter_(counter), |
+ delta_(delta) { |
+ temps_[0] = temp; |
+ temps_[1] = temp2; |
+ } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(DeoptCounterAdd, "deopt_counter_add") |
+ |
+ LOperand* temp() { return temps_[0]; } |
+ LOperand* temp2() { return temps_[1]; } |
+ int counter() const { return counter_; } |
+ int delta() const { return delta_; } |
+ |
+ private: |
+ int counter_; |
+ int delta_; |
+}; |
+ |
+ |
class LDeoptimize: public LTemplateInstruction<0, 0, 0> { |
public: |
DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") |