From c3487661d5b36c33a0e89afc38fb65c3e5351b08 Mon Sep 17 00:00:00 2001 From: xDark <19853368+xxDark@users.noreply.github.com> Date: Mon, 22 Feb 2021 22:05:13 +0300 Subject: [PATCH] Fix an issue with OpenJ9 --- pom.xml | 4 ++-- src/com/nqzero/permit/Permit.java | 29 +++-------------------------- src/com/nqzero/permit/Unsafer.java | 20 +++++++++++--------- 3 files changed, 16 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 2305a06..a2babe4 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,8 @@ src - 1.6 - 1.6 + 1.8 + 1.8 permit-reflect reflection utils for jigsaw diff --git a/src/com/nqzero/permit/Permit.java b/src/com/nqzero/permit/Permit.java index 33c065e..5831a34 100644 --- a/src/com/nqzero/permit/Permit.java +++ b/src/com/nqzero/permit/Permit.java @@ -1,4 +1,4 @@ -// copyright 2018 nqzero - offered under the terms of the MIT License +// copyright 2021 nqzero - offered under the terms of the MIT License package com.nqzero.permit; @@ -13,36 +13,13 @@ public class Permit extends Safer { public static final String splitChar = "\\."; static Exception savedEx; - static Permit override; - static { - getOverride(); - } - static void getOverride() { - Permit fake = null; - Exception saved = null; - try { override = build(AccessibleObject.class,"override"); } - catch (Exception ex) { saved = ex; } - if (saved != null) - try { - fake = build(Fake.class,"override"); - fake.klass = AccessibleObject.class; - override = fake; - return; - } - catch (Exception ex) {} - savedEx = saved; - } - public static void setAccessible(AccessibleObject accessor) throws InitializationFailed { if (savedEx != null) throw new InitializationFailed(); - override.putBoolean(accessor,true); - } - static class Fake { - boolean override; + accessor.setAccessible(true); } - + public static boolean initSucceeded(boolean rethrow) { if (savedEx==null) return true; diff --git a/src/com/nqzero/permit/Unsafer.java b/src/com/nqzero/permit/Unsafer.java index 5137a60..3194304 100644 --- a/src/com/nqzero/permit/Unsafer.java +++ b/src/com/nqzero/permit/Unsafer.java @@ -1,19 +1,21 @@ -// copyright 2018 nqzero - offered under the terms of the MIT License +// copyright 2021 nqzero - offered under the terms of the MIT License package com.nqzero.permit; import java.lang.reflect.Field; +import sun.misc.Unsafe; public class Unsafer { - private static Object getField(Class klass,String name) { + + public static final Unsafe uu; + + static { try { - Field f = klass.getDeclaredField(name); - f.setAccessible(true); - return f.get(null); + Field field = Unsafe.class.getDeclaredField("theUnsafe"); + field.setAccessible(true); + uu = (Unsafe) field.get(null); + } catch (IllegalAccessException | NoSuchFieldException e) { + throw new ExceptionInInitializerError(e); } - catch (Exception e) { return null; } } - public static final sun.misc.Unsafe uu = - (sun.misc.Unsafe) getField(sun.misc.Unsafe.class,"theUnsafe"); - }