mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
parent
14df5c130e
commit
5e1fe43080
40 changed files with 1098 additions and 389 deletions
|
@ -1163,16 +1163,19 @@ JVMCIObject JVMCIEnv::get_jvmci_method(const methodHandle& method, JVMCI_TRAPS)
|
|||
if (method() == nullptr) {
|
||||
return method_object;
|
||||
}
|
||||
JavaThread* THREAD = JVMCI::compilation_tick(JavaThread::current()); // For exception macros.
|
||||
JVMCIKlassHandle holder_klass(THREAD, method->method_holder());
|
||||
JVMCIObject holder = get_jvmci_type(holder_klass, JVMCI_CHECK_(JVMCIObject()));
|
||||
|
||||
CompilerOracle::tag_blackhole_if_possible(method);
|
||||
|
||||
JavaThread* THREAD = JVMCI::compilation_tick(JavaThread::current()); // For exception macros.
|
||||
jmetadata handle = _runtime->allocate_handle(method);
|
||||
jboolean exception = false;
|
||||
if (is_hotspot()) {
|
||||
JavaValue result(T_OBJECT);
|
||||
JavaCallArguments args;
|
||||
args.push_long((jlong) handle);
|
||||
args.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(holder)));
|
||||
JavaCalls::call_static(&result, HotSpotJVMCI::HotSpotResolvedJavaMethodImpl::klass(),
|
||||
vmSymbols::fromMetaspace_name(),
|
||||
vmSymbols::method_fromMetaspace_signature(), &args, THREAD);
|
||||
|
@ -1185,7 +1188,7 @@ JVMCIObject JVMCIEnv::get_jvmci_method(const methodHandle& method, JVMCI_TRAPS)
|
|||
JNIAccessMark jni(this, THREAD);
|
||||
method_object = JNIJVMCI::wrap(jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotResolvedJavaMethodImpl::clazz(),
|
||||
JNIJVMCI::HotSpotResolvedJavaMethodImpl_fromMetaspace_method(),
|
||||
(jlong) handle));
|
||||
(jlong) handle, holder.as_jobject()));
|
||||
exception = jni()->ExceptionCheck();
|
||||
}
|
||||
|
||||
|
@ -1208,6 +1211,9 @@ JVMCIObject JVMCIEnv::get_jvmci_type(const JVMCIKlassHandle& klass, JVMCI_TRAPS)
|
|||
return type;
|
||||
}
|
||||
|
||||
guarantee(klass->is_klass(), "must be valid klass");
|
||||
guarantee(klass->is_loader_alive(), "klass must be alive");
|
||||
|
||||
jlong pointer = (jlong) klass();
|
||||
JavaThread* THREAD = JVMCI::compilation_tick(JavaThread::current()); // For exception macros.
|
||||
jboolean exception = false;
|
||||
|
@ -1506,9 +1512,9 @@ jlong JVMCIEnv::make_oop_handle(const Handle& obj) {
|
|||
|
||||
oop JVMCIEnv::resolve_oop_handle(jlong oopHandle) {
|
||||
assert(oopHandle != 0, "should be a valid handle");
|
||||
oop obj = *((oopDesc**) oopHandle);
|
||||
oop obj = NativeAccess<>::oop_load(reinterpret_cast<oop*>(oopHandle));
|
||||
if (obj != nullptr) {
|
||||
oopDesc::verify(obj);
|
||||
guarantee(oopDesc::is_oop_or_null(obj), "invalid oop: " INTPTR_FORMAT, p2i((oopDesc*) obj));
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
@ -1644,6 +1650,9 @@ ConstantPool* JVMCIEnv::asConstantPool(JVMCIObject obj) {
|
|||
return *constantPoolHandle;
|
||||
}
|
||||
|
||||
MethodData* JVMCIEnv::asMethodData(JVMCIObject obj) {
|
||||
return (MethodData*) get_HotSpotMethodData_methodDataPointer(obj);
|
||||
}
|
||||
|
||||
// Lookup an nmethod with a matching base and compile id
|
||||
nmethod* JVMCIEnv::lookup_nmethod(address code, jlong compile_id_snapshot) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue