jdk7 b58, VM doesn't smell good

Rémi Forax forax at univ-mlv.fr
Tue May 12 07:29:24 PDT 2009


John Rose a écrit :
> When experimenting with invokedynamic or even just method handles, 
> always compile with -target 7 (or -XDinvokedynamic) and run with 
> -XX:+EnableInvokeDynamic.  These defaults will get better when the EG 
> converges on the spec.
>
> The API docs don't get built, and javac claims that java.dyn doesn't 
> exist, for the same reason.  I made an error (in configuration 
> management) in the makefile which controls which APIs are officially 
> visible.  The same makefile variable ${CORE_PKGS} controls (a) which 
> classes get javadoc, and (b) which javac can see.  Quite logical, in 
> hindsight. :-)  We're fixing this in b59.
>
> I have done a build with the config change and from that build I can 
> browse the API and run javac w/o the extra "-cp rt.jar".  Xiomara is 
> going to run some more extensive builds and tests, the results of 
> which I hope will be available in the next OpenJDK build.
>
> Meanwhile, I'll release the patch to the makefile in MLVM.  (And see 
> below; it's simple.)

I've tried your patch and it partially works :(

/usr/jdk/jdk1.7.0b58b/bin/javac -source 1.7 
fr/umlv/indy/visitor/AbstractVisitor.java -d ../test-classes/
fr/umlv/indy/visitor/AbstractVisitor.java:15: cannot access 
sun.dyn.MethodHandleImpl
  private final ConcurrentHashMap<Class<?>, MethodHandle> map;
                                 ^
  class file for sun.dyn.MethodHandleImpl not found

The compiler is confused by the fact that java.dyn.MethodHandle inherits 
from sun.dyn.MethodHandleImpl
which is not visible.
We found another reason to change that design :)

Rémi

>
> There may be another problem.  I have been getting irregular success 
> from javac on Mac OS when building.  Sometimes the wrong javac gets 
> used, instead of the javac built from the mlvm/langtools patches.  The 
> symptom is that the build breaks with the compiler reporting errors on 
> method handle invocation sites (because it's not upgraded).  This must 
> happen if a partial jdk-only build is done, but it seems to happen 
> even if a full build of langtools + jdk is done.  Not sure yet what's 
> up; maybe I haven't done enough "rm -rf build", or maybe there's a 
> problem with the wrong tools.jar getting picked up by javac.  There is 
> a rumor that Mac OS javac is unusual in that it puts the system 
> tools.jar on the bootclasspath, making it hard to override.
>
> I'll look at your NPE also, Remi.  Thanks for the great reports.
>
> -- John
>
>
> diff --git a/make/docs/CORE_PKGS.gmk b/make/docs/CORE_PKGS.gmk
> --- a/make/docs/CORE_PKGS.gmk
> +++ b/make/docs/CORE_PKGS.gmk
> @@ -97,6 +97,7 @@
>    java.awt.print                                 \
>    java.beans                                     \
>    java.beans.beancontext                         \
> +  java.dyn                                       \
>    java.io                                        \
>    java.lang                                      \
>    java.lang.annotation                           \
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>   




More information about the mlvm-dev mailing list