The NoClassDefFoundError bug is back :(
Rémi Forax
forax at univ-mlv.fr
Tue Dec 6 01:34:59 PST 2011
On 12/05/2011 04:28 PM, Rémi Forax wrote:
> John, Christian,
> I was updating the multi-dispatch sample from the cookbook
> when the NoClassDefFoundError bug re-appear.
I've reduced the code to this simple sample:
public class NoClassDefFoundSample {
public void foo() {
// do nothing
}
public static void main(String[] args) {
NoClassDefFoundSample classDefFoundSample = new
NoClassDefFoundSample();
for(int i=0; i < 100000; i++) {
classDefFoundSample.foo(); // invokedynamic
}
}
}
public class NoClassDefFoundBug {
// bootstrap method
public static CallSite invokevirtual(Lookup lookup, String name,
MethodType type) throws Throwable {
MethodHandle mh = lookup.findVirtual(type.parameterType(0), name,
type.dropParameterTypes(0, 1));
CallSite invokerCallSite = new MutableCallSite(mh);
MethodHandle dynamicInvoker = invokerCallSite.dynamicInvoker();
CallSite callSite = new MutableCallSite(type);
callSite.setTarget(dynamicInvoker);
return callSite;
}
}
The sample triggers the JIT and the JITed code of the dynamicInvoker()
throws
the NoClassDefFoundError.
Code is available here:
https://code.google.com/p/jsr292-cookbook/source/browse/#svn/trunk/multi-dispatch/src/bug
https://code.google.com/p/jsr292-cookbook/source/browse/trunk/multi-dispatch/NoClassDefFoundSample.java
cheers,
Rémi
More information about the mlvm-dev
mailing list