Request for reviews (XL): 6939134: JSR 292 adjustments to method handle invocation
John.Rose at Sun.COM
Mon Mar 29 18:53:40 PDT 2010
This review request is specifically for JVM changes. They will be coordinated with the following JDK and javac changes:
6939134: JSR 292 adjustments to method handle invocation
Summary: split MethodHandle.invoke into invokeExact and invokeGeneric; also clean up JVM-to-Java interfaces
The JSR 292 EG has decided to split MethodHandle.invoke into two methods, invokeExact and invokeGeneric. The EG has also decided to simplify the process of CallSite bootstrapping. These changes require updates to the toolchain and JVM.
This bug is the first part of a two part change. This change updates the CallSite API. It renames MH.invoke to invokeExact and introduces invokeGeneric as a separately recognized operation, but does not give the two operations distinct semantics. A following bug will give invokeGeneric its distinct semantics.
Changes to be done in this part include:
- Recognize signature-polymorphic methods MH.invoke* and InDy.* via special IDs vmIntrinsics::_invoke*.
- Make the vmSymbols::SID visible through the ciSymbol API.
- Adding some mode bits to the key of SymbolPropertyTable (to distinguish invokeExact/invokeGeneric).
- Improve the debug printing code for methodOop (notably, to show intrinsic ID).
- Remove unused arguments and dead code.
Specific changes to the private interface between the JVM and Java code:
- Move misc. upcalls to a single implementation-private interface class, MethodHandleNatives.
- Reduce the VM's entanglement with CallSite by removing some hardwired fields from CS.
- Pass more information to the Java code when bootstrapping a CallSite.
- Obtain MethodHandleNatives.CONV_OP_IMPLEMENTED_MASK from the JVM, which knows the correct mask.
- Use only the JVM to store bootstrap methods, not a Java-level hash table.
- Adjust access checks (under VerifyMethodHandles) for Direct MHs and MemberNames, to reduce test failures in debug mode.
P.S. I know the index pages are formatted awkwardly. Will fix tomorrow.
More information about the hotspot-compiler-dev