| 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);
|
|
|
|
|