Index: src/compiler/js-typed-lowering.cc |
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc |
index 130c5cbcbdc8de9fb23d63c9baf838f355f6cc90..8c78412a4eace180962a2dc24f02d98a1c5befa5 100644 |
--- a/src/compiler/js-typed-lowering.cc |
+++ b/src/compiler/js-typed-lowering.cc |
@@ -556,6 +556,14 @@ Reduction JSTypedLowering::ReduceJSLoadProperty(Node* node) { |
Node* value = |
graph()->NewNode(simplified()->LoadElement(element_access), elements, |
key, NodeProperties::GetEffectInput(node)); |
+ // TODO(titzer): Remove this hack once float32 is properly supported in |
+ // simplified lowering. |
+ if (element_access.machine_type == kRepFloat32) { |
titzer
2014/09/24 10:55:23
You can move this into simplified-lowering. A more
|
+ Node* change = |
+ graph()->NewNode(machine()->ChangeFloat32ToFloat64(), value); |
+ NodeProperties::ReplaceWithValue(node, change, value); |
+ return Changed(value); |
+ } |
return ReplaceEagerly(node, value); |
} |
return NoChange(); |
@@ -599,6 +607,11 @@ Reduction JSTypedLowering::ReduceJSStoreProperty(Node* node) { |
NodeProperties::GetControlInput(node)); |
Node* if_true = graph()->NewNode(common()->IfTrue(), branch); |
+ // TODO(titzer): Remove this hack once float32 is properly supported in |
+ // simplified lowering. |
+ if (element_access.machine_type == kRepFloat32) { |
+ value = graph()->NewNode(machine()->TruncateFloat64ToFloat32(), value); |
+ } |
Node* store = graph()->NewNode( |
simplified()->StoreElement(element_access), elements, key, value, |
NodeProperties::GetEffectInput(node), if_true); |