diff options
Diffstat (limited to 'deps/v8/src/arm/lithium-arm.h')
-rw-r--r-- | deps/v8/src/arm/lithium-arm.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/deps/v8/src/arm/lithium-arm.h b/deps/v8/src/arm/lithium-arm.h index 6faa7813d2..eecacec1a8 100644 --- a/deps/v8/src/arm/lithium-arm.h +++ b/deps/v8/src/arm/lithium-arm.h @@ -79,6 +79,7 @@ class LCodeGen; V(CmpMapAndBranch) \ V(CmpT) \ V(ConstantD) \ + V(ConstantE) \ V(ConstantI) \ V(ConstantS) \ V(ConstantT) \ @@ -268,7 +269,7 @@ class LInstruction: public ZoneObject { bool IsMarkedAsCall() const { return is_call_; } virtual bool HasResult() const = 0; - virtual LOperand* result() = 0; + virtual LOperand* result() const = 0; LOperand* FirstInput() { return InputAt(0); } LOperand* Output() { return HasResult() ? result() : NULL; } @@ -304,9 +305,9 @@ class LTemplateInstruction: public LInstruction { public: // Allow 0 or 1 output operands. STATIC_ASSERT(R == 0 || R == 1); - virtual bool HasResult() const { return R != 0; } + virtual bool HasResult() const { return R != 0 && result() != NULL; } void set_result(LOperand* operand) { results_[0] = operand; } - LOperand* result() { return results_[0]; } + LOperand* result() const { return results_[0]; } protected: EmbeddedContainer<LOperand*, R> results_; @@ -1232,6 +1233,17 @@ class LConstantD: public LTemplateInstruction<1, 0, 0> { }; +class LConstantE: public LTemplateInstruction<1, 0, 0> { + public: + DECLARE_CONCRETE_INSTRUCTION(ConstantE, "constant-e") + DECLARE_HYDROGEN_ACCESSOR(Constant) + + ExternalReference value() const { + return hydrogen()->ExternalReferenceValue(); + } +}; + + class LConstantT: public LTemplateInstruction<1, 0, 0> { public: DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t") @@ -2236,19 +2248,16 @@ class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { }; -class LTransitionElementsKind: public LTemplateInstruction<0, 1, 2> { +class LTransitionElementsKind: public LTemplateInstruction<0, 1, 1> { public: LTransitionElementsKind(LOperand* object, - LOperand* new_map_temp, - LOperand* fixed_object_temp) { + LOperand* new_map_temp) { inputs_[0] = object; temps_[0] = new_map_temp; - temps_[1] = fixed_object_temp; } LOperand* object() { return inputs_[0]; } LOperand* new_map_temp() { return temps_[0]; } - LOperand* temp() { return temps_[1]; } DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, "transition-elements-kind") |