| 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")
|
|
|