From 33996155208bb1fa4a6a41578f114a99be618ad9 Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Mon, 17 Apr 2023 06:58:12 -0700 Subject: [PATCH] Use Lookup.class as the base when retrieving trusted lookup because we know that's where the field is declared. Fixes #1673 Fixes #1672 PiperOrigin-RevId: 524835342 --- .../com/google/inject/internal/aop/HiddenClassDefiner.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/com/google/inject/internal/aop/HiddenClassDefiner.java b/core/src/com/google/inject/internal/aop/HiddenClassDefiner.java index 8e95263752..af36f7be0c 100644 --- a/core/src/com/google/inject/internal/aop/HiddenClassDefiner.java +++ b/core/src/com/google/inject/internal/aop/HiddenClassDefiner.java @@ -29,7 +29,6 @@ final class HiddenClassDefiner implements ClassDefiner { private static final Object THE_UNSAFE; - private static final Object TRUSTED_LOOKUP_BASE; private static final Object TRUSTED_LOOKUP_OFFSET; private static final Method GET_OBJECT_METHOD; private static final Object HIDDEN_CLASS_OPTIONS; @@ -42,8 +41,6 @@ final class HiddenClassDefiner implements ClassDefiner { theUnsafeField.setAccessible(true); THE_UNSAFE = theUnsafeField.get(null); Field trustedLookupField = Lookup.class.getDeclaredField("IMPL_LOOKUP"); - Method baseMethod = unsafeType.getMethod("staticFieldBase", Field.class); - TRUSTED_LOOKUP_BASE = baseMethod.invoke(THE_UNSAFE, trustedLookupField); Method offsetMethod = unsafeType.getMethod("staticFieldOffset", Field.class); TRUSTED_LOOKUP_OFFSET = offsetMethod.invoke(THE_UNSAFE, trustedLookupField); GET_OBJECT_METHOD = unsafeType.getMethod("getObject", Object.class, long.class); @@ -59,7 +56,7 @@ final class HiddenClassDefiner implements ClassDefiner { @Override public Class define(Class hostClass, byte[] bytecode) throws Exception { Lookup trustedLookup = - (Lookup) GET_OBJECT_METHOD.invoke(THE_UNSAFE, TRUSTED_LOOKUP_BASE, TRUSTED_LOOKUP_OFFSET); + (Lookup) GET_OBJECT_METHOD.invoke(THE_UNSAFE, Lookup.class, TRUSTED_LOOKUP_OFFSET); Lookup definedLookup = (Lookup) HIDDEN_DEFINE_METHOD.invoke(