diff -r 825f23a4f262 -r e2722bd43f3a src/share/classes/com/sun/tools/javac/jvm/Code.java --- a/src/share/classes/com/sun/tools/javac/jvm/Code.java Thu Apr 16 11:23:02 2009 -0700 +++ b/src/share/classes/com/sun/tools/javac/jvm/Code.java Mon May 04 21:04:04 2009 -0700 @@ -456,6 +456,19 @@ state.push(mtype.getReturnType()); } + /** Emit an invokedynamic instruction. + */ + public void emitInvokedynamic(int desc, Type mtype) { + // N.B. this format is under consideration by the JSR 292 EG + int argsize = width(mtype.getParameterTypes()); + emitop(invokedynamic); + if (!alive) return; + emit2(desc); + emit2(0); + state.pop(argsize); + state.push(mtype.getReturnType()); + } + /** Emit an opcode with no operand field. */ public void emitop0(int op) { @@ -2156,7 +2169,7 @@ mnem[invokespecial] = "invokespecial"; mnem[invokestatic] = "invokestatic"; mnem[invokeinterface] = "invokeinterface"; - // mnem[___unused___] = "___unused___"; + mnem[invokedynamic] = "invokedynamic"; mnem[new_] = "new_"; mnem[newarray] = "newarray"; mnem[anewarray] = "anewarray";