[10] RFR: 8182487: Add Unsafe.objectFieldOffset(Class, String)

Christian Thalinger cthalinger at twitter.com
Tue Jun 20 19:26:14 UTC 2017


> On Jun 20, 2017, at 3:14 AM, Claes Redestad <claes.redestad at oracle.com> wrote:
> 
> Hi,
> 
> as a startup optimization, we can avoid a number of reflective operations on
> variouscore classes by adding a specialized objectFieldOffset method taking
> Class and String rather than Field:
> 
> Webrev: https://bugs.openjdk.java.net/browse/JDK-8182487
> Hotspot: http://cr.openjdk.java.net/~redestad/8182487/hotspot.00 <http://cr.openjdk.java.net/~redestad/8182487/hotspot.00>

While you are cleaning this up, could we remove that code:

+static inline void throw_new(JNIEnv *env, const char *ename) {
+  char buf[100];
+
+  jio_snprintf(buf, 100, "%s%s", "java/lang/", ename);

and instead pass the whole java/lang/* string?

> JDK: http://cr.openjdk.java.net/~redestad/8182487/jdk.00
> 
> On startup tests this reduces executed instructions by ~1-2M, depending on
> how many of the touched classes are loaded.
> 
> Since all uses of this would throw an Error, InternalError or
> ExceptionInInitializerError if the field was missing - effectively
> aborting VM execution - it felt reasonable to simplify the code to
> consistently throw InternalError and remove a number of distracting
> try-catch blocks.
> 
> Thanks!
> 
> /Claes



More information about the hotspot-runtime-dev mailing list