Fwd: review request (XL): 6839872: remove implementation inheritance from JSR 292 APIs

John Rose john.r.rose at oracle.com
Sun Feb 27 02:24:16 PST 2011


There will be a corresponding set of JVM changes out for review soon.

A draft of them is already pushed to the patch repo:
  http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/meth-impl-6839872.patch

-- John

From: John Rose <john.r.rose at oracle.com>
Date: February 27, 2011 2:18:46 AM PST
To: Da Vinci Machine Project <mlvm-dev at openjdk.java.net>
Subject: review request (XL): 6839872: remove implementation inheritance from JSR 292 APIs

http://cr.openjdk.java.net/~jrose/6839872/jdk-webrev.00/

Summary: move everything into a single package; remove all multi-package machinery

This is a complex change which consolidates the code into a single package, to prepare for a clean rename from java.dyn to java.lang.invoke.  

This also fixes some defects in the API which arise from dependencies between multiple packages.  That was the original motivation of bug 6839872.

For ease of review, this change may be reviewed in seven parts:
 - meth-impl-6839872.1-rename.patch moves files between packages
 - meth-impl-6839872.2-super.patch merges sun.dyn superclasses into java.dyn subclasses
 - meth-impl-6839872.3-moves.patch moves some method code around in java.dyn classes
 - meth-impl-6839872.4-vconv.patch addresses a dependency from ValueConversions
 - meth-impl-6839872.5-mtform.patch removes a cross-package wormhole from MethodType & MethodTypeForm
 - meth-impl-6839872.6-access.patch removes cross-package access checking
 - meth-impl-6839872.7-misc.patch is a few more miscellaneous changes

These individual patches may be found in the mlvm repository:
  http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/

-rw-r--r--	36661	meth-impl-6839872.1-rename.patch	file | revisions | annotate
-rw-r--r--	24772	meth-impl-6839872.2-super.patch	file | revisions | annotate
-rw-r--r--	45216	meth-impl-6839872.3-moves.patch	file | revisions | annotate
-rw-r--r--	6895	meth-impl-6839872.4-vconv.patch	file | revisions | annotate
-rw-r--r--	23819	meth-impl-6839872.5-mtform.patch	file | revisions | annotate
-rw-r--r--	89039	meth-impl-6839872.6-access.patch	file | revisions | annotate
-rw-r--r--	19404	meth-impl-6839872.7-misc.patch	file | revisions | annotate



____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.1-rename.patch

rev 3506 : factored part of meth-impl-6839872.patch

Move almost all files from sun.dyn.* to java.dyn.

Exceptions:
 - WrapperInstance needs to be a public interface, but is not part of API, so must be in sun.dyn.
 - sun.dyn.Access is going away in a subsequent part of this change set
 - package-info.java stays

Other changes:
 - change occurrences of Access.TOKEN to IMPL_TOKEN
 - added java.dyn.MethodHandleStatics to hold IMPL_TOKEN, temporarily
 - asked NetBeans to fix imports in all files
 - remove MemberName-based test
 - remove MethodTypeForm (*)

The removal of MethodTypeForm is a breaking change.
Apart from this change, the software continues to build correctly after this patch.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.2-super.patch

rev 3507 : factored part of meth-impl-6839872.patch

 - After move from sun.dyn.* to java.dyn, merge sun.dyn superclasses into java.dyn subclasses.
 - Move fields and constructor for MethodHandleImpl into MethodHandle.  Keep factory methods.
 - Rename MethodTypeImpl to MethodTypeForm, thereby moving fields and constructor.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.3-moves.patch

rev 3508 : factored part of meth-impl-6839872.patch

Move some misplaced methods and constants between classes.

Also:
 - Move some functions verbatim into MethodHandleStatics.
 - Move raiseException and checkSpreadArgument into MethodHandleNatives, for the JVM.
 - Move all of CallSiteImpl into CallSite.
 - Move some exception creation functions from MemberName into MethodHandleStatics, with light refactoring.
 - Change newNoAccessException to a virtual function MemberName.makeAccessException.
 - Remove an extra copy of IMPL_LOOKUP; import it regularly from MethodHandles.Lookup.
 - Remove an inconvenient dependency from MethodHandles.<clinit> to IMPL_LOOKUP.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.4-vconv.patch

rev 3509 : factored part of meth-impl-6839872.patch

Deal with an external dependency from sun.dyn.util.ValueConversions to privileged MH access.
Remove "raw retype" capabilities from ValueConversions, moving them into the trusted package.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.5-mtform.patch

rev 3510 : Remove MethodTypeFriend, a "wormhole" for privileged communication between a MethodType and its Form.

Use trusted package-private methods on MethodType for such communication instead.

Also, put the internal Invokers struct from a virtual method on MethodType.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.6-access.patch

rev 3511 : factored part of meth-impl-6839872.patch

 - Remove the Access class and all uses.
 - Remove most public access modifiers on non-public class members.

This is a large volume of simple change.

All privileged methods become non-public, and lose their first "Access token" arguments.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

____________________________________________________________

http://hg.openjdk.java.net/mlvm/mlvm/jdk/file/tip/meth-impl-6839872.7-misc.patch

rev 3512 : Miscellaneous changes.

After this change, this JDK software builds and passes basic unit tests with the corresponding JVM.

_______________________________________________
mlvm-dev mailing list
mlvm-dev at openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20110227/acb1f42c/attachment-0001.html 


More information about the hotspot-compiler-dev mailing list