comparison graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java @ 19048:b300d1f6e817

schedule inputs of proxy nodes at the loop exit
author Lukas Stadler <lukas.stadler@oracle.com>
date Fri, 30 Jan 2015 20:52:39 +0100
parents 84bf57a0ddcb
children db390d92bb16
comparison
equal deleted inserted replaced
19047:173bdcc85ab8 19048:b300d1f6e817
1066 } 1066 }
1067 } 1067 }
1068 } 1068 }
1069 1069
1070 private void addToLatestSorting(ValueNode i, SortState state) { 1070 private void addToLatestSorting(ValueNode i, SortState state) {
1071 if (i == null || state.isVisited(i) || cfg.getNodeToBlock().get(i) != state.currentBlock() || i instanceof PhiNode || i instanceof ProxyNode) { 1071 if (i == null || state.isVisited(i) || cfg.getNodeToBlock().get(i) != state.currentBlock() || i instanceof PhiNode) {
1072 return; 1072 return;
1073 } 1073 }
1074 1074
1075 FrameState stateAfter = null; 1075 FrameState stateAfter = null;
1076 if (i instanceof StateSplit) { 1076 if (i instanceof StateSplit) {
1083 addUnscheduledToLatestSorting((FrameState) input, state); 1083 addUnscheduledToLatestSorting((FrameState) input, state);
1084 } 1084 }
1085 } else { 1085 } else {
1086 addToLatestSorting((ValueNode) input, state); 1086 addToLatestSorting((ValueNode) input, state);
1087 } 1087 }
1088 }
1089
1090 if (i instanceof ProxyNode) {
1091 return;
1088 } 1092 }
1089 1093
1090 if (state.readsSize() != 0) { 1094 if (state.readsSize() != 0) {
1091 if (i instanceof MemoryCheckpoint.Single) { 1095 if (i instanceof MemoryCheckpoint.Single) {
1092 LocationIdentity identity = ((MemoryCheckpoint.Single) i).getLocationIdentity(); 1096 LocationIdentity identity = ((MemoryCheckpoint.Single) i).getLocationIdentity();