Allow for class not yet loaded when rewriting invokedynamic

This commit is contained in:
Andy Clement
2014-05-20 22:53:41 -07:00
parent 8c49ba3822
commit 9574b11446

View File

@@ -992,10 +992,11 @@ public class MethodInvokerRewriter {
@Override
public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) {
// TODO *shudder* what about invoke dynamic calls that target reflective APIs
int classId = typeRegistry.getTypeIdFor(slashedclassname, false);
int classId = typeRegistry.getTypeIdFor(slashedclassname, true);
if (classId==-1) {
throw new IllegalStateException();
throw new IllegalStateException("Unable to find classId for "+slashedclassname+" referenced from invokedynamic in "+this.methodname+"()");
}
// Initially only rewriting use of INVOKEDYNAMIC to support Lambda execution
// TODO support the more general invokedynamic usage