| Index: src/x64/lithium-x64.h
|
| ===================================================================
|
| --- src/x64/lithium-x64.h (revision 8460)
|
| +++ src/x64/lithium-x64.h (working copy)
|
| @@ -77,13 +77,9 @@
|
| V(ClampDToUint8) \
|
| V(ClampIToUint8) \
|
| V(ClampTToUint8) \
|
| - V(ClassOfTest) \
|
| V(ClassOfTestAndBranch) \
|
| - V(CmpConstantEq) \
|
| V(CmpConstantEqAndBranch) \
|
| - V(CmpID) \
|
| V(CmpIDAndBranch) \
|
| - V(CmpObjectEq) \
|
| V(CmpObjectEqAndBranch) \
|
| V(CmpMapAndBranch) \
|
| V(CmpT) \
|
| @@ -103,9 +99,7 @@
|
| V(GlobalObject) \
|
| V(GlobalReceiver) \
|
| V(Goto) \
|
| - V(HasCachedArrayIndex) \
|
| V(HasCachedArrayIndexAndBranch) \
|
| - V(HasInstanceType) \
|
| V(HasInstanceTypeAndBranch) \
|
| V(In) \
|
| V(InstanceOf) \
|
| @@ -113,15 +107,10 @@
|
| V(InstructionGap) \
|
| V(Integer32ToDouble) \
|
| V(InvokeFunction) \
|
| - V(IsConstructCall) \
|
| V(IsConstructCallAndBranch) \
|
| - V(IsNull) \
|
| V(IsNullAndBranch) \
|
| - V(IsObject) \
|
| V(IsObjectAndBranch) \
|
| - V(IsSmi) \
|
| V(IsSmiAndBranch) \
|
| - V(IsUndetectable) \
|
| V(IsUndetectableAndBranch) \
|
| V(JSArrayLength) \
|
| V(Label) \
|
| @@ -173,7 +162,6 @@
|
| V(Throw) \
|
| V(ToFastProperties) \
|
| V(Typeof) \
|
| - V(TypeofIs) \
|
| V(TypeofIsAndBranch) \
|
| V(UnaryMathOperation) \
|
| V(UnknownOSRValue) \
|
| @@ -233,7 +221,6 @@
|
| virtual bool IsGap() const { return false; }
|
|
|
| virtual bool IsControl() const { return false; }
|
| - virtual void SetBranchTargets(int true_block_id, int false_block_id) { }
|
|
|
| void set_environment(LEnvironment* env) { environment_ = env; }
|
| LEnvironment* environment() const { return environment_; }
|
| @@ -457,16 +444,15 @@
|
| public:
|
| virtual bool IsControl() const { return true; }
|
|
|
| - int true_block_id() const { return true_block_id_; }
|
| - int false_block_id() const { return false_block_id_; }
|
| - void SetBranchTargets(int true_block_id, int false_block_id) {
|
| - true_block_id_ = true_block_id;
|
| - false_block_id_ = false_block_id;
|
| - }
|
| + int SuccessorCount() { return hydrogen()->SuccessorCount(); }
|
| + HBasicBlock* SuccessorAt(int i) { return hydrogen()->SuccessorAt(i); }
|
| + int true_block_id() { return hydrogen()->SuccessorAt(0)->block_id(); }
|
| + int false_block_id() { return hydrogen()->SuccessorAt(1)->block_id(); }
|
|
|
| private:
|
| - int true_block_id_;
|
| - int false_block_id_;
|
| + HControlInstruction* hydrogen() {
|
| + return HControlInstruction::cast(this->hydrogen_value());
|
| + }
|
| };
|
|
|
|
|
| @@ -565,23 +551,6 @@
|
| };
|
|
|
|
|
| -class LCmpID: public LTemplateInstruction<1, 2, 0> {
|
| - public:
|
| - LCmpID(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
|
| - DECLARE_HYDROGEN_ACCESSOR(Compare)
|
| -
|
| - Token::Value op() const { return hydrogen()->token(); }
|
| - bool is_double() const {
|
| - return hydrogen()->GetInputRepresentation().IsDouble();
|
| - }
|
| -};
|
| -
|
| -
|
| class LCmpIDAndBranch: public LControlInstruction<2, 0> {
|
| public:
|
| LCmpIDAndBranch(LOperand* left, LOperand* right) {
|
| @@ -590,7 +559,7 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(Compare)
|
| + DECLARE_HYDROGEN_ACCESSOR(CompareIDAndBranch)
|
|
|
| Token::Value op() const { return hydrogen()->token(); }
|
| bool is_double() const {
|
| @@ -615,17 +584,6 @@
|
| };
|
|
|
|
|
| -class LCmpObjectEq: public LTemplateInstruction<1, 2, 0> {
|
| - public:
|
| - LCmpObjectEq(LOperand* left, LOperand* right) {
|
| - inputs_[0] = left;
|
| - inputs_[1] = right;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(CmpObjectEq, "cmp-object-eq")
|
| -};
|
| -
|
| -
|
| class LCmpObjectEqAndBranch: public LControlInstruction<2, 0> {
|
| public:
|
| LCmpObjectEqAndBranch(LOperand* left, LOperand* right) {
|
| @@ -638,17 +596,6 @@
|
| };
|
|
|
|
|
| -class LCmpConstantEq: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LCmpConstantEq(LOperand* left) {
|
| - inputs_[0] = left;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(CmpConstantEq, "cmp-constant-eq")
|
| - DECLARE_HYDROGEN_ACCESSOR(CompareConstantEq)
|
| -};
|
| -
|
| -
|
| class LCmpConstantEqAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LCmpConstantEqAndBranch(LOperand* left) {
|
| @@ -657,23 +604,10 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CmpConstantEqAndBranch,
|
| "cmp-constant-eq-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(CompareConstantEq)
|
| + DECLARE_HYDROGEN_ACCESSOR(CompareConstantEqAndBranch)
|
| };
|
|
|
|
|
| -class LIsNull: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LIsNull(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null")
|
| - DECLARE_HYDROGEN_ACCESSOR(IsNull)
|
| -
|
| - bool is_strict() const { return hydrogen()->is_strict(); }
|
| -};
|
| -
|
| -
|
| class LIsNullAndBranch: public LControlInstruction<1, 1> {
|
| public:
|
| LIsNullAndBranch(LOperand* value, LOperand* temp) {
|
| @@ -682,7 +616,7 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsNullAndBranch, "is-null-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(IsNull)
|
| + DECLARE_HYDROGEN_ACCESSOR(IsNullAndBranch)
|
|
|
| bool is_strict() const { return hydrogen()->is_strict(); }
|
|
|
| @@ -690,16 +624,6 @@
|
| };
|
|
|
|
|
| -class LIsObject: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LIsObject(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object")
|
| -};
|
| -
|
| -
|
| class LIsObjectAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LIsObjectAndBranch(LOperand* value) {
|
| @@ -707,22 +631,12 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
|
| + DECLARE_HYDROGEN_ACCESSOR(IsObjectAndBranch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
|
|
|
|
| -class LIsSmi: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LIsSmi(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
|
| - DECLARE_HYDROGEN_ACCESSOR(IsSmi)
|
| -};
|
| -
|
| -
|
| class LIsSmiAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LIsSmiAndBranch(LOperand* value) {
|
| @@ -730,22 +644,12 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
|
| + DECLARE_HYDROGEN_ACCESSOR(IsSmiAndBranch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
|
|
|
|
| -class LIsUndetectable: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LIsUndetectable(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(IsUndetectable, "is-undetectable")
|
| - DECLARE_HYDROGEN_ACCESSOR(IsUndetectable)
|
| -};
|
| -
|
| -
|
| class LIsUndetectableAndBranch: public LControlInstruction<1, 1> {
|
| public:
|
| explicit LIsUndetectableAndBranch(LOperand* value, LOperand* temp) {
|
| @@ -755,22 +659,12 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
|
| "is-undetectable-and-branch")
|
| + DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
|
|
|
|
| -class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LHasInstanceType(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
|
| - DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
|
| -};
|
| -
|
| -
|
| class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LHasInstanceTypeAndBranch(LOperand* value) {
|
| @@ -779,7 +673,7 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
|
| "has-instance-type-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
|
| + DECLARE_HYDROGEN_ACCESSOR(HasInstanceTypeAndBranch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
| @@ -796,17 +690,6 @@
|
| };
|
|
|
|
|
| -class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LHasCachedArrayIndex(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
|
| - DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
|
| -};
|
| -
|
| -
|
| class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
|
| @@ -815,20 +698,8 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
|
| "has-cached-array-index-and-branch")
|
| - virtual void PrintDataTo(StringStream* stream);
|
| -};
|
| + DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndexAndBranch)
|
|
|
| -
|
| -class LClassOfTest: public LTemplateInstruction<1, 1, 1> {
|
| - public:
|
| - LClassOfTest(LOperand* value, LOperand* temp) {
|
| - inputs_[0] = value;
|
| - temps_[0] = temp;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
|
| - DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
|
| -
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
|
|
| @@ -842,7 +713,7 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
|
| "class-of-test-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
|
| + DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
| @@ -856,7 +727,7 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
|
| - DECLARE_HYDROGEN_ACCESSOR(Compare)
|
| + DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
|
|
|
| Token::Value op() const { return hydrogen()->token(); }
|
| };
|
| @@ -1002,7 +873,7 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(Value)
|
| + DECLARE_HYDROGEN_ACCESSOR(Branch)
|
|
|
| virtual void PrintDataTo(StringStream* stream);
|
| };
|
| @@ -1972,21 +1843,6 @@
|
| };
|
|
|
|
|
| -class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
|
| - public:
|
| - explicit LTypeofIs(LOperand* value) {
|
| - inputs_[0] = value;
|
| - }
|
| -
|
| - DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
|
| - DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
|
| -
|
| - Handle<String> type_literal() { return hydrogen()->type_literal(); }
|
| -
|
| - virtual void PrintDataTo(StringStream* stream);
|
| -};
|
| -
|
| -
|
| class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
|
| public:
|
| explicit LTypeofIsAndBranch(LOperand* value) {
|
| @@ -1994,7 +1850,7 @@
|
| }
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
|
| - DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
|
| + DECLARE_HYDROGEN_ACCESSOR(TypeofIsAndBranch)
|
|
|
| Handle<String> type_literal() { return hydrogen()->type_literal(); }
|
|
|
| @@ -2002,13 +1858,6 @@
|
| };
|
|
|
|
|
| -class LIsConstructCall: public LTemplateInstruction<1, 0, 0> {
|
| - public:
|
| - DECLARE_CONCRETE_INSTRUCTION(IsConstructCall, "is-construct-call")
|
| - DECLARE_HYDROGEN_ACCESSOR(IsConstructCall)
|
| -};
|
| -
|
| -
|
| class LIsConstructCallAndBranch: public LControlInstruction<0, 1> {
|
| public:
|
| explicit LIsConstructCallAndBranch(LOperand* temp) {
|
| @@ -2017,6 +1866,7 @@
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(IsConstructCallAndBranch,
|
| "is-construct-call-and-branch")
|
| + DECLARE_HYDROGEN_ACCESSOR(IsConstructCallAndBranch)
|
| };
|
|
|
|
|
|
|