diff options
Diffstat (limited to 'deps/v8/src/arm/lithium-arm.h')
-rw-r--r-- | deps/v8/src/arm/lithium-arm.h | 59 |
1 files changed, 53 insertions, 6 deletions
diff --git a/deps/v8/src/arm/lithium-arm.h b/deps/v8/src/arm/lithium-arm.h index 0d5ba0f73f..41209c67d5 100644 --- a/deps/v8/src/arm/lithium-arm.h +++ b/deps/v8/src/arm/lithium-arm.h @@ -121,6 +121,8 @@ class Translation; // LInteger32ToDouble // LIsNull // LIsNullAndBranch +// LIsObject +// LIsObjectAndBranch // LIsSmi // LIsSmiAndBranch // LLoadNamedField @@ -203,6 +205,8 @@ class Translation; V(Integer32ToDouble) \ V(IsNull) \ V(IsNullAndBranch) \ + V(IsObject) \ + V(IsObjectAndBranch) \ V(IsSmi) \ V(IsSmiAndBranch) \ V(HasInstanceType) \ @@ -665,7 +669,7 @@ class LUnaryMathOperation: public LUnaryOperation { DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) virtual void PrintDataTo(StringStream* stream) const; - MathFunctionId op() const { return hydrogen()->op(); } + BuiltinFunctionId op() const { return hydrogen()->op(); } }; @@ -742,6 +746,48 @@ class LIsNullAndBranch: public LIsNull { }; +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) {} @@ -1395,15 +1441,17 @@ class LNumberTagI: public LUnaryOperation { class LNumberTagD: public LUnaryOperation { public: - explicit LNumberTagD(LOperand* value, LOperand* temp) - : LUnaryOperation(value), temp_(temp) { } + LNumberTagD(LOperand* value, LOperand* temp1, LOperand* temp2) + : LUnaryOperation(value), temp1_(temp1), temp2_(temp2) { } DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") - LOperand* temp() const { return temp_; } + LOperand* temp1() const { return temp1_; } + LOperand* temp2() const { return temp2_; } private: - LOperand* temp_; + LOperand* temp1_; + LOperand* temp2_; }; @@ -1887,7 +1935,6 @@ class LChunk: public ZoneObject { 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 { |