Mercurial > hg > graal-compiler
comparison graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java @ 2837:7b5831f0e913
Merge.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Tue, 31 May 2011 13:42:01 +0200 |
parents | a75ef246fab3 c1c8a0291771 |
children | 75e0d39833a0 c061a6be3728 |
comparison
equal
deleted
inserted
replaced
2836:a75ef246fab3 | 2837:7b5831f0e913 |
---|---|
609 private void genThrow(int bci) { | 609 private void genThrow(int bci) { |
610 Value exception = frameState.apop(); | 610 Value exception = frameState.apop(); |
611 append(new NullCheck(exception, graph)); | 611 append(new NullCheck(exception, graph)); |
612 Instruction entry = handleException(exception, bci); | 612 Instruction entry = handleException(exception, bci); |
613 if (entry == null) { | 613 if (entry == null) { |
614 entry = new Unwind(exception, graph); | 614 entry = new Unwind(exception, graph.end(), graph); |
615 } | 615 } |
616 append(entry); | 616 append(entry); |
617 } | 617 } |
618 | 618 |
619 private void genCheckCast() { | 619 private void genCheckCast() { |
1078 assert lock != null; | 1078 assert lock != null; |
1079 assert frameState.locksSize() > 0 && frameState.lockAt(frameState.locksSize() - 1) == lock; | 1079 assert frameState.locksSize() > 0 && frameState.lockAt(frameState.locksSize() - 1) == lock; |
1080 | 1080 |
1081 // Exit the monitor and unwind the stack. | 1081 // Exit the monitor and unwind the stack. |
1082 genMonitorExit(lock); | 1082 genMonitorExit(lock); |
1083 append(new Unwind(frameState.apop(), graph)); | 1083 append(new Unwind(frameState.apop(), graph.end(), graph)); |
1084 | 1084 |
1085 // The sync handler is always the last thing to add => we can clear the frameState. | 1085 // The sync handler is always the last thing to add => we can clear the frameState. |
1086 frameState = null; | 1086 frameState = null; |
1087 lastInstr = null; | 1087 lastInstr = null; |
1088 } | 1088 } |
1147 append(lockAddress); | 1147 append(lockAddress); |
1148 } | 1148 } |
1149 append(new MonitorExit(rootMethodSynchronizedObject, lockAddress, lockNumber, graph)); | 1149 append(new MonitorExit(rootMethodSynchronizedObject, lockAddress, lockNumber, graph)); |
1150 frameState.unlock(); | 1150 frameState.unlock(); |
1151 } | 1151 } |
1152 append(new Unwind(frameState.apop(), graph)); | 1152 append(new Unwind(frameState.apop(), graph.end(), graph)); |
1153 } else { | 1153 } else { |
1154 assert frameState.stackSize() == 1; | 1154 assert frameState.stackSize() == 1; |
1155 | 1155 |
1156 if (block.handler.catchType().isResolved()) { | 1156 if (block.handler.catchType().isResolved()) { |
1157 Instruction catchSuccessor = createTarget(blockFromBci[block.handler.handlerBCI()], frameState); | 1157 Instruction catchSuccessor = createTarget(blockFromBci[block.handler.handlerBCI()], frameState); |