changeset 23750:b39b4a11c1d1

restore API - backward compatibilty support for Graal
author Doug Simon <doug.simon@oracle.com>
date Wed, 07 Sep 2016 16:45:44 +0200
parents d6bd0b9cd0b6
children b1b5c71c04b7
files jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotModifiers.java jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ModifiersProvider.java
diffstat 2 files changed, 20 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotModifiers.java	Wed Sep 07 15:17:13 2016 +0200
+++ b/jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotModifiers.java	Wed Sep 07 16:45:44 2016 +0200
@@ -42,7 +42,7 @@
  * The modifiers not public in {@link Modifier} that need to be retrieved from
  * {@link HotSpotVMConfig}.
  */
-interface HotSpotModifiers {
+public interface HotSpotModifiers {
 
     // @formatter:off
     int ANNOTATION = config().jvmAccAnnotation;
--- a/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ModifiersProvider.java	Wed Sep 07 15:17:13 2016 +0200
+++ b/jvmci/jdk.vm.ci.meta/src/jdk/vm/ci/meta/ModifiersProvider.java	Wed Sep 07 16:45:44 2016 +0200
@@ -22,9 +22,13 @@
  */
 package jdk.vm.ci.meta;
 
+import static java.lang.reflect.Modifier.FINAL;
 import static java.lang.reflect.Modifier.PRIVATE;
 import static java.lang.reflect.Modifier.PROTECTED;
 import static java.lang.reflect.Modifier.PUBLIC;
+import static java.lang.reflect.Modifier.STATIC;
+import static java.lang.reflect.Modifier.TRANSIENT;
+import static java.lang.reflect.Modifier.VOLATILE;
 
 import java.lang.reflect.Modifier;
 
@@ -144,4 +148,19 @@
     default boolean isConcrete() {
         return !isAbstract();
     }
+
+    /**
+     * This is removed in JDK 9 and should not be used. It used to rely on use of reflection to read
+     * non-public values from {@link Modifier}. Such cross-module (i.e., {@code jdk.vm.ci} to
+     * {@code java.base}) reflection is disabled in 9 and will require a VM option such
+     * {@code --add-exports-private} to be enabled.
+     */
+    @Deprecated
+    static int jvmFieldModifiers() {
+        // Reflection replaced with hard coded values (which will not change in JDK 8).
+        final int accEnum = 0x4000;
+        final int accSynthethic = 0x1000;
+        return PUBLIC | PRIVATE | PROTECTED | STATIC | FINAL | VOLATILE | TRANSIENT | accEnum | accSynthethic;
+    }
+
 }