| Index: src/ia32/lithium-ia32.h
|
| diff --git a/src/ia32/lithium-ia32.h b/src/ia32/lithium-ia32.h
|
| index 811700a544aa9767d00b637930323a81c2a62794..80dc2e37a0464ce5089c76444c66277c986878cc 100644
|
| --- a/src/ia32/lithium-ia32.h
|
| +++ b/src/ia32/lithium-ia32.h
|
| @@ -165,6 +165,7 @@ class LCodeGen;
|
| V(StringCompareAndBranch) \
|
| V(SubI) \
|
| V(TaggedToI) \
|
| + V(TaggedToSmi) \
|
| V(ThisFunction) \
|
| V(ToFastProperties) \
|
| V(TransitionElementsKind) \
|
| @@ -1993,6 +1994,8 @@ class LDoubleToSmi V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
|
|
| DECLARE_CONCRETE_INSTRUCTION(DoubleToSmi, "double-to-smi")
|
| DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
|
| +
|
| + bool truncating() { return hydrogen()->CanTruncateToSmi(); }
|
| };
|
|
|
|
|
| @@ -2014,6 +2017,23 @@ class LTaggedToI V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| };
|
|
|
|
|
| +class LTaggedToSmi V8_FINAL : public LTemplateInstruction<1, 1, 1> {
|
| + public:
|
| + LTaggedToSmi(LOperand* value, LOperand* temp) {
|
| + inputs_[0] = value;
|
| + temps_[0] = temp;
|
| + }
|
| +
|
| + LOperand* value() { return inputs_[0]; }
|
| + LOperand* temp() { return temps_[0]; }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(TaggedToSmi, "tagged-to-smi")
|
| + DECLARE_HYDROGEN_ACCESSOR(Change)
|
| +
|
| + bool truncating() { return hydrogen()->CanTruncateToSmi(); }
|
| +};
|
| +
|
| +
|
| class LSmiTag V8_FINAL : public LTemplateInstruction<1, 1, 0> {
|
| public:
|
| explicit LSmiTag(LOperand* value) {
|
|
|