> De: "Rafael Winterhalter" <rafael....@gmail.com> > À: "Remi Forax" <fo...@univ-mlv.fr> > Cc: "Rafael Winterhalter" <winterhal...@openjdk.java.net>, "core-libs-dev" > <core-libs-dev@openjdk.java.net>, "serviceability-dev" > <serviceability-...@openjdk.java.net> > Envoyé: Vendredi 16 Avril 2021 18:27:46 > Objet: Re: RFR: 8200559: Java agents doing instrumentation need a means to > define auxilary classes
> Not by my understanding. A suitable lookup requires a loaded class for the > package. A Java agent might however not provide a handle for a class that is > not yet loaded. Or how would you suggest to approach this ? yes, you need a witness class in the package you want to define a new class. Apart if you load classes in the unamed module, you can not load a class in a non existing package anyway (apart if you generate your own module-info), so you need at least a dummy class to define a package, so you can use it to get a Lookup. Rémi > Am Fr., 16. Apr. 2021 um 16:21 Uhr schrieb Remi Forax < [ > mailto:fo...@univ-mlv.fr | fo...@univ-mlv.fr ] >: >> ----- Mail original ----- >>> De: "Rafael Winterhalter" < [ mailto:winterhal...@openjdk.java.net | >> > winterhal...@openjdk.java.net ] > >>> À: "core-libs-dev" < [ mailto:core-libs-dev@openjdk.java.net | >>> core-libs-dev@openjdk.java.net ] >, "serviceability-dev" < [ >>> mailto:serviceability-...@openjdk.java.net | >> > serviceability-...@openjdk.java.net ] > >> > Envoyé: Vendredi 16 Avril 2021 15:52:07 >>> Objet: RFR: 8200559: Java agents doing instrumentation need a means to >>> define >> > auxilary classes >> > To allow agents the definition of auxiliary classes, an API is needed to >> > allow >> > this. Currently, this is often achieved by using `sun.misc.Unsafe` or >> > `jdk.internal.misc.Unsafe` ever since the `defineClass` method was removed >> > from >> > `sun.misc.Unsafe`. >> You can already use Lookup.defineClass() + privateLookupIn() + >> Instrumentation.redefineModule() for that ? >> Rémi >> > ------------- >> > Commit messages: >> > - 8200559: Java agents doing instrumentation need a means to define >> > auxiliary >> > classes >>> Changes: [ https://git.openjdk.java.net/jdk/pull/3546/files | >> > https://git.openjdk.java.net/jdk/pull/3546/files ] >>> Webrev: [ https://webrevs.openjdk.java.net/?repo=jdk&pr=3546&range=00 | >> > https://webrevs.openjdk.java.net/?repo=jdk&pr=3546&range=00 ] >>> Issue: [ https://bugs.openjdk.java.net/browse/JDK-8200559 | >> > https://bugs.openjdk.java.net/browse/JDK-8200559 ] >> > Stats: 185 lines in 4 files changed: 185 ins; 0 del; 0 mod >>> Patch: [ https://git.openjdk.java.net/jdk/pull/3546.diff | >> > https://git.openjdk.java.net/jdk/pull/3546.diff ] >>> Fetch: git fetch [ https://git.openjdk.java.net/jdk | >> > https://git.openjdk.java.net/jdk ] pull/3546/head:pull/3546 >>> PR: [ https://git.openjdk.java.net/jdk/pull/3546 | >> > https://git.openjdk.java.net/jdk/pull/3546 ]