Hi, since I am indirectly the reporter of this bug I have one remark for the test. The error happens only for compiled lambda forms. The given test does imho not use a compiled lambda form. In other words, afaik the test would pass without the fix. As such it would be useless as regression test.
Am 15.01.2014 16:31, schrieb Vladimir Ivanov: > http://cr.openjdk.java.net/~vlivanov/8031502/webrev.00/ > https://bugs.openjdk.java.net/browse/JDK-8031502 > > InvokeBytecodeGenerator can produce incorrect bytecode for a LambdaForm > when invoking a method from Object declared in an interface. > > The problem is the following: > (1) java.lang.CharSequence interface declares abstract method "String > toString()"; > > (2) after 8014013 fix, VM resolves > CharSequence::toString()/invokeInterface to > CharSequence::toString()/invokeVirtual; > > (3) during LambdaForm compilation, CharSequence is considered > statically invocable (see > InvokeBytecodeGenerator::isStaticallyInvocable) and invokevirtual for > CharSequence::toString() is issued, which is wrong (invokevirtual throws > ICCE if it references an interface); > > The fix is straightforward: during LambdaForm compilation, switch back > from invokevirtual to invokeinterface instruction when invoking a method > on an interface. > > The fix is targeted for 8. Will be also integrated into 9. > > Testing: regression test, jdk/test/java/lang/invoke, vm.mlvm.testlist, > nashorn, jruby. > > Thanks! > > Best regards, > Vladimir Ivanov > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > -- Jochen "blackdrag" Theodorou - Groovy Project Tech Lead blog: http://blackdragsview.blogspot.com/ german groovy discussion newsgroup: de.comp.lang.misc For Groovy programming sources visit http://groovy-lang.org _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev