Index: src/ia32/lithium-ia32.h |
diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h |
index 83c4c8d94edaa406eba0fd953ec02c1dae2edb5c..3a609c991a10b5df94ea3f5ef7953fead5fd4a60 100644 |
--- a/src/ia32/lithium-ia32.h |
+++ b/src/ia32/lithium-ia32.h |
@@ -116,6 +116,7 @@ class LCodeGen; |
V(IsObjectAndBranch) \ |
V(IsStringAndBranch) \ |
V(IsSmiAndBranch) \ |
+ V(IsNumberAndBranch) \ |
V(IsUndetectableAndBranch) \ |
V(Label) \ |
V(LazyBailout) \ |
@@ -921,6 +922,19 @@ class LIsObjectAndBranch V8_FINAL : public LControlInstruction<1, 1> { |
}; |
+class LIsNumberAndBranch V8_FINAL : public LControlInstruction<1, 0> { |
+ public: |
+ explicit LIsNumberAndBranch(LOperand* value) { |
+ inputs_[0] = value; |
+ } |
+ |
+ LOperand* value() { return inputs_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(IsNumberAndBranch, "is-number-and-branch") |
+ DECLARE_HYDROGEN_ACCESSOR(IsNumberAndBranch) |
+}; |
+ |
+ |
class LIsStringAndBranch V8_FINAL : public LControlInstruction<1, 1> { |
public: |
LIsStringAndBranch(LOperand* value, LOperand* temp) { |
@@ -1620,6 +1634,11 @@ class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
return hydrogen()->is_external(); |
} |
+ virtual bool ClobbersDoubleRegisters() const V8_OVERRIDE { |
+ return !CpuFeatures::IsSupported(SSE2) && |
+ !IsDoubleOrFloatElementsKind(hydrogen()->elements_kind()); |
+ } |
+ |
DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") |
DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) |
@@ -2170,7 +2189,7 @@ class LTaggedToI V8_FINAL : public LTemplateInstruction<1, 1, 1> { |
LOperand* temp() { return temps_[0]; } |
DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i") |
- DECLARE_HYDROGEN_ACCESSOR(Change) |
+ DECLARE_HYDROGEN_ACCESSOR(UnaryOperation) |
bool truncating() { return hydrogen()->CanTruncateToInt32(); } |
}; |
@@ -2888,7 +2907,7 @@ class LChunkBuilder V8_FINAL BASE_EMBEDDED { |
LInstruction* DoArithmeticD(Token::Value op, |
HArithmeticBinaryOperation* instr); |
LInstruction* DoArithmeticT(Token::Value op, |
- HBinaryOperation* instr); |
+ HArithmeticBinaryOperation* instr); |
LOperand* GetStoreKeyedValueOperand(HStoreKeyed* instr); |