# HG changeset patch # User Thomas Wuerthinger # Date 1424647452 -3600 # Node ID 0362d64c0cd4d2fc134585cc0969263bb73f5959 # Parent 10a0f4aef97c4f80d0ce7206b7c9de1362f5845c Small refactoring of DUP/POP bytecode processing. diff -r 10a0f4aef97c -r 0362d64c0cd4 graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Mon Feb 23 00:12:52 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Mon Feb 23 00:24:12 2015 +0100 @@ -223,21 +223,6 @@ private void stackOp(int opcode) { switch (opcode) { - case POP: { - frameState.xpop(); - break; - } - case POP2: { - frameState.xpop(); - frameState.xpop(); - break; - } - case DUP: { - ValueNode w = frameState.xpop(); - frameState.xpush(w); - frameState.xpush(w); - break; - } case DUP_X1: { ValueNode w1 = frameState.xpop(); ValueNode w2 = frameState.xpop(); @@ -1050,9 +1035,9 @@ case BASTORE : genStoreIndexed(Kind.Byte ); break; case CASTORE : genStoreIndexed(Kind.Char ); break; case SASTORE : genStoreIndexed(Kind.Short ); break; - case POP : // fall through - case POP2 : // fall through - case DUP : // fall through + case POP : frameState.xpop(); break; + case POP2 : frameState.xpop(); frameState.xpop(); break; + case DUP : frameState.xpush(frameState.xpeek()); break; case DUP_X1 : // fall through case DUP_X2 : // fall through case DUP2 : // fall through diff -r 10a0f4aef97c -r 0362d64c0cd4 graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java Mon Feb 23 00:12:52 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/HIRFrameStateBuilder.java Mon Feb 23 00:24:12 2015 +0100 @@ -711,7 +711,7 @@ return stack[--stackSize]; } - private ValueNode xpeek() { + public ValueNode xpeek() { return stack[stackSize - 1]; }