| Index: src/ia32/lithium-ia32.h
|
| ===================================================================
|
| --- src/ia32/lithium-ia32.h (revision 6904)
|
| +++ src/ia32/lithium-ia32.h (working copy)
|
| @@ -67,6 +67,7 @@
|
| // LLoadKeyedGeneric
|
| // LModI
|
| // LMulI
|
| +// LPower
|
| // LShiftI
|
| // LSubI
|
| // LCallConstantFunction
|
| @@ -123,6 +124,8 @@
|
| // LInteger32ToDouble
|
| // LIsNull
|
| // LIsNullAndBranch
|
| +// LIsObject
|
| +// LIsObjectAndBranch
|
| // LIsSmi
|
| // LIsSmiAndBranch
|
| // LLoadNamedField
|
| @@ -205,6 +208,8 @@
|
| V(Integer32ToDouble) \
|
| V(IsNull) \
|
| V(IsNullAndBranch) \
|
| + V(IsObject) \
|
| + V(IsObjectAndBranch) \
|
| V(IsSmi) \
|
| V(IsSmiAndBranch) \
|
| V(HasInstanceType) \
|
| @@ -229,6 +234,7 @@
|
| V(ObjectLiteral) \
|
| V(OsrEntry) \
|
| V(Parameter) \
|
| + V(Power) \
|
| V(PushArgument) \
|
| V(RegExpLiteral) \
|
| V(Return) \
|
| @@ -668,7 +674,7 @@
|
| DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
|
|
|
| virtual void PrintDataTo(StringStream* stream) const;
|
| - MathFunctionId op() const { return hydrogen()->op(); }
|
| + BuiltinFunctionId op() const { return hydrogen()->op(); }
|
| };
|
|
|
|
|
| @@ -745,6 +751,48 @@
|
| };
|
|
|
|
|
| +class LIsObject: public LUnaryOperation {
|
| + public:
|
| + LIsObject(LOperand* value, LOperand* temp)
|
| + : LUnaryOperation(value), temp_(temp) {}
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
|
| +
|
| + LOperand* temp() const { return temp_; }
|
| +
|
| + private:
|
| + LOperand* temp_;
|
| +};
|
| +
|
| +
|
| +class LIsObjectAndBranch: public LIsObject {
|
| + public:
|
| + LIsObjectAndBranch(LOperand* value,
|
| + LOperand* temp,
|
| + LOperand* temp2,
|
| + int true_block_id,
|
| + int false_block_id)
|
| + : LIsObject(value, temp),
|
| + temp2_(temp2),
|
| + true_block_id_(true_block_id),
|
| + false_block_id_(false_block_id) { }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
|
| + virtual void PrintDataTo(StringStream* stream) const;
|
| + virtual bool IsControl() const { return true; }
|
| +
|
| + int true_block_id() const { return true_block_id_; }
|
| + int false_block_id() const { return false_block_id_; }
|
| +
|
| + LOperand* temp2() const { return temp2_; }
|
| +
|
| + private:
|
| + LOperand* temp2_;
|
| + int true_block_id_;
|
| + int false_block_id_;
|
| +};
|
| +
|
| +
|
| class LIsSmi: public LUnaryOperation {
|
| public:
|
| explicit LIsSmi(LOperand* value) : LUnaryOperation(value) {}
|
| @@ -1154,6 +1202,16 @@
|
| };
|
|
|
|
|
| +class LPower: public LBinaryOperation {
|
| + public:
|
| + LPower(LOperand* left, LOperand* right)
|
| + : LBinaryOperation(left, right) { }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(Power, "power")
|
| + DECLARE_HYDROGEN_ACCESSOR(Power)
|
| +};
|
| +
|
| +
|
| class LArithmeticD: public LBinaryOperation {
|
| public:
|
| LArithmeticD(Token::Value op, LOperand* left, LOperand* right)
|
| @@ -1890,7 +1948,6 @@
|
| LGap* GetGapAt(int index) const;
|
| bool IsGapAt(int index) const;
|
| int NearestGapPos(int index) const;
|
| - int NearestNextGapPos(int index) const;
|
| void MarkEmptyBlocks();
|
| const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; }
|
| LLabel* GetLabel(int block_id) const {
|
|
|