| Index: src/compiler/code-generator.cc
|
| diff --git a/src/compiler/code-generator.cc b/src/compiler/code-generator.cc
|
| index acda1d2c5a0237e707585dd44b873e24673bf9be..e73016e62fd9cddbc989d3a4fb553b4ecacda9ef 100644
|
| --- a/src/compiler/code-generator.cc
|
| +++ b/src/compiler/code-generator.cc
|
| @@ -864,14 +864,20 @@ void CodeGenerator::AddTranslationForOperand(Translation* translation,
|
| Handle<Object> constant_object;
|
| switch (constant.type()) {
|
| case Constant::kInt32:
|
| - DCHECK(type == MachineType::Int32() || type == MachineType::Uint32() ||
|
| - type.representation() == MachineRepresentation::kBit ||
|
| - type.representation() == MachineRepresentation::kNone);
|
| - DCHECK(type.representation() != MachineRepresentation::kNone ||
|
| - constant.ToInt32() == FrameStateDescriptor::kImpossibleValue);
|
| -
|
| - constant_object =
|
| - isolate()->factory()->NewNumberFromInt(constant.ToInt32());
|
| + if (type.representation() == MachineRepresentation::kTagged) {
|
| + constant_object =
|
| + handle(reinterpret_cast<Smi*>(constant.ToInt32()), isolate());
|
| + } else {
|
| + DCHECK(type == MachineType::Int32() ||
|
| + type == MachineType::Uint32() ||
|
| + type.representation() == MachineRepresentation::kBit ||
|
| + type.representation() == MachineRepresentation::kNone);
|
| + DCHECK(type.representation() != MachineRepresentation::kNone ||
|
| + constant.ToInt32() == FrameStateDescriptor::kImpossibleValue);
|
| +
|
| + constant_object =
|
| + isolate()->factory()->NewNumberFromInt(constant.ToInt32());
|
| + }
|
| break;
|
| case Constant::kFloat32:
|
| DCHECK(type.representation() == MachineRepresentation::kFloat32 ||
|
|
|