| Index: runtime/vm/flow_graph_compiler_ia32.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_ia32.cc (revision 35656)
|
| +++ runtime/vm/flow_graph_compiler_ia32.cc (working copy)
|
| @@ -12,6 +12,7 @@
|
| #include "vm/cpu.h"
|
| #include "vm/dart_entry.h"
|
| #include "vm/deopt_instructions.h"
|
| +#include "vm/flow_graph_builder.h"
|
| #include "vm/il_printer.h"
|
| #include "vm/locations.h"
|
| #include "vm/object_store.h"
|
| @@ -1649,6 +1650,18 @@
|
| } else {
|
| __ LoadObjectSafely(destination.reg(), constant);
|
| }
|
| + } else if (destination.IsFpuRegister()) {
|
| + const Double& constant = Double::Cast(source.constant());
|
| + uword addr = FlowGraphBuilder::FindDoubleConstant(constant.value());
|
| + if (addr == 0) {
|
| + __ pushl(EAX);
|
| + __ LoadObject(EAX, constant);
|
| + __ movsd(destination.fpu_reg(),
|
| + FieldAddress(EAX, Double::value_offset()));
|
| + __ popl(EAX);
|
| + } else {
|
| + __ movsd(destination.fpu_reg(), Address::Absolute(addr));
|
| + }
|
| } else {
|
| ASSERT(destination.IsStackSlot());
|
| StoreObject(destination.ToStackSlotAddress(), source.constant());
|
|
|