Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index fb3c05ebab4f956655196bc728be25ef3d9038ea..e578fbf7d49e05d2b8ae204f0c0ac42625e4c470 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -541,6 +541,10 @@ int32_t LCodeGen::ToInteger32(LConstantOperand* op) const { |
int32_t LCodeGen::ToRepresentation(LConstantOperand* op, |
const Representation& r) const { |
HConstant* constant = chunk_->LookupConstant(op); |
+ if (r.IsExternal()) { |
+ return reinterpret_cast<int32_t>( |
+ constant->ExternalReferenceValue().address()); |
+ } |
int32_t value = constant->Integer32Value(); |
if (r.IsInteger32()) return value; |
DCHECK(r.IsSmiOrTagged()); |
@@ -4087,9 +4091,10 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
if (operand_value->IsRegister()) { |
Register value = ToRegister(operand_value); |
__ Store(value, operand, representation); |
- } else if (representation.IsInteger32()) { |
+ } else if (representation.IsInteger32() || representation.IsExternal()) { |
Immediate immediate = ToImmediate(operand_value, representation); |
DCHECK(!instr->hydrogen()->NeedsWriteBarrier()); |
+ Comment(";;; LOL Store"); |
Jarin
2015/07/22 09:00:20
What is LOL?
jochen (gone - plz use gerrit)
2015/07/22 09:08:13
I, uhm, just wanted to check whether you actually
|
__ mov(operand, immediate); |
} else { |
Handle<Object> handle_value = ToHandle(operand_value); |