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