Hi Michael,

In the JEP's description you write:

   /"The loadCode method creates a method from the passed bytecode
   instructions and constants and returns a MethodHandle that can be
   used to call the method. The implementation of loadCode will take
   care of verification of the code to load.//"/

//
That's clear.

//

   /"This method is isolated from any class and behaves largely like a
   static method. The method handle resulting from a loadCode
   invocation is of the REF_static kind. It cannot be cracked via
   MethodHandles.Lookup.revealDirect().//"/


So there will be no class hosting this method? Not even the "caller" class of the Lookup instance that loadCode was invoked upon? What will be reported by Reflection.getCallerClass() invoked in a @CallerSensitive method invoked from the isolated method? Perhaps the following is a hint...

//

   /"The context for a method defined in this way is determined by the
   Lookup instance receiving the loadCode call. In case the lookup
   privileges are not sufficient, an exception will be thrown.//"

   /

The "context" meaning the caller context, including the caller class that appears in the stack trace of a call originating from an isolated method and is important for security decisions?

In which case would lookup privileges be insufficient to define an isolated method? I would expect the privileges of the code in the isolated method to be checked when such method is executed and not when defining such method - lazily, like for normal methods. In which case it is important which "caller" class the privileges are check against. This would most naturally be the "caller" class of the Lookup instance used to define the method. In all respects the code of such isolated method would appear to be defined in the lookup class except it would not be denotable symbolically - only through a MethodHandle. Analogous to VM-anonymous classes. So why not call such methods "anonymous methods" instead of isolated methods?


Regards, Peter


On 08/05/2016 06:33 PM, Michael Haupt wrote:
Dear all,

during the Indy workshop at JVMLS, a JEP draft supposed to enable the loading of methods in isolation was mentioned and discussed. This JEP draft is now public, and I'd like to invite The Interested Parties (you know who you are) to tear it apart in a constructive manner. :-)

https://bugs.openjdk.java.net/browse/JDK-8158765

Thanks,

Michael

--

Oracle <http://www.oracle.com/>
Dr. Michael Haupt | Principal Member of Technical Staff
Phone: +49 331 200 7277 | Fax: +49 331 200 7561
OracleJava Platform Group | LangTools Team | Nashorn
Oracle Deutschland B.V. & Co. KG | Schiffbauergasse 14 | 14467 Potsdam, Germany

ORACLE Deutschland B.V. & Co. KG | Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V. | Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Nederland, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher
Green Oracle <http://www.oracle.com/commitment> Oracle is committed to developing practices and products that help protect the environment




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

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

Reply via email to