changeset 59312:3ccdeba59e25

8229961: Assert failure in compiler/graalunit/HotspotTest.java Reviewed-by: kvn
author never
date Wed, 11 Dec 2019 09:47:41 -0800
parents 915a7b8d17a7
children d188996ea355
files src/hotspot/share/code/nmethod.cpp src/hotspot/share/code/nmethod.hpp src/hotspot/share/jvmci/jniAccessMark.inline.hpp src/hotspot/share/jvmci/jvmciCompilerToVM.cpp src/hotspot/share/jvmci/jvmciEnv.cpp src/hotspot/share/jvmci/jvmciEnv.hpp test/hotspot/jtreg/compiler/jvmci/common/CTVMUtilities.java test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/CompileCodeTestCase.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetBytecodeTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetExceptionTableTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveMethodTest.java test/hotspot/jtreg/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java
diffstat 26 files changed, 150 insertions(+), 60 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/share/code/nmethod.cpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/code/nmethod.cpp	Wed Dec 11 09:47:41 2019 -0800
@@ -1356,7 +1356,7 @@
     }
 
     // Must happen before state change. Otherwise we have a race condition in
-    // nmethod::can_not_entrant_be_converted(). I.e., a method can immediately
+    // nmethod::can_convert_to_zombie(). I.e., a method can immediately
     // transition its state from 'not_entrant' to 'zombie' without having to wait
     // for stack scanning.
     if (state == not_entrant) {
--- a/src/hotspot/share/code/nmethod.hpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/code/nmethod.hpp	Wed Dec 11 09:47:41 2019 -0800
@@ -776,9 +776,9 @@
     lock(_nm);
   }
 
-  static void lock(CompiledMethod* method) {
+  static void lock(CompiledMethod* method, bool zombie_ok = false) {
     if (method == NULL) return;
-    lock_nmethod(method);
+    lock_nmethod(method, zombie_ok);
   }
 
   static void unlock(CompiledMethod* method) {
@@ -792,10 +792,10 @@
   }
 
   CompiledMethod* code() { return _nm; }
-  void set_code(CompiledMethod* new_nm) {
+  void set_code(CompiledMethod* new_nm, bool zombie_ok = false) {
     unlock(_nm);   // note:  This works even if _nm==new_nm.
     _nm = new_nm;
-    lock(_nm);
+    lock(_nm, zombie_ok);
   }
 };
 
--- a/src/hotspot/share/jvmci/jniAccessMark.inline.hpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/jvmci/jniAccessMark.inline.hpp	Wed Dec 11 09:47:41 2019 -0800
@@ -25,6 +25,7 @@
 #ifndef SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
 #define SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
 
+#include "code/nmethod.hpp"
 #include "jvmci/jvmciEnv.hpp"
 #include "runtime/interfaceSupport.inline.hpp"
 
--- a/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/jvmci/jvmciCompilerToVM.cpp	Wed Dec 11 09:47:41 2019 -0800
@@ -980,7 +980,8 @@
   }
 
   JVMCIObject installedCodeObject = JVMCIENV->wrap(installedCode);
-  CodeBlob* cb = JVMCIENV->asCodeBlob(installedCodeObject);
+  nmethodLocker locker;
+  CodeBlob* cb = JVMCIENV->get_code_blob(installedCodeObject, locker);
   if (cb == NULL) {
     return NULL;
   }
@@ -1025,7 +1026,8 @@
   HandleMark hm;
 
   JVMCIObject nmethod_mirror = JVMCIENV->wrap(hs_nmethod);
-  nmethod* nm = JVMCIENV->asNmethod(nmethod_mirror);
+  nmethodLocker locker;
+  nmethod* nm = JVMCIENV->get_nmethod(nmethod_mirror, locker);
   if (nm == NULL) {
     JVMCI_THROW_NULL(InvalidInstalledCodeException);
   }
@@ -2447,7 +2449,8 @@
     Handle constant = thisEnv->asConstant(obj, JVMCI_CHECK_0);
     result = peerEnv->get_object_constant(constant());
   } else if (thisEnv->isa_HotSpotNmethod(obj)) {
-    nmethod* nm = thisEnv->asNmethod(obj);
+    nmethodLocker locker;
+    nmethod* nm = JVMCIENV->get_nmethod(obj, locker);
     if (nm != NULL) {
       JVMCINMethodData* data = nm->jvmci_nmethod_data();
       if (data != NULL) {
@@ -2512,12 +2515,14 @@
 C2V_VMENTRY(void, updateHotSpotNmethod, (JNIEnv* env, jobject, jobject code_handle))
   JVMCIObject code = JVMCIENV->wrap(code_handle);
   // Execute this operation for the side effect of updating the InstalledCode state
-  JVMCIENV->asNmethod(code);
+  nmethodLocker locker;
+  JVMCIENV->get_nmethod(code, locker);
 }
 
 C2V_VMENTRY_NULL(jbyteArray, getCode, (JNIEnv* env, jobject, jobject code_handle))
   JVMCIObject code = JVMCIENV->wrap(code_handle);
-  CodeBlob* cb = JVMCIENV->asCodeBlob(code);
+  nmethodLocker locker;
+  CodeBlob* cb = JVMCIENV->get_code_blob(code, locker);
   if (cb == NULL) {
     return NULL;
   }
--- a/src/hotspot/share/jvmci/jvmciEnv.cpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/jvmci/jvmciEnv.cpp	Wed Dec 11 09:47:41 2019 -0800
@@ -1476,8 +1476,8 @@
     JVMCI_THROW(NullPointerException);
   }
 
-  jlong nativeMethod = get_InstalledCode_address(mirror);
-  nmethod* nm = JVMCIENV->asNmethod(mirror);
+  nmethodLocker locker;
+  nmethod* nm = JVMCIENV->get_nmethod(mirror, locker);
   if (nm == NULL) {
     // Nothing to do
     return;
@@ -1518,45 +1518,81 @@
   return *metadataHandle;
 }
 
-
-CodeBlob* JVMCIEnv::asCodeBlob(JVMCIObject obj) {
+CodeBlob* JVMCIEnv::get_code_blob(JVMCIObject obj, nmethodLocker& locker) {
   address code = (address) get_InstalledCode_address(obj);
   if (code == NULL) {
     return NULL;
   }
   if (isa_HotSpotNmethod(obj)) {
+    nmethod* nm = NULL;
+    {
+      // Lookup the CodeBlob while holding the CodeCache_lock to ensure the nmethod can't be freed
+      // by nmethod::flush while we're interrogating it.
+      MutexLocker cm_lock(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+      CodeBlob* cb = CodeCache::find_blob_unsafe(code);
+      if (cb == (CodeBlob*) code) {
+        nmethod* the_nm = cb->as_nmethod_or_null();
+        if (the_nm != NULL && the_nm->is_alive()) {
+          // Lock the nmethod to stop any further transitions by the sweeper.  It's still possible
+          // for this code to execute in the middle of the sweeping of the nmethod but that will be
+          // handled below.
+          locker.set_code(nm, true);
+          nm = the_nm;
+        }
+      }
+    }
+
+    if (nm != NULL) {
+      // We found the nmethod but it could be in the process of being freed.  Check the state of the
+      // nmethod while holding the CompiledMethod_lock.  This ensures that any transitions by other
+      // threads have seen the is_locked_by_vm() update above.
+      MutexLocker cm_lock(CompiledMethod_lock, Mutex::_no_safepoint_check_flag);
+      if (!nm->is_alive()) {
+        //  It was alive when we looked it up but it's no longer alive so release it.
+        locker.set_code(NULL);
+        nm = NULL;
+      }
+    }
+
     jlong compile_id_snapshot = get_HotSpotNmethod_compileIdSnapshot(obj);
     if (compile_id_snapshot != 0L) {
-      // A HotSpotNMethod not in an nmethod's oops table so look up
-      // the nmethod and then update the fields based on its state.
-      CodeBlob* cb = CodeCache::find_blob_unsafe(code);
-      if (cb == (CodeBlob*) code) {
-        // Found a live CodeBlob with the same address, make sure it's the same nmethod
-        nmethod* nm = cb->as_nmethod_or_null();
-        if (nm != NULL && nm->compile_id() == compile_id_snapshot) {
-          if (!nm->is_alive()) {
-            // Break the links from the mirror to the nmethod
-            set_InstalledCode_address(obj, 0);
-            set_InstalledCode_entryPoint(obj, 0);
-          } else if (nm->is_not_entrant()) {
-            // Zero the entry point so that the nmethod
-            // cannot be invoked by the mirror but can
-            // still be deoptimized.
-            set_InstalledCode_entryPoint(obj, 0);
-          }
-          return cb;
+      // Found a live nmethod with the same address, make sure it's the same nmethod
+      if (nm == (nmethod*) code && nm->compile_id() == compile_id_snapshot && nm->is_alive()) {
+        if (nm->is_not_entrant()) {
+          // Zero the entry point so that the nmethod
+          // cannot be invoked by the mirror but can
+          // still be deoptimized.
+          set_InstalledCode_entryPoint(obj, 0);
         }
+        return nm;
       }
-      // Clear the InstalledCode fields of this HotSpotNmethod
-      // that no longer refers to an nmethod in the code cache.
+      // The HotSpotNmethod no longer refers to a valid nmethod so clear the state
+      locker.set_code(NULL);
+      nm = NULL;
+    }
+
+    if (nm == NULL) {
+      // The HotSpotNmethod was pointing at some nmethod but the nmethod is no longer valid, so
+      // clear the InstalledCode fields of this HotSpotNmethod so that it no longer refers to a
+      // nmethod in the code cache.
       set_InstalledCode_address(obj, 0);
       set_InstalledCode_entryPoint(obj, 0);
-      return NULL;
     }
+    return nm;
   }
-  return (CodeBlob*) code;
+
+  CodeBlob* cb = (CodeBlob*) code;
+  assert(!cb->is_nmethod(), "unexpected nmethod");
+  return cb;
 }
 
+nmethod* JVMCIEnv::get_nmethod(JVMCIObject obj, nmethodLocker& locker) {
+  CodeBlob* cb = get_code_blob(obj, locker);
+  if (cb != NULL) {
+    return cb->as_nmethod_or_null();
+  }
+  return NULL;
+}
 
 // Generate implementations for the initialize, new, isa, get and set methods for all the types and
 // fields declared in the JVMCI_CLASSES_DO macro.
--- a/src/hotspot/share/jvmci/jvmciEnv.hpp	Tue Dec 10 15:50:12 2019 -0800
+++ b/src/hotspot/share/jvmci/jvmciEnv.hpp	Wed Dec 11 09:47:41 2019 -0800
@@ -324,18 +324,13 @@
 
   void fthrow_error(const char* file, int line, const char* format, ...) ATTRIBUTE_PRINTF(4, 5);
 
-  // Given an instance of HotSpotInstalledCode return the corresponding CodeBlob*
-  CodeBlob* asCodeBlob(JVMCIObject code);
+  // Given an instance of HotSpotInstalledCode return the corresponding CodeBlob*.  The
+  // nmethodLocker is required to keep the CodeBlob alive in the case where it's an nmethod.
+  CodeBlob* get_code_blob(JVMCIObject code, nmethodLocker& locker);
 
-  nmethod* asNmethod(JVMCIObject code) {
-    CodeBlob* cb = asCodeBlob(code);
-    if (cb == NULL) {
-      return NULL;
-    }
-    nmethod* nm = cb->as_nmethod_or_null();
-    guarantee(nm != NULL, "not an nmethod");
-    return nm;
-  }
+  // Given an instance of HotSpotInstalledCode return the corresponding nmethod.  The
+  // nmethodLocker is required to keep the nmethod alive.
+  nmethod* get_nmethod(JVMCIObject code, nmethodLocker& locker);
 
   MethodData* asMethodData(jlong metaspaceMethodData) {
     return (MethodData*) (address) metaspaceMethodData;
--- a/test/hotspot/jtreg/compiler/jvmci/common/CTVMUtilities.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/common/CTVMUtilities.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,7 +32,9 @@
 import jdk.internal.org.objectweb.asm.tree.ClassNode;
 import jdk.test.lib.Utils;
 import jdk.vm.ci.code.InstalledCode;
+import jdk.vm.ci.meta.ResolvedJavaMethod;
 import jdk.vm.ci.hotspot.CompilerToVMHelper;
+import jdk.vm.ci.hotspot.HotSpotNmethod;
 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
 
 import java.io.IOException;
@@ -64,17 +66,10 @@
         return getResolvedMethod(method.getDeclaringClass(), method);
     }
 
-    public static InstalledCode getInstalledCode(String name, long address,
-            long entryPoint) {
-        return new InstalledCodeStub(name, address, entryPoint);
+    public static InstalledCode getInstalledCode(ResolvedJavaMethod method, String name, long address, long entryPoint) {
+        return CompilerToVMHelper.getInstalledCode(method, name, address, entryPoint);
     }
-    private static class InstalledCodeStub extends InstalledCode {
-        private InstalledCodeStub(String name, long address, long entryPoint) {
-            super(name);
-            this.address = address;
-            this.entryPoint = entryPoint;
-        }
-    }
+
     public static Map<Integer, Integer> getBciToLineNumber(Executable method) {
         Map<Integer, Integer> lineNumbers = new TreeMap<>();
         Class<?> aClass = method.getDeclaringClass();
--- a/test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/common/patches/jdk.internal.vm.ci/jdk/vm/ci/hotspot/CompilerToVMHelper.java	Wed Dec 11 09:47:41 2019 -0800
@@ -332,4 +332,15 @@
     public static HotSpotResolvedObjectType fromObjectClass(Class<?> theClass) {
           return (HotSpotResolvedObjectType) metaAccess.lookupJavaType(theClass);
     }
+
+    public static InstalledCode getInstalledCode(ResolvedJavaMethod method, String name, long address, long entryPoint) {
+        return new InstalledCodeStub((HotSpotResolvedJavaMethodImpl) method, name, address, entryPoint);
+    }
+    private static class InstalledCodeStub extends HotSpotNmethod {
+        private InstalledCodeStub(HotSpotResolvedJavaMethodImpl method, String name, long address, long entryPoint) {
+            super(method, name, false, 0);
+            this.address = address;
+            this.entryPoint = entryPoint;
+        }
+    }
 }
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  *        sun.hotspot.WhiteBox sun.hotspot.parser.DiagnosticCommand
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/AsResolvedJavaMethodTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -33,6 +33,8 @@
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
  *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler
  *                   compiler.jvmci.compilerToVM.AsResolvedJavaMethodTest
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/CompileCodeTestCase.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/CompileCodeTestCase.java	Wed Dec 11 09:47:41 2019 -0800
@@ -28,6 +28,9 @@
 import jdk.test.lib.util.Pair;
 import jdk.test.lib.Utils;
 import jdk.vm.ci.code.InstalledCode;
+import jdk.vm.ci.meta.MetaAccessProvider;
+import jdk.vm.ci.meta.ResolvedJavaMethod;
+import jdk.vm.ci.runtime.JVMCI;
 import sun.hotspot.WhiteBox;
 import sun.hotspot.code.NMethod;
 
@@ -147,11 +150,12 @@
     }
 
     public InstalledCode toInstalledCode() {
+        MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess();
+        ResolvedJavaMethod resolvedJavaMethod = metaAccess.lookupJavaMethod(executable);
         NMethod nmethod = toNMethod();
         long address = nmethod == null ? 0L : nmethod.address;
         long entryPoint = nmethod == null ? 0L : nmethod.entry_point;
-        return CTVMUtilities.getInstalledCode(
-                executable.getName(), address, entryPoint);
+        return CTVMUtilities.getInstalledCode(resolvedJavaMethod, executable.getName(), address, entryPoint);
     }
 
     @Override
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/DisassembleCodeBlobTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -30,8 +30,10 @@
  * @modules java.base/jdk.internal.misc
  * @modules java.base/jdk.internal.org.objectweb.asm
  *          java.base/jdk.internal.org.objectweb.asm.tree
+ *          jdk.internal.vm.ci/jdk.vm.ci.code
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
- *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @build sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/DoNotInlineOrCompileTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetBytecodeTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetBytecodeTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetExceptionTableTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetExceptionTableTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLineNumberTableTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -33,6 +33,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetLocalVariableTableTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @clean compiler.jvmci.compilerToVM.*
  * @compile -g DummyInterface.java
  * @compile -g DummyAbstractClass.java
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetStackTraceElementTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/GetVtableIndexForInterfaceTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasCompiledCodeForOSRTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/HasNeverInlineDirectiveTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsCompilableTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/IsMatureVsReprofileTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  *        sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/MethodIsIgnoredBySecurityStackWalkTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -33,6 +33,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveMethodTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/ResolveMethodTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,9 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
+ *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
  * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
  *                   -XX:-UseJVMCICompiler
--- a/test/hotspot/jtreg/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java	Tue Dec 10 15:50:12 2019 -0800
+++ b/test/hotspot/jtreg/compiler/jvmci/compilerToVM/ShouldInlineMethodTest.java	Wed Dec 11 09:47:41 2019 -0800
@@ -32,6 +32,8 @@
  *          java.base/jdk.internal.org.objectweb.asm.tree
  *          jdk.internal.vm.ci/jdk.vm.ci.hotspot
  *          jdk.internal.vm.ci/jdk.vm.ci.code
+ *          jdk.internal.vm.ci/jdk.vm.ci.meta
+ *          jdk.internal.vm.ci/jdk.vm.ci.runtime
  *
  * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
  * @run driver ClassFileInstaller sun.hotspot.WhiteBox