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");
-
}