another Mac OS X mlvm build
Rémi Forax
forax at univ-mlv.fr
Mon Feb 7 11:40:40 PST 2011
On 02/07/2011 07:00 PM, Attila Szegedi wrote:
> Hi Stephan (and MLVM folks in general),
>
> I have problems with this build. Here's a _very_ minimal testcase:
>
> public class X {
> public static void main(String[] args) {
> new java.dyn.MutableCallSite(java.dyn.MethodType.methodType(Void.TYPE));
> }
> }
I can reproduce it on Linux.
There is a bug in the initialization order between Lookup and
MethodHandleImpl.
Lookup should be initialized first then MethodHandleImpl but in
MethodHandles (near line 306)
IMPL_TOKEN.getClass() is called before MethodHandleImpl.initLookup (near
line 316)
The temporary workaround is to initialize Lookup first:
public static void main(String[] args) {
MethodHandles.lookup();
new
java.dyn.MutableCallSite(java.dyn.MethodType.methodType(Void.TYPE));
}
> compiling then running it produces this output:
>
> $ ~/Downloads/java-1.7.0-internal-mlvm-2011_01_31/bin/javac X.java
> $ ~/Downloads/java-1.7.0-internal-mlvm-2011_01_31/bin/java -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic X
> VM option '+UnlockExperimentalVMOptions'
> VM option '+EnableInvokeDynamic'
> Exception in thread "main" java.lang.InternalError
> at sun.dyn.MethodHandleImpl.<clinit>(MethodHandleImpl.java:141)
> at java.dyn.MethodHandles.<clinit>(MethodHandles.java:63)
> at java.dyn.MethodHandles$Lookup.<clinit>(MethodHandles.java:319)
> at java.dyn.CallSite.<clinit>(CallSite.java:228)
> at X.main(X.java:5)
>
> I tried adding -XX:+EnableMethodHandles too, and that didn't help either.
>
> Here's the version:
> $ ~/Downloads/java-1.7.0-internal-mlvm-2011_01_31/bin/java -version
> openjdk version "1.7.0-internal-fastdebug"
> OpenJDK Runtime Environment (build 1.7.0-internal-fastdebug-stephen_2011_01_31_18_20-b00)
> OpenJDK 64-Bit Server VM (build 20.0-b06-fastdebug, mixed mode)
>
> This is on Mac OS X 10.6.6
>
> Attila.
Rémi
More information about the mlvm-dev
mailing list