8229961: Assert failure in compiler/graalunit/HotspotTest.java

Reviewed-by: kvn
This commit is contained in:
Tom Rodriguez 2019-12-11 09:47:41 -08:00
parent d3f7666418
commit bca86d6492
26 changed files with 150 additions and 60 deletions

View file

@ -1356,7 +1356,7 @@ bool nmethod::make_not_entrant_or_zombie(int state) {
} }
// Must happen before state change. Otherwise we have a race condition in // 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 // transition its state from 'not_entrant' to 'zombie' without having to wait
// for stack scanning. // for stack scanning.
if (state == not_entrant) { if (state == not_entrant) {

View file

@ -776,9 +776,9 @@ class nmethodLocker : public StackObj {
lock(_nm); lock(_nm);
} }
static void lock(CompiledMethod* method) { static void lock(CompiledMethod* method, bool zombie_ok = false) {
if (method == NULL) return; if (method == NULL) return;
lock_nmethod(method); lock_nmethod(method, zombie_ok);
} }
static void unlock(CompiledMethod* method) { static void unlock(CompiledMethod* method) {
@ -792,10 +792,10 @@ class nmethodLocker : public StackObj {
} }
CompiledMethod* code() { return _nm; } 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. unlock(_nm); // note: This works even if _nm==new_nm.
_nm = new_nm; _nm = new_nm;
lock(_nm); lock(_nm, zombie_ok);
} }
}; };

View file

@ -25,6 +25,7 @@
#ifndef SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP #ifndef SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
#define SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP #define SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
#include "code/nmethod.hpp"
#include "jvmci/jvmciEnv.hpp" #include "jvmci/jvmciEnv.hpp"
#include "runtime/interfaceSupport.inline.hpp" #include "runtime/interfaceSupport.inline.hpp"

View file

@ -980,7 +980,8 @@ C2V_VMENTRY_NULL(jobject, disassembleCodeBlob, (JNIEnv* env, jobject, jobject in
} }
JVMCIObject installedCodeObject = JVMCIENV->wrap(installedCode); JVMCIObject installedCodeObject = JVMCIENV->wrap(installedCode);
CodeBlob* cb = JVMCIENV->asCodeBlob(installedCodeObject); nmethodLocker locker;
CodeBlob* cb = JVMCIENV->get_code_blob(installedCodeObject, locker);
if (cb == NULL) { if (cb == NULL) {
return NULL; return NULL;
} }
@ -1025,7 +1026,8 @@ C2V_VMENTRY_NULL(jobject, executeHotSpotNmethod, (JNIEnv* env, jobject, jobject
HandleMark hm; HandleMark hm;
JVMCIObject nmethod_mirror = JVMCIENV->wrap(hs_nmethod); 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) { if (nm == NULL) {
JVMCI_THROW_NULL(InvalidInstalledCodeException); JVMCI_THROW_NULL(InvalidInstalledCodeException);
} }
@ -2447,7 +2449,8 @@ C2V_VMENTRY_0(jlong, translate, (JNIEnv* env, jobject, jobject obj_handle))
Handle constant = thisEnv->asConstant(obj, JVMCI_CHECK_0); Handle constant = thisEnv->asConstant(obj, JVMCI_CHECK_0);
result = peerEnv->get_object_constant(constant()); result = peerEnv->get_object_constant(constant());
} else if (thisEnv->isa_HotSpotNmethod(obj)) { } else if (thisEnv->isa_HotSpotNmethod(obj)) {
nmethod* nm = thisEnv->asNmethod(obj); nmethodLocker locker;
nmethod* nm = JVMCIENV->get_nmethod(obj, locker);
if (nm != NULL) { if (nm != NULL) {
JVMCINMethodData* data = nm->jvmci_nmethod_data(); JVMCINMethodData* data = nm->jvmci_nmethod_data();
if (data != NULL) { if (data != NULL) {
@ -2512,12 +2515,14 @@ C2V_VMENTRY_NULL(jobject, unhand, (JNIEnv* env, jobject, jlong obj_handle))
C2V_VMENTRY(void, updateHotSpotNmethod, (JNIEnv* env, jobject, jobject code_handle)) C2V_VMENTRY(void, updateHotSpotNmethod, (JNIEnv* env, jobject, jobject code_handle))
JVMCIObject code = JVMCIENV->wrap(code_handle); JVMCIObject code = JVMCIENV->wrap(code_handle);
// Execute this operation for the side effect of updating the InstalledCode state // 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)) C2V_VMENTRY_NULL(jbyteArray, getCode, (JNIEnv* env, jobject, jobject code_handle))
JVMCIObject code = JVMCIENV->wrap(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) { if (cb == NULL) {
return NULL; return NULL;
} }

View file

@ -1476,8 +1476,8 @@ void JVMCIEnv::invalidate_nmethod_mirror(JVMCIObject mirror, JVMCI_TRAPS) {
JVMCI_THROW(NullPointerException); JVMCI_THROW(NullPointerException);
} }
jlong nativeMethod = get_InstalledCode_address(mirror); nmethodLocker locker;
nmethod* nm = JVMCIENV->asNmethod(mirror); nmethod* nm = JVMCIENV->get_nmethod(mirror, locker);
if (nm == NULL) { if (nm == NULL) {
// Nothing to do // Nothing to do
return; return;
@ -1518,45 +1518,81 @@ ConstantPool* JVMCIEnv::asConstantPool(JVMCIObject obj) {
return *metadataHandle; return *metadataHandle;
} }
CodeBlob* JVMCIEnv::get_code_blob(JVMCIObject obj, nmethodLocker& locker) {
CodeBlob* JVMCIEnv::asCodeBlob(JVMCIObject obj) {
address code = (address) get_InstalledCode_address(obj); address code = (address) get_InstalledCode_address(obj);
if (code == NULL) { if (code == NULL) {
return NULL; return NULL;
} }
if (isa_HotSpotNmethod(obj)) { if (isa_HotSpotNmethod(obj)) {
jlong compile_id_snapshot = get_HotSpotNmethod_compileIdSnapshot(obj); nmethod* nm = NULL;
if (compile_id_snapshot != 0L) { {
// A HotSpotNMethod not in an nmethod's oops table so look up // Lookup the CodeBlob while holding the CodeCache_lock to ensure the nmethod can't be freed
// the nmethod and then update the fields based on its state. // 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); CodeBlob* cb = CodeCache::find_blob_unsafe(code);
if (cb == (CodeBlob*) code) { if (cb == (CodeBlob*) code) {
// Found a live CodeBlob with the same address, make sure it's the same nmethod nmethod* the_nm = cb->as_nmethod_or_null();
nmethod* nm = cb->as_nmethod_or_null(); if (the_nm != NULL && the_nm->is_alive()) {
if (nm != NULL && nm->compile_id() == compile_id_snapshot) { // 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()) { if (!nm->is_alive()) {
// Break the links from the mirror to the nmethod // It was alive when we looked it up but it's no longer alive so release it.
set_InstalledCode_address(obj, 0); locker.set_code(NULL);
set_InstalledCode_entryPoint(obj, 0); nm = NULL;
} else if (nm->is_not_entrant()) { }
}
jlong compile_id_snapshot = get_HotSpotNmethod_compileIdSnapshot(obj);
if (compile_id_snapshot != 0L) {
// 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 // Zero the entry point so that the nmethod
// cannot be invoked by the mirror but can // cannot be invoked by the mirror but can
// still be deoptimized. // still be deoptimized.
set_InstalledCode_entryPoint(obj, 0); set_InstalledCode_entryPoint(obj, 0);
} }
return cb; return nm;
} }
} // The HotSpotNmethod no longer refers to a valid nmethod so clear the state
// Clear the InstalledCode fields of this HotSpotNmethod locker.set_code(NULL);
// that no longer refers to an nmethod in the code cache. nm = NULL;
set_InstalledCode_address(obj, 0);
set_InstalledCode_entryPoint(obj, 0);
return NULL;
}
}
return (CodeBlob*) code;
} }
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 nm;
}
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 // Generate implementations for the initialize, new, isa, get and set methods for all the types and
// fields declared in the JVMCI_CLASSES_DO macro. // fields declared in the JVMCI_CLASSES_DO macro.

View file

@ -324,18 +324,13 @@ public:
void fthrow_error(const char* file, int line, const char* format, ...) ATTRIBUTE_PRINTF(4, 5); void fthrow_error(const char* file, int line, const char* format, ...) ATTRIBUTE_PRINTF(4, 5);
// Given an instance of HotSpotInstalledCode return the corresponding CodeBlob* // Given an instance of HotSpotInstalledCode return the corresponding CodeBlob*. The
CodeBlob* asCodeBlob(JVMCIObject code); // 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) { // Given an instance of HotSpotInstalledCode return the corresponding nmethod. The
CodeBlob* cb = asCodeBlob(code); // nmethodLocker is required to keep the nmethod alive.
if (cb == NULL) { nmethod* get_nmethod(JVMCIObject code, nmethodLocker& locker);
return NULL;
}
nmethod* nm = cb->as_nmethod_or_null();
guarantee(nm != NULL, "not an nmethod");
return nm;
}
MethodData* asMethodData(jlong metaspaceMethodData) { MethodData* asMethodData(jlong metaspaceMethodData) {
return (MethodData*) (address) metaspaceMethodData; return (MethodData*) (address) metaspaceMethodData;

View file

@ -32,7 +32,9 @@ import jdk.internal.org.objectweb.asm.Opcodes;
import jdk.internal.org.objectweb.asm.tree.ClassNode; import jdk.internal.org.objectweb.asm.tree.ClassNode;
import jdk.test.lib.Utils; import jdk.test.lib.Utils;
import jdk.vm.ci.code.InstalledCode; import jdk.vm.ci.code.InstalledCode;
import jdk.vm.ci.meta.ResolvedJavaMethod;
import jdk.vm.ci.hotspot.CompilerToVMHelper; import jdk.vm.ci.hotspot.CompilerToVMHelper;
import jdk.vm.ci.hotspot.HotSpotNmethod;
import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod; import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
import java.io.IOException; import java.io.IOException;
@ -64,17 +66,10 @@ public class CTVMUtilities {
return getResolvedMethod(method.getDeclaringClass(), method); return getResolvedMethod(method.getDeclaringClass(), method);
} }
public static InstalledCode getInstalledCode(String name, long address, public static InstalledCode getInstalledCode(ResolvedJavaMethod method, String name, long address, long entryPoint) {
long entryPoint) { return CompilerToVMHelper.getInstalledCode(method, name, address, entryPoint);
return new InstalledCodeStub(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) { public static Map<Integer, Integer> getBciToLineNumber(Executable method) {
Map<Integer, Integer> lineNumbers = new TreeMap<>(); Map<Integer, Integer> lineNumbers = new TreeMap<>();
Class<?> aClass = method.getDeclaringClass(); Class<?> aClass = method.getDeclaringClass();

View file

@ -332,4 +332,15 @@ public class CompilerToVMHelper {
public static HotSpotResolvedObjectType fromObjectClass(Class<?> theClass) { public static HotSpotResolvedObjectType fromObjectClass(Class<?> theClass) {
return (HotSpotResolvedObjectType) metaAccess.lookupJavaType(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;
}
}
} }

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* sun.hotspot.WhiteBox sun.hotspot.parser.DiagnosticCommand * sun.hotspot.WhiteBox sun.hotspot.parser.DiagnosticCommand

View file

@ -33,6 +33,8 @@
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * jdk.internal.vm.ci/jdk.vm.ci.code
* jdk.internal.vm.ci/jdk.vm.ci.meta * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:-UseJVMCICompiler
* compiler.jvmci.compilerToVM.AsResolvedJavaMethodTest * compiler.jvmci.compilerToVM.AsResolvedJavaMethodTest

View file

@ -28,6 +28,9 @@ import compiler.testlibrary.CompilerUtils;
import jdk.test.lib.util.Pair; import jdk.test.lib.util.Pair;
import jdk.test.lib.Utils; import jdk.test.lib.Utils;
import jdk.vm.ci.code.InstalledCode; 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.WhiteBox;
import sun.hotspot.code.NMethod; import sun.hotspot.code.NMethod;
@ -147,11 +150,12 @@ public class CompileCodeTestCase {
} }
public InstalledCode toInstalledCode() { public InstalledCode toInstalledCode() {
MetaAccessProvider metaAccess = JVMCI.getRuntime().getHostJVMCIBackend().getMetaAccess();
ResolvedJavaMethod resolvedJavaMethod = metaAccess.lookupJavaMethod(executable);
NMethod nmethod = toNMethod(); NMethod nmethod = toNMethod();
long address = nmethod == null ? 0L : nmethod.address; long address = nmethod == null ? 0L : nmethod.address;
long entryPoint = nmethod == null ? 0L : nmethod.entry_point; long entryPoint = nmethod == null ? 0L : nmethod.entry_point;
return CTVMUtilities.getInstalledCode( return CTVMUtilities.getInstalledCode(resolvedJavaMethod, executable.getName(), address, entryPoint);
executable.getName(), address, entryPoint);
} }
@Override @Override

View file

@ -30,8 +30,10 @@
* @modules java.base/jdk.internal.misc * @modules java.base/jdk.internal.misc
* @modules java.base/jdk.internal.org.objectweb.asm * @modules java.base/jdk.internal.org.objectweb.asm
* java.base/jdk.internal.org.objectweb.asm.tree * 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.code
* jdk.internal.vm.ci/jdk.vm.ci.hotspot
* 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @build sun.hotspot.WhiteBox * @build sun.hotspot.WhiteBox

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -33,6 +33,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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.* * @clean compiler.jvmci.compilerToVM.*
* @compile -g DummyInterface.java * @compile -g DummyInterface.java
* @compile -g DummyAbstractClass.java * @compile -g DummyAbstractClass.java

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* sun.hotspot.WhiteBox * sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox

View file

@ -33,6 +33,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,9 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper
* @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI
* -XX:-UseJVMCICompiler * -XX:-UseJVMCICompiler

View file

@ -32,6 +32,8 @@
* java.base/jdk.internal.org.objectweb.asm.tree * java.base/jdk.internal.org.objectweb.asm.tree
* jdk.internal.vm.ci/jdk.vm.ci.hotspot * jdk.internal.vm.ci/jdk.vm.ci.hotspot
* jdk.internal.vm.ci/jdk.vm.ci.code * 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 * @build jdk.internal.vm.ci/jdk.vm.ci.hotspot.CompilerToVMHelper sun.hotspot.WhiteBox
* @run driver ClassFileInstaller sun.hotspot.WhiteBox * @run driver ClassFileInstaller sun.hotspot.WhiteBox