| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index a7457bf5d7776e8a4512d9306b153a658715a89b..fb687f7941404729c148968398f7f4a2d4852b7f 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -322,7 +322,8 @@ Register LCodeGen::EmitLoadRegister(LOperand* op, Register scratch) {
|
| return ToRegister(op->index());
|
| } else if (op->IsConstantOperand()) {
|
| LConstantOperand* const_op = LConstantOperand::cast(op);
|
| - Handle<Object> literal = chunk_->LookupLiteral(const_op);
|
| + HConstant* constant = chunk_->LookupConstant(const_op);
|
| + Handle<Object> literal = constant->handle();
|
| Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
| if (r.IsInteger32()) {
|
| ASSERT(literal->IsNumber());
|
| @@ -360,7 +361,8 @@ DoubleRegister LCodeGen::EmitLoadDoubleRegister(LOperand* op,
|
| return ToDoubleRegister(op->index());
|
| } else if (op->IsConstantOperand()) {
|
| LConstantOperand* const_op = LConstantOperand::cast(op);
|
| - Handle<Object> literal = chunk_->LookupLiteral(const_op);
|
| + HConstant* constant = chunk_->LookupConstant(const_op);
|
| + Handle<Object> literal = constant->handle();
|
| Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
| if (r.IsInteger32()) {
|
| ASSERT(literal->IsNumber());
|
| @@ -386,9 +388,9 @@ DoubleRegister LCodeGen::EmitLoadDoubleRegister(LOperand* op,
|
|
|
|
|
| Handle<Object> LCodeGen::ToHandle(LConstantOperand* op) const {
|
| - Handle<Object> literal = chunk_->LookupLiteral(op);
|
| + HConstant* constant = chunk_->LookupConstant(op);
|
| ASSERT(chunk_->LookupLiteralRepresentation(op).IsTagged());
|
| - return literal;
|
| + return constant->handle();
|
| }
|
|
|
|
|
| @@ -398,33 +400,33 @@ bool LCodeGen::IsInteger32(LConstantOperand* op) const {
|
|
|
|
|
| int LCodeGen::ToInteger32(LConstantOperand* op) const {
|
| - Handle<Object> value = chunk_->LookupLiteral(op);
|
| + HConstant* constant = chunk_->LookupConstant(op);
|
| ASSERT(chunk_->LookupLiteralRepresentation(op).IsInteger32());
|
| - ASSERT(static_cast<double>(static_cast<int32_t>(value->Number())) ==
|
| - value->Number());
|
| - return static_cast<int32_t>(value->Number());
|
| + ASSERT(constant->HasInteger32Value());
|
| + return constant->Integer32Value();
|
| }
|
|
|
|
|
| double LCodeGen::ToDouble(LConstantOperand* op) const {
|
| - Handle<Object> value = chunk_->LookupLiteral(op);
|
| - return value->Number();
|
| + HConstant* constant = chunk_->LookupConstant(op);
|
| + ASSERT(constant->HasDoubleValue());
|
| + return constant->DoubleValue();
|
| }
|
|
|
|
|
| Operand LCodeGen::ToOperand(LOperand* op) {
|
| if (op->IsConstantOperand()) {
|
| LConstantOperand* const_op = LConstantOperand::cast(op);
|
| - Handle<Object> literal = chunk_->LookupLiteral(const_op);
|
| + HConstant* constant = chunk()->LookupConstant(const_op);
|
| Representation r = chunk_->LookupLiteralRepresentation(const_op);
|
| if (r.IsInteger32()) {
|
| - ASSERT(literal->IsNumber());
|
| - return Operand(static_cast<int32_t>(literal->Number()));
|
| + ASSERT(constant->HasInteger32Value());
|
| + return Operand(constant->Integer32Value());
|
| } else if (r.IsDouble()) {
|
| Abort("ToOperand Unsupported double immediate.");
|
| }
|
| ASSERT(r.IsTagged());
|
| - return Operand(literal);
|
| + return Operand(constant->handle());
|
| } else if (op->IsRegister()) {
|
| return Operand(ToRegister(op));
|
| } else if (op->IsDoubleRegister()) {
|
| @@ -553,8 +555,8 @@ void LCodeGen::AddToTranslation(Translation* translation,
|
| DoubleRegister reg = ToDoubleRegister(op);
|
| translation->StoreDoubleRegister(reg);
|
| } else if (op->IsConstantOperand()) {
|
| - Handle<Object> literal = chunk()->LookupLiteral(LConstantOperand::cast(op));
|
| - int src_index = DefineDeoptimizationLiteral(literal);
|
| + HConstant* constant = chunk()->LookupConstant(LConstantOperand::cast(op));
|
| + int src_index = DefineDeoptimizationLiteral(constant->handle());
|
| translation->StoreLiteral(src_index);
|
| } else {
|
| UNREACHABLE();
|
|
|