Bug in MethodHandles.insertArguments

Rémi Forax forax at univ-mlv.fr
Fri May 14 03:07:03 PDT 2010


Hi all,
a rogue path in my implementation allows to bound null to a virtual method.
Instead of a NPE, I got an InternalError :(

import java.dyn.MethodHandle;
import java.dyn.MethodHandles;
import java.dyn.MethodType;

public class InsertArgumentsBug {
   public int f(int i) {
     return i;
   }

   public static void main(String[] args) {
     MethodHandle mh = 
MethodHandles.lookup().findVirtual(InsertArgumentsBug.class, "f",
         MethodType.methodType(int.class, int.class));
     mh = MethodHandles.insertArguments(mh, 0, (Object)null);
   }
}


Exception in thread "main" java.lang.InternalError
     at sun.dyn.MethodHandleNatives.init(Native Method)
     at sun.dyn.BoundMethodHandle.initTarget(BoundMethodHandle.java:96)
     at sun.dyn.BoundMethodHandle.<init>(BoundMethodHandle.java:90)
     at sun.dyn.BoundMethodHandle.<init>(BoundMethodHandle.java:75)
     at sun.dyn.MethodHandleImpl.bindReceiver(MethodHandleImpl.java:441)
     at java.dyn.MethodHandles.insertArguments(MethodHandles.java:994)
     at InsertArgumentsBug.main(InsertArgumentsBug.java:13)

cheers,
Rémi



More information about the mlvm-dev mailing list