Index: src/compiler/osr.cc |
diff --git a/src/compiler/osr.cc b/src/compiler/osr.cc |
index fb5716a4961052f1857952150a8bd9398ed28aa5..6c4c49de7981657e86ef4c253668ea4cc16a6b7c 100644 |
--- a/src/compiler/osr.cc |
+++ b/src/compiler/osr.cc |
@@ -249,40 +249,6 @@ static void PeelOuterLoopsForOsr(Graph* graph, CommonOperatorBuilder* common, |
} |
-static void TransferOsrValueTypesFromLoopPhis(Zone* zone, Node* osr_loop_entry, |
- Node* osr_loop) { |
titzer
2015/07/06 09:12:34
I don't think it's necessary to delete this code.
Benedikt Meurer
2015/07/06 09:15:03
This is the main cause for the bug. So we could on
|
- // Find the index of the osr loop entry into the loop. |
- int index = 0; |
- for (index = 0; index < osr_loop->InputCount(); index++) { |
- if (osr_loop->InputAt(index) == osr_loop_entry) break; |
- } |
- if (index == osr_loop->InputCount()) return; |
- |
- for (Node* osr_value : osr_loop_entry->uses()) { |
- if (osr_value->opcode() != IrOpcode::kOsrValue) continue; |
- bool unknown = true; |
- for (Node* phi : osr_value->uses()) { |
- if (phi->opcode() != IrOpcode::kPhi) continue; |
- if (NodeProperties::GetControlInput(phi) != osr_loop) continue; |
- if (phi->InputAt(index) != osr_value) continue; |
- if (NodeProperties::IsTyped(phi)) { |
- // Transfer the type from the phi to the OSR value itself. |
- Bounds phi_bounds = NodeProperties::GetBounds(phi); |
- if (unknown) { |
- NodeProperties::SetBounds(osr_value, phi_bounds); |
- } else { |
- Bounds osr_bounds = NodeProperties::GetBounds(osr_value); |
- NodeProperties::SetBounds(osr_value, |
- Bounds::Both(phi_bounds, osr_bounds, zone)); |
- } |
- unknown = false; |
- } |
- } |
- if (unknown) NodeProperties::SetBounds(osr_value, Bounds::Unbounded(zone)); |
- } |
-} |
- |
- |
void OsrHelper::Deconstruct(JSGraph* jsgraph, CommonOperatorBuilder* common, |
Zone* tmp_zone) { |
Graph* graph = jsgraph->graph(); |
@@ -313,9 +279,6 @@ void OsrHelper::Deconstruct(JSGraph* jsgraph, CommonOperatorBuilder* common, |
CHECK(osr_loop); // Should have found the OSR loop. |
- // Transfer the types from loop phis to the OSR values which flow into them. |
- TransferOsrValueTypesFromLoopPhis(graph->zone(), osr_loop_entry, osr_loop); |
- |
// Analyze the graph to determine how deeply nested the OSR loop is. |
LoopTree* loop_tree = LoopFinder::BuildLoopTree(graph, tmp_zone); |