author | rehn |
Thu, 19 Sep 2019 10:52:22 +0200 | |
changeset 58226 | 408c445d04e8 |
parent 55635 | 0fb70c9118ce |
child 58358 | d658f4379c63 |
permissions | -rw-r--r-- |
33160 | 1 |
/* |
53425
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
2 |
* Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved. |
33160 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. |
|
8 |
* |
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
13 |
* accompanied this code). |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License version |
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
18 |
* |
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
20 |
* or visit www.oracle.com if you need additional information or have any |
|
21 |
* questions. |
|
22 |
* |
|
23 |
*/ |
|
24 |
||
25 |
#include "precompiled.hpp" |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
26 |
#include "classfile/stringTable.hpp" |
54786 | 27 |
#include "classfile/symbolTable.hpp" |
33160 | 28 |
#include "code/codeCache.hpp" |
29 |
#include "memory/oopFactory.hpp" |
|
37248 | 30 |
#include "memory/resourceArea.hpp" |
54786 | 31 |
#include "memory/universe.hpp" |
32 |
#include "oops/objArrayKlass.hpp" |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
33 |
#include "oops/typeArrayOop.inline.hpp" |
58226 | 34 |
#include "runtime/deoptimization.hpp" |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
35 |
#include "runtime/jniHandles.inline.hpp" |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
36 |
#include "runtime/javaCalls.hpp" |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
37 |
#include "jvmci/jniAccessMark.inline.hpp" |
33160 | 38 |
#include "jvmci/jvmciRuntime.hpp" |
39 |
||
55635
0fb70c9118ce
8222446: assert(C->env()->system_dictionary_modification_counter_changed()) failed: Must invalidate if TypeFuncs differ
coleenp
parents:
55506
diff
changeset
|
40 |
JVMCICompileState::JVMCICompileState(CompileTask* task): |
35592
5814f874d736
8147432: JVMCI should report bailouts in PrintCompilation output
never
parents:
34317
diff
changeset
|
41 |
_task(task), |
53417
126c5e7b97b1
8217445: [JVMCI] incorrect management of JVMCI compilation failure reason string
dnsimon
parents:
52067
diff
changeset
|
42 |
_retryable(true), |
35592
5814f874d736
8147432: JVMCI should report bailouts in PrintCompilation output
never
parents:
34317
diff
changeset
|
43 |
_failure_reason(NULL), |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
44 |
_failure_reason_on_C_heap(false) { |
35592
5814f874d736
8147432: JVMCI should report bailouts in PrintCompilation output
never
parents:
34317
diff
changeset
|
45 |
// Get Jvmti capabilities under lock to get consistent values. |
5814f874d736
8147432: JVMCI should report bailouts in PrintCompilation output
never
parents:
34317
diff
changeset
|
46 |
MutexLocker mu(JvmtiThreadState_lock); |
53425
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
47 |
_jvmti_can_hotswap_or_post_breakpoint = JvmtiExport::can_hotswap_or_post_breakpoint() ? 1 : 0; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
48 |
_jvmti_can_access_local_variables = JvmtiExport::can_access_local_variables() ? 1 : 0; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
49 |
_jvmti_can_post_on_exceptions = JvmtiExport::can_post_on_exceptions() ? 1 : 0; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
50 |
_jvmti_can_pop_frame = JvmtiExport::can_pop_frame() ? 1 : 0; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
51 |
} |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
52 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
53 |
bool JVMCICompileState::jvmti_state_changed() const { |
53425
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
54 |
if (!jvmti_can_access_local_variables() && |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
55 |
JvmtiExport::can_access_local_variables()) { |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
56 |
return true; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
57 |
} |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
58 |
if (!jvmti_can_hotswap_or_post_breakpoint() && |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
59 |
JvmtiExport::can_hotswap_or_post_breakpoint()) { |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
60 |
return true; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
61 |
} |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
62 |
if (!jvmti_can_post_on_exceptions() && |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
63 |
JvmtiExport::can_post_on_exceptions()) { |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
64 |
return true; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
65 |
} |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
66 |
if (!jvmti_can_pop_frame() && |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
67 |
JvmtiExport::can_pop_frame()) { |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
68 |
return true; |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
69 |
} |
312880c38a7f
8215375: [Graal] jck:vm/jvmti/Exception/excp001/excp00101 fails in Graal as JIT mode and -Xcomp mode
dnsimon
parents:
52067
diff
changeset
|
70 |
return false; |
33160 | 71 |
} |
72 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
73 |
JavaVM* JVMCIEnv::_shared_library_javavm = NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
74 |
void* JVMCIEnv::_shared_library_handle = NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
75 |
char* JVMCIEnv::_shared_library_path = NULL; |
33160 | 76 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
77 |
void JVMCIEnv::copy_saved_properties() { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
78 |
assert(!is_hotspot(), "can only copy saved properties from HotSpot to native image"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
79 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
80 |
JavaThread* THREAD = JavaThread::current(); |
33160 | 81 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
82 |
Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::jdk_vm_ci_services_Services(), Handle(), Handle(), true, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
83 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
84 |
JVMCIRuntime::exit_on_pending_exception(NULL, "Error initializing jdk.vm.ci.services.Services"); |
33160 | 85 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
86 |
InstanceKlass* ik = InstanceKlass::cast(k); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
87 |
if (ik->should_be_initialized()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
88 |
ik->initialize(THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
89 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
90 |
JVMCIRuntime::exit_on_pending_exception(NULL, "Error initializing jdk.vm.ci.services.Services"); |
33160 | 91 |
} |
92 |
} |
|
93 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
94 |
// Get the serialized saved properties from HotSpot |
54847
59ea39bb2809
8223657: Remove unused THREAD argument from SymbolTable functions
coleenp
parents:
54786
diff
changeset
|
95 |
TempNewSymbol serializeSavedProperties = SymbolTable::new_symbol("serializeSavedProperties"); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
96 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
97 |
JavaCallArguments args; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
98 |
JavaCalls::call_static(&result, ik, serializeSavedProperties, vmSymbols::serializePropertiesToByteArray_signature(), &args, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
99 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
100 |
JVMCIRuntime::exit_on_pending_exception(NULL, "Error calling jdk.vm.ci.services.Services.serializeSavedProperties"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
101 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
102 |
oop res = (oop) result.get_jobject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
103 |
assert(res->is_typeArray(), "must be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
104 |
assert(TypeArrayKlass::cast(res->klass())->element_type() == T_BYTE, "must be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
105 |
typeArrayOop ba = typeArrayOop(res); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
106 |
int serialized_properties_len = ba->length(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
107 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
108 |
// Copy serialized saved properties from HotSpot object into native buffer |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
109 |
jbyte* serialized_properties = NEW_RESOURCE_ARRAY(jbyte, serialized_properties_len); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
110 |
memcpy(serialized_properties, ba->byte_at_addr(0), serialized_properties_len); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
111 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
112 |
// Copy native buffer into shared library object |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
113 |
JVMCIPrimitiveArray buf = new_byteArray(serialized_properties_len, this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
114 |
if (has_pending_exception()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
115 |
describe_pending_exception(true); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
116 |
fatal("Error in copy_saved_properties"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
117 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
118 |
copy_bytes_from(serialized_properties, buf, 0, serialized_properties_len); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
119 |
if (has_pending_exception()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
120 |
describe_pending_exception(true); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
121 |
fatal("Error in copy_saved_properties"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
122 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
123 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
124 |
// Initialize saved properties in shared library |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
125 |
jclass servicesClass = JNIJVMCI::Services::clazz(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
126 |
jmethodID initializeSavedProperties = JNIJVMCI::Services::initializeSavedProperties_method(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
127 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
128 |
jni()->CallStaticVoidMethod(servicesClass, initializeSavedProperties, buf.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
129 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
130 |
jni()->ExceptionDescribe(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
131 |
fatal("Error calling jdk.vm.ci.services.Services.initializeSavedProperties"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
132 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
133 |
} |
33160 | 134 |
|
54732 | 135 |
JNIEnv* JVMCIEnv::init_shared_library(JavaThread* thread) { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
136 |
if (_shared_library_javavm == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
137 |
MutexLocker locker(JVMCI_lock); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
138 |
if (_shared_library_javavm == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
139 |
char path[JVM_MAXPATHLEN]; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
140 |
char ebuf[1024]; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
141 |
if (JVMCILibPath != NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
142 |
if (!os::dll_locate_lib(path, sizeof(path), JVMCILibPath, JVMCI_SHARED_LIBRARY_NAME)) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
143 |
vm_exit_during_initialization("Unable to create JVMCI shared library path from -XX:JVMCILibPath value", JVMCILibPath); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
144 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
145 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
146 |
if (!os::dll_locate_lib(path, sizeof(path), Arguments::get_dll_dir(), JVMCI_SHARED_LIBRARY_NAME)) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
147 |
vm_exit_during_initialization("Unable to create path to JVMCI shared library"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
148 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
149 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
150 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
151 |
void* handle = os::dll_load(path, ebuf, sizeof ebuf); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
152 |
if (handle == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
153 |
vm_exit_during_initialization("Unable to load JVMCI shared library", ebuf); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
154 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
155 |
_shared_library_handle = handle; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
156 |
_shared_library_path = strdup(path); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
157 |
jint (*JNI_CreateJavaVM)(JavaVM **pvm, void **penv, void *args); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
158 |
typedef jint (*JNI_CreateJavaVM_t)(JavaVM **pvm, void **penv, void *args); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
159 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
160 |
JNI_CreateJavaVM = CAST_TO_FN_PTR(JNI_CreateJavaVM_t, os::dll_lookup(handle, "JNI_CreateJavaVM")); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
161 |
JNIEnv* env; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
162 |
if (JNI_CreateJavaVM == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
163 |
vm_exit_during_initialization("Unable to find JNI_CreateJavaVM", path); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
164 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
165 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
166 |
ResourceMark rm; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
167 |
JavaVMInitArgs vm_args; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
168 |
vm_args.version = JNI_VERSION_1_2; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
169 |
vm_args.ignoreUnrecognized = JNI_TRUE; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
170 |
vm_args.options = NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
171 |
vm_args.nOptions = 0; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
172 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
173 |
JavaVM* the_javavm = NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
174 |
int result = (*JNI_CreateJavaVM)(&the_javavm, (void**) &env, &vm_args); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
175 |
if (result == JNI_OK) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
176 |
guarantee(env != NULL, "missing env"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
177 |
_shared_library_javavm = the_javavm; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
178 |
return env; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
179 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
180 |
vm_exit_during_initialization(err_msg("JNI_CreateJavaVM failed with return value %d", result), path); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
181 |
} |
33160 | 182 |
} |
183 |
} |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
184 |
return NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
185 |
} |
33160 | 186 |
|
54732 | 187 |
void JVMCIEnv::init_env_mode_runtime(JavaThread* thread, JNIEnv* parent_env) { |
188 |
assert(thread != NULL, "npe"); |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
189 |
// By default there is only one runtime which is the compiler runtime. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
190 |
_runtime = JVMCI::compiler_runtime(); |
54732 | 191 |
_env = NULL; |
192 |
_pop_frame_on_close = false; |
|
193 |
_detach_on_close = false; |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
194 |
if (!UseJVMCINativeLibrary) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
195 |
// In HotSpot mode, JNI isn't used at all. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
196 |
_is_hotspot = true; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
197 |
return; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
198 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
199 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
200 |
if (parent_env != NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
201 |
// If the parent JNI environment is non-null then figure out whether it |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
202 |
// is a HotSpot or shared library JNIEnv and set the state appropriately. |
54732 | 203 |
_is_hotspot = thread->jni_environment() == parent_env; |
204 |
if (_is_hotspot) { |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
205 |
// Select the Java runtime |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
206 |
_runtime = JVMCI::java_runtime(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
207 |
return; |
33160 | 208 |
} |
54732 | 209 |
_env = parent_env; |
210 |
return; |
|
211 |
} |
|
212 |
||
213 |
// Running in JVMCI shared library mode so ensure the shared library |
|
214 |
// is loaded and initialized and get a shared library JNIEnv |
|
215 |
_is_hotspot = false; |
|
216 |
_env = init_shared_library(thread); |
|
217 |
||
218 |
if (_env != NULL) { |
|
219 |
// Creating the JVMCI shared library VM also attaches the current thread |
|
220 |
_detach_on_close = true; |
|
221 |
} else { |
|
222 |
_shared_library_javavm->GetEnv((void**)&parent_env, JNI_VERSION_1_2); |
|
223 |
if (parent_env != NULL) { |
|
224 |
// Even though there's a parent JNI env, there's no guarantee |
|
225 |
// it was opened by a JVMCIEnv scope and thus may not have |
|
226 |
// pushed a local JNI frame. As such, we use a new JNI local |
|
227 |
// frame in this scope to ensure local JNI refs are collected |
|
228 |
// in a timely manner after leaving this scope. |
|
229 |
_env = parent_env; |
|
230 |
} else { |
|
231 |
ResourceMark rm; // Thread name is resource allocated |
|
232 |
JavaVMAttachArgs attach_args; |
|
233 |
attach_args.version = JNI_VERSION_1_2; |
|
234 |
attach_args.name = thread->name(); |
|
235 |
attach_args.group = NULL; |
|
236 |
if (_shared_library_javavm->AttachCurrentThread((void**)&_env, &attach_args) != JNI_OK) { |
|
237 |
fatal("Error attaching current thread (%s) to JVMCI shared library JNI interface", attach_args.name); |
|
238 |
} |
|
239 |
_detach_on_close = true; |
|
240 |
} |
|
33160 | 241 |
} |
242 |
||
54732 | 243 |
assert(_env != NULL, "missing env"); |
244 |
assert(_throw_to_caller == false, "must be"); |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
245 |
|
54732 | 246 |
JNIAccessMark jni(this); |
247 |
jint result = _env->PushLocalFrame(32); |
|
248 |
if (result != JNI_OK) { |
|
249 |
char message[256]; |
|
250 |
jio_snprintf(message, 256, "Uncaught exception pushing local frame for JVMCIEnv scope entered at %s:%d", _file, _line); |
|
251 |
JVMCIRuntime::exit_on_pending_exception(this, message); |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
252 |
} |
54732 | 253 |
_pop_frame_on_close = true; |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
254 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
255 |
|
54732 | 256 |
JVMCIEnv::JVMCIEnv(JavaThread* thread, JVMCICompileState* compile_state, const char* file, int line): |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
257 |
_throw_to_caller(false), _file(file), _line(line), _compile_state(compile_state) { |
54732 | 258 |
init_env_mode_runtime(thread, NULL); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
259 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
260 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
261 |
JVMCIEnv::JVMCIEnv(JavaThread* thread, const char* file, int line): |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
262 |
_throw_to_caller(false), _file(file), _line(line), _compile_state(NULL) { |
54732 | 263 |
init_env_mode_runtime(thread, NULL); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
264 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
265 |
|
54732 | 266 |
JVMCIEnv::JVMCIEnv(JavaThread* thread, JNIEnv* parent_env, const char* file, int line): |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
267 |
_throw_to_caller(true), _file(file), _line(line), _compile_state(NULL) { |
54732 | 268 |
init_env_mode_runtime(thread, parent_env); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
269 |
assert(_env == NULL || parent_env == _env, "mismatched JNIEnvironment"); |
33160 | 270 |
} |
271 |
||
54732 | 272 |
void JVMCIEnv::init(JavaThread* thread, bool is_hotspot, const char* file, int line) { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
273 |
_compile_state = NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
274 |
_throw_to_caller = false; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
275 |
_file = file; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
276 |
_line = line; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
277 |
if (is_hotspot) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
278 |
_env = NULL; |
54732 | 279 |
_pop_frame_on_close = false; |
280 |
_detach_on_close = false; |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
281 |
_is_hotspot = true; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
282 |
_runtime = JVMCI::java_runtime(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
283 |
} else { |
54732 | 284 |
init_env_mode_runtime(thread, NULL); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
285 |
} |
33160 | 286 |
} |
287 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
288 |
// Prints a pending exception (if any) and its stack trace. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
289 |
void JVMCIEnv::describe_pending_exception(bool clear) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
290 |
if (!is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
291 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
292 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
293 |
jthrowable ex = !clear ? jni()->ExceptionOccurred() : NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
294 |
jni()->ExceptionDescribe(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
295 |
if (ex != NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
296 |
jni()->Throw(ex); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
297 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
298 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
299 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
300 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
301 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
302 |
JVMCIRuntime::describe_pending_hotspot_exception((JavaThread*) THREAD, clear); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
303 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
304 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
305 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
306 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
307 |
void JVMCIEnv::translate_hotspot_exception_to_jni_exception(JavaThread* THREAD, const Handle& throwable) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
308 |
assert(!is_hotspot(), "must_be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
309 |
// Resolve HotSpotJVMCIRuntime class explicitly as HotSpotJVMCI::compute_offsets |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
310 |
// may not have been called. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
311 |
Klass* runtimeKlass = SystemDictionary::resolve_or_fail(vmSymbols::jdk_vm_ci_hotspot_HotSpotJVMCIRuntime(), true, CHECK); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
312 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
313 |
jargs.push_oop(throwable); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
314 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
315 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
316 |
runtimeKlass, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
317 |
vmSymbols::encodeThrowable_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
318 |
vmSymbols::encodeThrowable_signature(), &jargs, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
319 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
320 |
JVMCIRuntime::exit_on_pending_exception(this, "HotSpotJVMCIRuntime.encodeThrowable should not throw an exception"); |
33160 | 321 |
} |
322 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
323 |
oop encoded_throwable_string = (oop) result.get_jobject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
324 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
325 |
ResourceMark rm; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
326 |
const char* encoded_throwable_chars = java_lang_String::as_utf8_string(encoded_throwable_string); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
327 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
328 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
329 |
jobject jni_encoded_throwable_string = jni()->NewStringUTF(encoded_throwable_chars); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
330 |
jthrowable jni_throwable = (jthrowable) jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotJVMCIRuntime::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
331 |
JNIJVMCI::HotSpotJVMCIRuntime::decodeThrowable_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
332 |
jni_encoded_throwable_string); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
333 |
jni()->Throw(jni_throwable); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
334 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
335 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
336 |
JVMCIEnv::~JVMCIEnv() { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
337 |
if (_throw_to_caller) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
338 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
339 |
// Nothing to do |
33160 | 340 |
} else { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
341 |
if (Thread::current()->is_Java_thread()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
342 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
343 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
344 |
Handle throwable = Handle(THREAD, PENDING_EXCEPTION); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
345 |
CLEAR_PENDING_EXCEPTION; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
346 |
translate_hotspot_exception_to_jni_exception(THREAD, throwable); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
347 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
348 |
} |
33160 | 349 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
350 |
} else { |
54732 | 351 |
if (_pop_frame_on_close) { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
352 |
// Pop the JNI local frame that was pushed when entering this JVMCIEnv scope. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
353 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
354 |
jni()->PopLocalFrame(NULL); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
355 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
356 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
357 |
if (has_pending_exception()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
358 |
char message[256]; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
359 |
jio_snprintf(message, 256, "Uncaught exception exiting JVMCIEnv scope entered at %s:%d", _file, _line); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
360 |
JVMCIRuntime::exit_on_pending_exception(this, message); |
33160 | 361 |
} |
54732 | 362 |
|
363 |
if (_detach_on_close) { |
|
364 |
get_shared_library_javavm()->DetachCurrentThread(); |
|
365 |
} |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
366 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
367 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
368 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
369 |
jboolean JVMCIEnv::has_pending_exception() { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
370 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
371 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
372 |
return HAS_PENDING_EXCEPTION; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
373 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
374 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
375 |
return jni()->ExceptionCheck(); |
33160 | 376 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
377 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
378 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
379 |
void JVMCIEnv::clear_pending_exception() { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
380 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
381 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
382 |
CLEAR_PENDING_EXCEPTION; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
383 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
384 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
385 |
jni()->ExceptionClear(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
386 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
387 |
} |
33160 | 388 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
389 |
int JVMCIEnv::get_length(JVMCIArray array) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
390 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
391 |
return HotSpotJVMCI::resolve(array)->length(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
392 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
393 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
394 |
return jni()->GetArrayLength(get_jarray(array)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
395 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
396 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
397 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
398 |
JVMCIObject JVMCIEnv::get_object_at(JVMCIObjectArray array, int index) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
399 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
400 |
oop result = HotSpotJVMCI::resolve(array)->obj_at(index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
401 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
402 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
403 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
404 |
jobject result = jni()->GetObjectArrayElement(get_jobjectArray(array), index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
405 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
406 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
407 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
408 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
409 |
void JVMCIEnv::put_object_at(JVMCIObjectArray array, int index, JVMCIObject value) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
410 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
411 |
HotSpotJVMCI::resolve(array)->obj_at_put(index, HotSpotJVMCI::resolve(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
412 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
413 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
414 |
jni()->SetObjectArrayElement(get_jobjectArray(array), index, get_jobject(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
415 |
} |
33160 | 416 |
} |
417 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
418 |
jboolean JVMCIEnv::get_bool_at(JVMCIPrimitiveArray array, int index) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
419 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
420 |
return HotSpotJVMCI::resolve(array)->bool_at(index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
421 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
422 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
423 |
jboolean result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
424 |
jni()->GetBooleanArrayRegion(array.as_jbooleanArray(), index, 1, &result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
425 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
426 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
427 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
428 |
void JVMCIEnv::put_bool_at(JVMCIPrimitiveArray array, int index, jboolean value) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
429 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
430 |
HotSpotJVMCI::resolve(array)->bool_at_put(index, value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
431 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
432 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
433 |
jni()->SetBooleanArrayRegion(array.as_jbooleanArray(), index, 1, &value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
434 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
435 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
436 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
437 |
jbyte JVMCIEnv::get_byte_at(JVMCIPrimitiveArray array, int index) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
438 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
439 |
return HotSpotJVMCI::resolve(array)->byte_at(index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
440 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
441 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
442 |
jbyte result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
443 |
jni()->GetByteArrayRegion(array.as_jbyteArray(), index, 1, &result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
444 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
445 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
446 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
447 |
void JVMCIEnv::put_byte_at(JVMCIPrimitiveArray array, int index, jbyte value) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
448 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
449 |
HotSpotJVMCI::resolve(array)->byte_at_put(index, value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
450 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
451 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
452 |
jni()->SetByteArrayRegion(array.as_jbyteArray(), index, 1, &value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
453 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
454 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
455 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
456 |
jint JVMCIEnv::get_int_at(JVMCIPrimitiveArray array, int index) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
457 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
458 |
return HotSpotJVMCI::resolve(array)->int_at(index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
459 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
460 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
461 |
jint result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
462 |
jni()->GetIntArrayRegion(array.as_jintArray(), index, 1, &result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
463 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
464 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
465 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
466 |
void JVMCIEnv::put_int_at(JVMCIPrimitiveArray array, int index, jint value) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
467 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
468 |
HotSpotJVMCI::resolve(array)->int_at_put(index, value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
469 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
470 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
471 |
jni()->SetIntArrayRegion(array.as_jintArray(), index, 1, &value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
472 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
473 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
474 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
475 |
long JVMCIEnv::get_long_at(JVMCIPrimitiveArray array, int index) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
476 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
477 |
return HotSpotJVMCI::resolve(array)->long_at(index); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
478 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
479 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
480 |
jlong result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
481 |
jni()->GetLongArrayRegion(array.as_jlongArray(), index, 1, &result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
482 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
483 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
484 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
485 |
void JVMCIEnv::put_long_at(JVMCIPrimitiveArray array, int index, jlong value) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
486 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
487 |
HotSpotJVMCI::resolve(array)->long_at_put(index, value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
488 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
489 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
490 |
jni()->SetLongArrayRegion(array.as_jlongArray(), index, 1, &value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
491 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
492 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
493 |
|
54732 | 494 |
void JVMCIEnv::copy_bytes_to(JVMCIPrimitiveArray src, jbyte* dest, int offset, jsize length) { |
495 |
if (length == 0) { |
|
496 |
return; |
|
497 |
} |
|
498 |
if (is_hotspot()) { |
|
499 |
memcpy(dest, HotSpotJVMCI::resolve(src)->byte_at_addr(offset), length); |
|
500 |
} else { |
|
501 |
JNIAccessMark jni(this); |
|
502 |
jni()->GetByteArrayRegion(src.as_jbyteArray(), offset, length, dest); |
|
503 |
} |
|
504 |
} |
|
505 |
void JVMCIEnv::copy_bytes_from(jbyte* src, JVMCIPrimitiveArray dest, int offset, jsize length) { |
|
506 |
if (length == 0) { |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
507 |
return; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
508 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
509 |
if (is_hotspot()) { |
54732 | 510 |
memcpy(HotSpotJVMCI::resolve(dest)->byte_at_addr(offset), src, length); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
511 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
512 |
JNIAccessMark jni(this); |
54732 | 513 |
jni()->SetByteArrayRegion(dest.as_jbyteArray(), offset, length, src); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
514 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
515 |
} |
54732 | 516 |
|
517 |
void JVMCIEnv::copy_longs_from(jlong* src, JVMCIPrimitiveArray dest, int offset, jsize length) { |
|
518 |
if (length == 0) { |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
519 |
return; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
520 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
521 |
if (is_hotspot()) { |
54732 | 522 |
memcpy(HotSpotJVMCI::resolve(dest)->long_at_addr(offset), src, length * sizeof(jlong)); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
523 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
524 |
JNIAccessMark jni(this); |
54732 | 525 |
jni()->SetLongArrayRegion(dest.as_jlongArray(), offset, length, src); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
526 |
} |
33160 | 527 |
} |
528 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
529 |
jboolean JVMCIEnv::is_boxing_object(BasicType type, JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
530 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
531 |
return java_lang_boxing_object::is_instance(HotSpotJVMCI::resolve(object), type); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
532 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
533 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
534 |
return jni()->IsInstanceOf(get_jobject(object), JNIJVMCI::box_class(type)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
535 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
536 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
537 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
538 |
// Get the primitive value from a Java boxing object. It's hard error to |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
539 |
// pass a non-primitive BasicType. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
540 |
jvalue JVMCIEnv::get_boxed_value(BasicType type, JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
541 |
jvalue result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
542 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
543 |
if (java_lang_boxing_object::get_value(HotSpotJVMCI::resolve(object), &result) == T_ILLEGAL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
544 |
ShouldNotReachHere(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
545 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
546 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
547 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
548 |
jfieldID field = JNIJVMCI::box_field(type); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
549 |
switch (type) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
550 |
case T_BOOLEAN: result.z = jni()->GetBooleanField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
551 |
case T_BYTE: result.b = jni()->GetByteField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
552 |
case T_SHORT: result.s = jni()->GetShortField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
553 |
case T_CHAR: result.c = jni()->GetCharField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
554 |
case T_INT: result.i = jni()->GetIntField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
555 |
case T_LONG: result.j = jni()->GetLongField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
556 |
case T_FLOAT: result.f = jni()->GetFloatField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
557 |
case T_DOUBLE: result.d = jni()->GetDoubleField(get_jobject(object), field); break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
558 |
default: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
559 |
ShouldNotReachHere(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
560 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
561 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
562 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
563 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
564 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
565 |
// Return the BasicType of the object if it's a boxing object, otherwise return T_ILLEGAL. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
566 |
BasicType JVMCIEnv::get_box_type(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
567 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
568 |
return java_lang_boxing_object::basic_type(HotSpotJVMCI::resolve(object)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
569 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
570 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
571 |
jclass clazz = jni()->GetObjectClass(get_jobject(object)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
572 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_BOOLEAN))) return T_BOOLEAN; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
573 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_BYTE))) return T_BYTE; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
574 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_SHORT))) return T_SHORT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
575 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_CHAR))) return T_CHAR; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
576 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_INT))) return T_INT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
577 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_LONG))) return T_LONG; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
578 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_FLOAT))) return T_FLOAT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
579 |
if (jni()->IsSameObject(clazz, JNIJVMCI::box_class(T_DOUBLE))) return T_DOUBLE; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
580 |
return T_ILLEGAL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
581 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
582 |
} |
33160 | 583 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
584 |
// Create a boxing object of the appropriate primitive type. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
585 |
JVMCIObject JVMCIEnv::create_box(BasicType type, jvalue* value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
586 |
switch (type) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
587 |
case T_BOOLEAN: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
588 |
case T_BYTE: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
589 |
case T_CHAR: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
590 |
case T_SHORT: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
591 |
case T_INT: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
592 |
case T_LONG: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
593 |
case T_FLOAT: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
594 |
case T_DOUBLE: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
595 |
break; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
596 |
default: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
597 |
JVMCI_THROW_MSG_(IllegalArgumentException, "Only boxes for primitive values can be created", JVMCIObject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
598 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
599 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
600 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
601 |
oop box = java_lang_boxing_object::create(type, value, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
602 |
return HotSpotJVMCI::wrap(box); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
603 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
604 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
605 |
jobject box = jni()->NewObjectA(JNIJVMCI::box_class(type), JNIJVMCI::box_constructor(type), value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
606 |
assert(box != NULL, ""); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
607 |
return wrap(box); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
608 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
609 |
} |
33160 | 610 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
611 |
const char* JVMCIEnv::as_utf8_string(JVMCIObject str) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
612 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
613 |
return java_lang_String::as_utf8_string(HotSpotJVMCI::resolve(str)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
614 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
615 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
616 |
int length = jni()->GetStringLength(str.as_jstring()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
617 |
char* result = NEW_RESOURCE_ARRAY(char, length + 1); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
618 |
jni()->GetStringUTFRegion(str.as_jstring(), 0, length, result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
619 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
620 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
621 |
} |
33160 | 622 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
623 |
char* JVMCIEnv::as_utf8_string(JVMCIObject str, char* buf, int buflen) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
624 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
625 |
return java_lang_String::as_utf8_string(HotSpotJVMCI::resolve(str), buf, buflen); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
626 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
627 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
628 |
int length = jni()->GetStringLength(str.as_jstring()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
629 |
if (length >= buflen) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
630 |
length = buflen; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
631 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
632 |
jni()->GetStringUTFRegion(str.as_jstring(), 0, length, buf); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
633 |
return buf; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
634 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
635 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
636 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
637 |
#define DO_THROW(name) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
638 |
void JVMCIEnv::throw_##name(const char* msg) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
639 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
640 |
JavaThread* THREAD = JavaThread::current(); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
641 |
THROW_MSG(HotSpotJVMCI::name::symbol(), msg); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
642 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
643 |
JNIAccessMark jni(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
644 |
jni()->ThrowNew(JNIJVMCI::name::clazz(), msg); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
645 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
646 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
647 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
648 |
DO_THROW(InternalError) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
649 |
DO_THROW(ArrayIndexOutOfBoundsException) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
650 |
DO_THROW(IllegalStateException) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
651 |
DO_THROW(NullPointerException) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
652 |
DO_THROW(IllegalArgumentException) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
653 |
DO_THROW(InvalidInstalledCodeException) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
654 |
DO_THROW(UnsatisfiedLinkError) |
54732 | 655 |
DO_THROW(UnsupportedOperationException) |
656 |
DO_THROW(ClassNotFoundException) |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
657 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
658 |
#undef DO_THROW |
33160 | 659 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
660 |
void JVMCIEnv::fthrow_error(const char* file, int line, const char* format, ...) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
661 |
const int max_msg_size = 1024; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
662 |
va_list ap; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
663 |
va_start(ap, format); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
664 |
char msg[max_msg_size]; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
665 |
vsnprintf(msg, max_msg_size, format, ap); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
666 |
msg[max_msg_size-1] = '\0'; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
667 |
va_end(ap); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
668 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
669 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
670 |
Handle h_loader = Handle(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
671 |
Handle h_protection_domain = Handle(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
672 |
Exceptions::_throw_msg(THREAD, file, line, vmSymbols::jdk_vm_ci_common_JVMCIError(), msg, h_loader, h_protection_domain); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
673 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
674 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
675 |
jni()->ThrowNew(JNIJVMCI::JVMCIError::clazz(), msg); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
676 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
677 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
678 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
679 |
JVMCIObject JVMCIEnv::call_HotSpotJVMCIRuntime_compileMethod (JVMCIObject runtime, JVMCIObject method, int entry_bci, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
680 |
jlong compile_state, int id) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
681 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
682 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
683 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
684 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(runtime))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
685 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(method))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
686 |
jargs.push_int(entry_bci); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
687 |
jargs.push_long(compile_state); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
688 |
jargs.push_int(id); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
689 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
690 |
JavaCalls::call_special(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
691 |
HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
692 |
vmSymbols::compileMethod_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
693 |
vmSymbols::compileMethod_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
694 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
695 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
696 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
697 |
jobject result = jni()->CallNonvirtualObjectMethod(runtime.as_jobject(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
698 |
JNIJVMCI::HotSpotJVMCIRuntime::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
699 |
JNIJVMCI::HotSpotJVMCIRuntime::compileMethod_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
700 |
method.as_jobject(), entry_bci, compile_state, id); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
701 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
702 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
703 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
704 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
705 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
706 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
707 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
708 |
void JVMCIEnv::call_HotSpotJVMCIRuntime_bootstrapFinished (JVMCIObject runtime, JVMCIEnv* JVMCIENV) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
709 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
710 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
711 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
712 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(runtime))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
713 |
JavaValue result(T_VOID); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
714 |
JavaCalls::call_special(&result, HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), vmSymbols::bootstrapFinished_name(), vmSymbols::void_method_signature(), &jargs, CHECK); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
715 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
716 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
717 |
jni()->CallNonvirtualVoidMethod(runtime.as_jobject(), JNIJVMCI::HotSpotJVMCIRuntime::clazz(), JNIJVMCI::HotSpotJVMCIRuntime::bootstrapFinished_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
718 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
719 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
720 |
} |
33160 | 721 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
722 |
void JVMCIEnv::call_HotSpotJVMCIRuntime_shutdown (JVMCIObject runtime) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
723 |
HandleMark hm; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
724 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
725 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
726 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
727 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(runtime))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
728 |
JavaValue result(T_VOID); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
729 |
JavaCalls::call_special(&result, HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), vmSymbols::shutdown_name(), vmSymbols::void_method_signature(), &jargs, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
730 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
731 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
732 |
jni()->CallNonvirtualVoidMethod(runtime.as_jobject(), JNIJVMCI::HotSpotJVMCIRuntime::clazz(), JNIJVMCI::HotSpotJVMCIRuntime::shutdown_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
733 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
734 |
if (has_pending_exception()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
735 |
// This should never happen as HotSpotJVMCIRuntime.shutdown() should |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
736 |
// handle all exceptions. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
737 |
describe_pending_exception(true); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
738 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
739 |
} |
33160 | 740 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
741 |
JVMCIObject JVMCIEnv::call_HotSpotJVMCIRuntime_runtime (JVMCIEnv* JVMCIENV) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
742 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
743 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
744 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
745 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
746 |
JavaCalls::call_static(&result, HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), vmSymbols::runtime_name(), vmSymbols::runtime_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
747 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
748 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
749 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
750 |
jobject result = jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotJVMCIRuntime::clazz(), JNIJVMCI::HotSpotJVMCIRuntime::runtime_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
751 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
752 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
753 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
754 |
return wrap(result); |
33160 | 755 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
756 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
757 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
758 |
JVMCIObject JVMCIEnv::call_JVMCI_getRuntime (JVMCIEnv* JVMCIENV) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
759 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
760 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
761 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
762 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
763 |
JavaCalls::call_static(&result, HotSpotJVMCI::JVMCI::klass(), vmSymbols::getRuntime_name(), vmSymbols::getRuntime_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
764 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
765 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
766 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
767 |
jobject result = jni()->CallStaticObjectMethod(JNIJVMCI::JVMCI::clazz(), JNIJVMCI::JVMCI::getRuntime_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
768 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
769 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
770 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
771 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
772 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
773 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
774 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
775 |
JVMCIObject JVMCIEnv::call_HotSpotJVMCIRuntime_getCompiler (JVMCIObject runtime, JVMCIEnv* JVMCIENV) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
776 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
777 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
778 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
779 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(runtime))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
780 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
781 |
JavaCalls::call_virtual(&result, HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), vmSymbols::getCompiler_name(), vmSymbols::getCompiler_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
782 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
783 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
784 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
785 |
jobject result = jni()->CallObjectMethod(runtime.as_jobject(), JNIJVMCI::HotSpotJVMCIRuntime::getCompiler_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
786 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
787 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
788 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
789 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
790 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
791 |
} |
33160 | 792 |
|
793 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
794 |
JVMCIObject JVMCIEnv::call_HotSpotJVMCIRuntime_callToString(JVMCIObject object, JVMCIEnv* JVMCIENV) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
795 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
796 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
797 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
798 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(object))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
799 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
800 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
801 |
HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
802 |
vmSymbols::callToString_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
803 |
vmSymbols::callToString_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
804 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
805 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
806 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
807 |
jobject result = (jstring) jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotJVMCIRuntime::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
808 |
JNIJVMCI::HotSpotJVMCIRuntime::callToString_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
809 |
object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
810 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
811 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
812 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
813 |
return wrap(result); |
33160 | 814 |
} |
815 |
} |
|
816 |
||
817 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
818 |
JVMCIObject JVMCIEnv::call_PrimitiveConstant_forTypeChar(jchar kind, jlong value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
819 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
820 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
821 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
822 |
jargs.push_int(kind); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
823 |
jargs.push_long(value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
824 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
825 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
826 |
HotSpotJVMCI::PrimitiveConstant::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
827 |
vmSymbols::forTypeChar_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
828 |
vmSymbols::forTypeChar_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
829 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
830 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
831 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
832 |
jobject result = (jstring) jni()->CallStaticObjectMethod(JNIJVMCI::PrimitiveConstant::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
833 |
JNIJVMCI::PrimitiveConstant::forTypeChar_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
834 |
kind, value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
835 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
836 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
837 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
838 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
839 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
840 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
841 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
842 |
JVMCIObject JVMCIEnv::call_JavaConstant_forFloat(float value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
843 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
844 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
845 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
846 |
jargs.push_float(value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
847 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
848 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
849 |
HotSpotJVMCI::JavaConstant::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
850 |
vmSymbols::forFloat_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
851 |
vmSymbols::forFloat_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
852 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
853 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
854 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
855 |
jobject result = (jstring) jni()->CallStaticObjectMethod(JNIJVMCI::JavaConstant::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
856 |
JNIJVMCI::JavaConstant::forFloat_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
857 |
value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
858 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
859 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
860 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
861 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
862 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
863 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
864 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
865 |
JVMCIObject JVMCIEnv::call_JavaConstant_forDouble(double value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
866 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
867 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
868 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
869 |
jargs.push_double(value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
870 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
871 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
872 |
HotSpotJVMCI::JavaConstant::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
873 |
vmSymbols::forDouble_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
874 |
vmSymbols::forDouble_signature(), &jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
875 |
return wrap((oop) result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
876 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
877 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
878 |
jobject result = (jstring) jni()->CallStaticObjectMethod(JNIJVMCI::JavaConstant::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
879 |
JNIJVMCI::JavaConstant::forDouble_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
880 |
value); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
881 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
882 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
883 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
884 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
885 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
886 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
887 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
888 |
JVMCIObject JVMCIEnv::get_jvmci_primitive_type(BasicType type) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
889 |
JVMCIObjectArray primitives = get_HotSpotResolvedPrimitiveType_primitives(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
890 |
JVMCIObject result = get_object_at(primitives, type); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
891 |
return result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
892 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
893 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
894 |
JVMCIObject JVMCIEnv::new_StackTraceElement(const methodHandle& method, int bci, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
895 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
896 |
Symbol* method_name_sym; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
897 |
Symbol* file_name_sym; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
898 |
int line_number; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
899 |
Handle mirror (THREAD, method->method_holder()->java_mirror()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
900 |
java_lang_StackTraceElement::decode(mirror, method, bci, method_name_sym, file_name_sym, line_number); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
901 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
902 |
InstanceKlass* holder = method->method_holder(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
903 |
const char* declaring_class_str = holder->external_name(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
904 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
905 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
906 |
HotSpotJVMCI::StackTraceElement::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
907 |
oop objOop = HotSpotJVMCI::StackTraceElement::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
908 |
Handle obj = Handle(THREAD, objOop); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
909 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
910 |
oop declaring_class = StringTable::intern((char*) declaring_class_str, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
911 |
HotSpotJVMCI::StackTraceElement::set_declaringClass(this, obj(), declaring_class); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
912 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
913 |
oop method_name = StringTable::intern(method_name_sym, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
914 |
HotSpotJVMCI::StackTraceElement::set_methodName(this, obj(), method_name); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
915 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
916 |
if (file_name_sym != NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
917 |
oop file_name = StringTable::intern(file_name_sym, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
918 |
HotSpotJVMCI::StackTraceElement::set_fileName(this, obj(), file_name); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
919 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
920 |
HotSpotJVMCI::StackTraceElement::set_lineNumber(this, obj(), line_number); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
921 |
return wrap(obj()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
922 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
923 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
924 |
jobject declaring_class = jni()->NewStringUTF(declaring_class_str); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
925 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
926 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
927 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
928 |
jobject method_name = jni()->NewStringUTF(method_name_sym->as_C_string()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
929 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
930 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
931 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
932 |
jobject file_name = NULL; |
54732 | 933 |
if (file_name_sym != NULL) { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
934 |
file_name = jni()->NewStringUTF(file_name_sym->as_C_string()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
935 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
936 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
937 |
} |
33160 | 938 |
} |
939 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
940 |
jobject result = jni()->NewObject(JNIJVMCI::StackTraceElement::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
941 |
JNIJVMCI::StackTraceElement::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
942 |
declaring_class, method_name, file_name, line_number); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
943 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
944 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
945 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
946 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
947 |
JVMCIObject JVMCIEnv::new_HotSpotNmethod(const methodHandle& method, const char* name, jboolean isDefault, jlong compileId, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
948 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
949 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
950 |
JVMCIObject methodObject = get_jvmci_method(method(), JVMCI_CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
951 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
952 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
953 |
InstanceKlass* ik = InstanceKlass::cast(HotSpotJVMCI::HotSpotNmethod::klass()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
954 |
if (ik->should_be_initialized()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
955 |
ik->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
956 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
957 |
oop obj = ik->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
958 |
Handle obj_h(THREAD, obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
959 |
Handle nameStr = java_lang_String::create_from_str(name, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
960 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
961 |
// Call constructor |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
962 |
JavaCallArguments jargs; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
963 |
jargs.push_oop(obj_h); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
964 |
jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(methodObject))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
965 |
jargs.push_oop(nameStr); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
966 |
jargs.push_int(isDefault); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
967 |
jargs.push_long(compileId); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
968 |
JavaValue result(T_VOID); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
969 |
JavaCalls::call_special(&result, ik, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
970 |
vmSymbols::object_initializer_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
971 |
vmSymbols::method_string_bool_long_signature(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
972 |
&jargs, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
973 |
return wrap(obj_h()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
974 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
975 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
976 |
jobject nameStr = name == NULL ? NULL : jni()->NewStringUTF(name); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
977 |
if (jni()->ExceptionCheck()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
978 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
979 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
980 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
981 |
jobject result = jni()->NewObject(JNIJVMCI::HotSpotNmethod::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
982 |
JNIJVMCI::HotSpotNmethod::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
983 |
methodObject.as_jobject(), nameStr, isDefault); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
984 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
985 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
986 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
987 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
988 |
JVMCIObject JVMCIEnv::make_local(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
989 |
if (object.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
990 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
991 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
992 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
993 |
return wrap(JNIHandles::make_local(HotSpotJVMCI::resolve(object))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
994 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
995 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
996 |
return wrap(jni()->NewLocalRef(object.as_jobject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
997 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
998 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
999 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1000 |
JVMCIObject JVMCIEnv::make_global(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1001 |
if (object.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1002 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1003 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1004 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1005 |
return wrap(JNIHandles::make_global(Handle(Thread::current(), HotSpotJVMCI::resolve(object)))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1006 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1007 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1008 |
return wrap(jni()->NewGlobalRef(object.as_jobject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1009 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1010 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1011 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1012 |
JVMCIObject JVMCIEnv::make_weak(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1013 |
if (object.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1014 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1015 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1016 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1017 |
return wrap(JNIHandles::make_weak_global(Handle(Thread::current(), HotSpotJVMCI::resolve(object)))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1018 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1019 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1020 |
return wrap(jni()->NewWeakGlobalRef(object.as_jobject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1021 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1022 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1023 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1024 |
void JVMCIEnv::destroy_local(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1025 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1026 |
JNIHandles::destroy_local(object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1027 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1028 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1029 |
jni()->DeleteLocalRef(object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1030 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1031 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1032 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1033 |
void JVMCIEnv::destroy_global(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1034 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1035 |
JNIHandles::destroy_global(object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1036 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1037 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1038 |
jni()->DeleteGlobalRef(object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1039 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1040 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1041 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1042 |
void JVMCIEnv::destroy_weak(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1043 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1044 |
JNIHandles::destroy_weak_global(object.as_jweak()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1045 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1046 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1047 |
jni()->DeleteWeakGlobalRef(object.as_jweak()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1048 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1049 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1050 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1051 |
const char* JVMCIEnv::klass_name(JVMCIObject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1052 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1053 |
return HotSpotJVMCI::resolve(object)->klass()->signature_name(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1054 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1055 |
JVMCIObject name; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1056 |
{ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1057 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1058 |
jclass jcl = jni()->GetObjectClass(object.as_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1059 |
jobject result = jni()->CallObjectMethod(jcl, JNIJVMCI::Class_getName_method()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1060 |
name = JVMCIObject::create(result, is_hotspot()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1061 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1062 |
return as_utf8_string(name); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1063 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1064 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1065 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1066 |
JVMCIObject JVMCIEnv::get_jvmci_method(const methodHandle& method, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1067 |
JVMCIObject method_object; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1068 |
if (method() == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1069 |
return method_object; |
33160 | 1070 |
} |
1071 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1072 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1073 |
jmetadata handle = JVMCI::allocate_handle(method); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1074 |
jboolean exception = false; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1075 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1076 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1077 |
JavaCallArguments args; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1078 |
args.push_long((jlong) handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1079 |
JavaCalls::call_static(&result, HotSpotJVMCI::HotSpotResolvedJavaMethodImpl::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1080 |
vmSymbols::fromMetaspace_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1081 |
vmSymbols::method_fromMetaspace_signature(), &args, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1082 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1083 |
exception = true; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1084 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1085 |
method_object = wrap((oop)result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1086 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1087 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1088 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1089 |
method_object = JNIJVMCI::wrap(jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotResolvedJavaMethodImpl::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1090 |
JNIJVMCI::HotSpotResolvedJavaMethodImpl_fromMetaspace_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1091 |
(jlong) handle)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1092 |
exception = jni()->ExceptionCheck(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1093 |
} |
33160 | 1094 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1095 |
if (exception) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1096 |
JVMCI::release_handle(handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1097 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1098 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1099 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1100 |
assert(asMethod(method_object) == method(), "must be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1101 |
if (get_HotSpotResolvedJavaMethodImpl_metadataHandle(method_object) != (jlong) handle) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1102 |
JVMCI::release_handle(handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1103 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1104 |
assert(!method_object.is_null(), "must be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1105 |
return method_object; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1106 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1107 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1108 |
JVMCIObject JVMCIEnv::get_jvmci_type(const JVMCIKlassHandle& klass, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1109 |
JVMCIObject type; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1110 |
if (klass.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1111 |
return type; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1112 |
} |
33160 | 1113 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1114 |
jlong pointer = (jlong) klass(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1115 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1116 |
JVMCIObject signature = create_string(klass->signature_name(), JVMCI_CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1117 |
jboolean exception = false; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1118 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1119 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1120 |
JavaCallArguments args; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1121 |
args.push_long(pointer); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1122 |
args.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(signature))); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1123 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1124 |
HotSpotJVMCI::HotSpotResolvedObjectTypeImpl::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1125 |
vmSymbols::fromMetaspace_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1126 |
vmSymbols::klass_fromMetaspace_signature(), &args, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1127 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1128 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1129 |
exception = true; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1130 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1131 |
type = wrap((oop)result.get_jobject()); |
33160 | 1132 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1133 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1134 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1135 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1136 |
HandleMark hm(THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1137 |
type = JNIJVMCI::wrap(jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotResolvedObjectTypeImpl::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1138 |
JNIJVMCI::HotSpotResolvedObjectTypeImpl_fromMetaspace_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1139 |
pointer, signature.as_jstring())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1140 |
exception = jni()->ExceptionCheck(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1141 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1142 |
if (exception) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1143 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1144 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1145 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1146 |
assert(type.is_non_null(), "must have result"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1147 |
return type; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1148 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1149 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1150 |
JVMCIObject JVMCIEnv::get_jvmci_constant_pool(const constantPoolHandle& cp, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1151 |
JVMCIObject cp_object; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1152 |
jmetadata handle = JVMCI::allocate_handle(cp); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1153 |
jboolean exception = false; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1154 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1155 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1156 |
JavaValue result(T_OBJECT); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1157 |
JavaCallArguments args; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1158 |
args.push_long((jlong) handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1159 |
JavaCalls::call_static(&result, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1160 |
HotSpotJVMCI::HotSpotConstantPool::klass(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1161 |
vmSymbols::fromMetaspace_name(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1162 |
vmSymbols::constantPool_fromMetaspace_signature(), &args, THREAD); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1163 |
if (HAS_PENDING_EXCEPTION) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1164 |
exception = true; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1165 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1166 |
cp_object = wrap((oop)result.get_jobject()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1167 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1168 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1169 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1170 |
cp_object = JNIJVMCI::wrap(jni()->CallStaticObjectMethod(JNIJVMCI::HotSpotConstantPool::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1171 |
JNIJVMCI::HotSpotConstantPool_fromMetaspace_method(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1172 |
(jlong) handle)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1173 |
exception = jni()->ExceptionCheck(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1174 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1175 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1176 |
if (exception) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1177 |
JVMCI::release_handle(handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1178 |
return JVMCIObject(); |
33160 | 1179 |
} |
1180 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1181 |
assert(!cp_object.is_null(), "must be"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1182 |
// Constant pools aren't cached so this is always a newly created object using the handle |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1183 |
assert(get_HotSpotConstantPool_metadataHandle(cp_object) == (jlong) handle, "must use same handle"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1184 |
return cp_object; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1185 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1186 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1187 |
JVMCIPrimitiveArray JVMCIEnv::new_booleanArray(int length, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1188 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1189 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1190 |
typeArrayOop result = oopFactory::new_boolArray(length, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1191 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1192 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1193 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1194 |
jbooleanArray result = jni()->NewBooleanArray(length); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1195 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1196 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1197 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1198 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1199 |
JVMCIPrimitiveArray JVMCIEnv::new_byteArray(int length, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1200 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1201 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1202 |
typeArrayOop result = oopFactory::new_byteArray(length, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1203 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1204 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1205 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1206 |
jbyteArray result = jni()->NewByteArray(length); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1207 |
return wrap(result); |
33160 | 1208 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1209 |
} |
33160 | 1210 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1211 |
JVMCIObjectArray JVMCIEnv::new_byte_array_array(int length, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1212 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1213 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1214 |
Klass* byteArrayArrayKlass = TypeArrayKlass::cast(Universe::byteArrayKlassObj ())->array_klass(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1215 |
objArrayOop result = ObjArrayKlass::cast(byteArrayArrayKlass) ->allocate(length, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1216 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1217 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1218 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1219 |
jobjectArray result = jni()->NewObjectArray(length, JNIJVMCI::byte_array(), NULL); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1220 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1221 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1222 |
} |
33160 | 1223 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1224 |
JVMCIPrimitiveArray JVMCIEnv::new_intArray(int length, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1225 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1226 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1227 |
typeArrayOop result = oopFactory::new_intArray(length, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1228 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1229 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1230 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1231 |
jintArray result = jni()->NewIntArray(length); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1232 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1233 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1234 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1235 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1236 |
JVMCIPrimitiveArray JVMCIEnv::new_longArray(int length, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1237 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1238 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1239 |
typeArrayOop result = oopFactory::new_longArray(length, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1240 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1241 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1242 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1243 |
jlongArray result = jni()->NewLongArray(length); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1244 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1245 |
} |
33160 | 1246 |
} |
1247 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1248 |
JVMCIObject JVMCIEnv::new_VMField(JVMCIObject name, JVMCIObject type, jlong offset, jlong address, JVMCIObject value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1249 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1250 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1251 |
HotSpotJVMCI::VMField::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1252 |
oop obj = HotSpotJVMCI::VMField::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1253 |
HotSpotJVMCI::VMField::set_name(this, obj, HotSpotJVMCI::resolve(name)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1254 |
HotSpotJVMCI::VMField::set_type(this, obj, HotSpotJVMCI::resolve(type)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1255 |
HotSpotJVMCI::VMField::set_offset(this, obj, offset); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1256 |
HotSpotJVMCI::VMField::set_address(this, obj, address); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1257 |
HotSpotJVMCI::VMField::set_value(this, obj, HotSpotJVMCI::resolve(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1258 |
return wrap(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1259 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1260 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1261 |
jobject result = jni()->NewObject(JNIJVMCI::VMField::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1262 |
JNIJVMCI::VMField::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1263 |
get_jobject(name), get_jobject(type), offset, address, get_jobject(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1264 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1265 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1266 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1267 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1268 |
JVMCIObject JVMCIEnv::new_VMFlag(JVMCIObject name, JVMCIObject type, JVMCIObject value, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1269 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1270 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1271 |
HotSpotJVMCI::VMFlag::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1272 |
oop obj = HotSpotJVMCI::VMFlag::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1273 |
HotSpotJVMCI::VMFlag::set_name(this, obj, HotSpotJVMCI::resolve(name)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1274 |
HotSpotJVMCI::VMFlag::set_type(this, obj, HotSpotJVMCI::resolve(type)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1275 |
HotSpotJVMCI::VMFlag::set_value(this, obj, HotSpotJVMCI::resolve(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1276 |
return wrap(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1277 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1278 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1279 |
jobject result = jni()->NewObject(JNIJVMCI::VMFlag::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1280 |
JNIJVMCI::VMFlag::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1281 |
get_jobject(name), get_jobject(type), get_jobject(value)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1282 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1283 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1284 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1285 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1286 |
JVMCIObject JVMCIEnv::new_VMIntrinsicMethod(JVMCIObject declaringClass, JVMCIObject name, JVMCIObject descriptor, int id, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1287 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1288 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1289 |
HotSpotJVMCI::VMIntrinsicMethod::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1290 |
oop obj = HotSpotJVMCI::VMIntrinsicMethod::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1291 |
HotSpotJVMCI::VMIntrinsicMethod::set_declaringClass(this, obj, HotSpotJVMCI::resolve(declaringClass)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1292 |
HotSpotJVMCI::VMIntrinsicMethod::set_name(this, obj, HotSpotJVMCI::resolve(name)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1293 |
HotSpotJVMCI::VMIntrinsicMethod::set_descriptor(this, obj, HotSpotJVMCI::resolve(descriptor)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1294 |
HotSpotJVMCI::VMIntrinsicMethod::set_id(this, obj, id); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1295 |
return wrap(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1296 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1297 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1298 |
jobject result = jni()->NewObject(JNIJVMCI::VMIntrinsicMethod::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1299 |
JNIJVMCI::VMIntrinsicMethod::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1300 |
get_jobject(declaringClass), get_jobject(name), get_jobject(descriptor), id); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1301 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1302 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1303 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1304 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1305 |
JVMCIObject JVMCIEnv::new_HotSpotStackFrameReference(JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1306 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1307 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1308 |
HotSpotJVMCI::HotSpotStackFrameReference::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1309 |
oop obj = HotSpotJVMCI::HotSpotStackFrameReference::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1310 |
return wrap(obj); |
33160 | 1311 |
} else { |
1312 |
ShouldNotReachHere(); |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1313 |
return JVMCIObject(); |
33160 | 1314 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1315 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1316 |
JVMCIObject JVMCIEnv::new_JVMCIError(JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1317 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1318 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1319 |
HotSpotJVMCI::JVMCIError::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1320 |
oop obj = HotSpotJVMCI::JVMCIError::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1321 |
return wrap(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1322 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1323 |
ShouldNotReachHere(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1324 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1325 |
} |
33160 | 1326 |
} |
1327 |
||
1328 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1329 |
JVMCIObject JVMCIEnv::get_object_constant(oop objOop, bool compressed, bool dont_register) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1330 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1331 |
Handle obj = Handle(THREAD, objOop); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1332 |
if (obj.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1333 |
return JVMCIObject(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1334 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1335 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1336 |
HotSpotJVMCI::DirectHotSpotObjectConstantImpl::klass()->initialize(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1337 |
oop constant = HotSpotJVMCI::DirectHotSpotObjectConstantImpl::klass()->allocate_instance(CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1338 |
HotSpotJVMCI::DirectHotSpotObjectConstantImpl::set_object(this, constant, obj()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1339 |
HotSpotJVMCI::HotSpotObjectConstantImpl::set_compressed(this, constant, compressed); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1340 |
return wrap(constant); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1341 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1342 |
jlong handle = make_handle(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1343 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1344 |
jobject result = jni()->NewObject(JNIJVMCI::IndirectHotSpotObjectConstantImpl::clazz(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1345 |
JNIJVMCI::IndirectHotSpotObjectConstantImpl::constructor(), |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1346 |
handle, compressed, dont_register); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1347 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1348 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1349 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1350 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1351 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1352 |
Handle JVMCIEnv::asConstant(JVMCIObject constant, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1353 |
if (constant.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1354 |
return Handle(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1355 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1356 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1357 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1358 |
assert(HotSpotJVMCI::DirectHotSpotObjectConstantImpl::is_instance(this, constant), "wrong type"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1359 |
oop obj = HotSpotJVMCI::DirectHotSpotObjectConstantImpl::object(this, HotSpotJVMCI::resolve(constant)); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1360 |
return Handle(THREAD, obj); |
54732 | 1361 |
} else if (isa_IndirectHotSpotObjectConstantImpl(constant)) { |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1362 |
jlong object_handle = get_IndirectHotSpotObjectConstantImpl_objectHandle(constant); |
55463 | 1363 |
if (object_handle == 0L) { |
1364 |
JVMCI_THROW_MSG_(NullPointerException, "Foreign object reference has been cleared", Handle()); |
|
1365 |
} |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1366 |
oop result = resolve_handle(object_handle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1367 |
if (result == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1368 |
JVMCI_THROW_MSG_(InternalError, "Constant was unexpectedly NULL", Handle()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1369 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1370 |
return Handle(THREAD, result); |
54732 | 1371 |
} else { |
1372 |
JVMCI_THROW_MSG_(IllegalArgumentException, "DirectHotSpotObjectConstantImpl shouldn't reach JVMCI in SVM mode", Handle()); |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1373 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1374 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1375 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1376 |
JVMCIObject JVMCIEnv::wrap(jobject object) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1377 |
return JVMCIObject::create(object, is_hotspot()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1378 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1379 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1380 |
jlong JVMCIEnv::make_handle(const Handle& obj) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1381 |
assert(!obj.is_null(), "should only create handle for non-NULL oops"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1382 |
jobject handle = JVMCI::make_global(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1383 |
return (jlong) handle; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1384 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1385 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1386 |
oop JVMCIEnv::resolve_handle(jlong objectHandle) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1387 |
assert(objectHandle != 0, "should be a valid handle"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1388 |
oop obj = *((oopDesc**)objectHandle); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1389 |
if (obj != NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1390 |
oopDesc::verify(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1391 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1392 |
return obj; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1393 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1394 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1395 |
JVMCIObject JVMCIEnv::create_string(const char* str, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1396 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1397 |
JavaThread* THREAD = JavaThread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1398 |
Handle result = java_lang_String::create_from_str(str, CHECK_(JVMCIObject())); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1399 |
return HotSpotJVMCI::wrap(result()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1400 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1401 |
jobject result; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1402 |
jboolean exception = false; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1403 |
{ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1404 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1405 |
result = jni()->NewStringUTF(str); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1406 |
exception = jni()->ExceptionCheck(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1407 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1408 |
return wrap(result); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1409 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1410 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1411 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1412 |
bool JVMCIEnv::equals(JVMCIObject a, JVMCIObject b) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1413 |
if (is_hotspot()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1414 |
return HotSpotJVMCI::resolve(a) == HotSpotJVMCI::resolve(b); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1415 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1416 |
JNIAccessMark jni(this); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1417 |
return jni()->IsSameObject(a.as_jobject(), b.as_jobject()) != 0; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1418 |
} |
33160 | 1419 |
} |
1420 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1421 |
BasicType JVMCIEnv::kindToBasicType(JVMCIObject kind, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1422 |
if (kind.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1423 |
JVMCI_THROW_(NullPointerException, T_ILLEGAL); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1424 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1425 |
jchar ch = get_JavaKind_typeChar(kind); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1426 |
switch(ch) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1427 |
case 'Z': return T_BOOLEAN; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1428 |
case 'B': return T_BYTE; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1429 |
case 'S': return T_SHORT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1430 |
case 'C': return T_CHAR; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1431 |
case 'I': return T_INT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1432 |
case 'F': return T_FLOAT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1433 |
case 'J': return T_LONG; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1434 |
case 'D': return T_DOUBLE; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1435 |
case 'A': return T_OBJECT; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1436 |
case '-': return T_ILLEGAL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1437 |
default: |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1438 |
JVMCI_ERROR_(T_ILLEGAL, "unexpected Kind: %c", ch); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1439 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1440 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1441 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1442 |
void JVMCIEnv::initialize_installed_code(JVMCIObject installed_code, CodeBlob* cb, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1443 |
// Ensure that all updates to the InstalledCode fields are consistent. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1444 |
if (get_InstalledCode_address(installed_code) != 0) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1445 |
JVMCI_THROW_MSG(InternalError, "InstalledCode instance already in use"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1446 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1447 |
if (!isa_HotSpotInstalledCode(installed_code)) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1448 |
JVMCI_THROW_MSG(InternalError, "InstalledCode instance must be a subclass of HotSpotInstalledCode"); |
33160 | 1449 |
} |
1450 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1451 |
// Ignore the version which can stay at 0 |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1452 |
if (cb->is_nmethod()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1453 |
nmethod* nm = cb->as_nmethod_or_null(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1454 |
if (!nm->is_alive()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1455 |
JVMCI_THROW_MSG(InternalError, "nmethod has been reclaimed"); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1456 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1457 |
if (nm->is_in_use()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1458 |
set_InstalledCode_entryPoint(installed_code, (jlong) nm->verified_entry_point()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1459 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1460 |
} else { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1461 |
set_InstalledCode_entryPoint(installed_code, (jlong) cb->code_begin()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1462 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1463 |
set_InstalledCode_address(installed_code, (jlong) cb); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1464 |
set_HotSpotInstalledCode_size(installed_code, cb->size()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1465 |
set_HotSpotInstalledCode_codeStart(installed_code, (jlong) cb->code_begin()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1466 |
set_HotSpotInstalledCode_codeSize(installed_code, cb->code_size()); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1467 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1468 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1469 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1470 |
void JVMCIEnv::invalidate_nmethod_mirror(JVMCIObject mirror, JVMCI_TRAPS) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1471 |
if (mirror.is_null()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1472 |
JVMCI_THROW(NullPointerException); |
33160 | 1473 |
} |
1474 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1475 |
jlong nativeMethod = get_InstalledCode_address(mirror); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1476 |
nmethod* nm = JVMCIENV->asNmethod(mirror); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1477 |
if (nm == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1478 |
// Nothing to do |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1479 |
return; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1480 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1481 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1482 |
Thread* THREAD = Thread::current(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1483 |
if (!mirror.is_hotspot() && !THREAD->is_Java_thread()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1484 |
// Calling back into native might cause the execution to block, so only allow this when calling |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1485 |
// from a JavaThread, which is the normal case anyway. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1486 |
JVMCI_THROW_MSG(IllegalArgumentException, |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1487 |
"Cannot invalidate HotSpotNmethod object in shared library VM heap from non-JavaThread"); |
33160 | 1488 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1489 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1490 |
nmethodLocker nml(nm); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1491 |
if (nm->is_alive()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1492 |
// Invalidating the HotSpotNmethod means we want the nmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1493 |
// to be deoptimized. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1494 |
nm->mark_for_deoptimization(); |
58226 | 1495 |
Deoptimization::deoptimize_all_marked(); |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1496 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1497 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1498 |
// A HotSpotNmethod instance can only reference a single nmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1499 |
// during its lifetime so simply clear it here. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1500 |
set_InstalledCode_address(mirror, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1501 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1502 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1503 |
Klass* JVMCIEnv::asKlass(JVMCIObject obj) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1504 |
return (Klass*) get_HotSpotResolvedObjectTypeImpl_metadataPointer(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1505 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1506 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1507 |
Method* JVMCIEnv::asMethod(JVMCIObject obj) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1508 |
Method** metadataHandle = (Method**) get_HotSpotResolvedJavaMethodImpl_metadataHandle(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1509 |
return *metadataHandle; |
33160 | 1510 |
} |
1511 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1512 |
ConstantPool* JVMCIEnv::asConstantPool(JVMCIObject obj) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1513 |
ConstantPool** metadataHandle = (ConstantPool**) get_HotSpotConstantPool_metadataHandle(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1514 |
return *metadataHandle; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1515 |
} |
33160 | 1516 |
|
1517 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1518 |
CodeBlob* JVMCIEnv::asCodeBlob(JVMCIObject obj) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1519 |
address code = (address) get_InstalledCode_address(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1520 |
if (code == NULL) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1521 |
return NULL; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1522 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1523 |
if (isa_HotSpotNmethod(obj)) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1524 |
jlong compile_id_snapshot = get_HotSpotNmethod_compileIdSnapshot(obj); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1525 |
if (compile_id_snapshot != 0L) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1526 |
// A HotSpotNMethod not in an nmethod's oops table so look up |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1527 |
// the nmethod and then update the fields based on its state. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1528 |
CodeBlob* cb = CodeCache::find_blob_unsafe(code); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1529 |
if (cb == (CodeBlob*) code) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1530 |
// Found a live CodeBlob with the same address, make sure it's the same nmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1531 |
nmethod* nm = cb->as_nmethod_or_null(); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1532 |
if (nm != NULL && nm->compile_id() == compile_id_snapshot) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1533 |
if (!nm->is_alive()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1534 |
// Break the links from the mirror to the nmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1535 |
set_InstalledCode_address(obj, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1536 |
set_InstalledCode_entryPoint(obj, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1537 |
} else if (nm->is_not_entrant()) { |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1538 |
// Zero the entry point so that the nmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1539 |
// cannot be invoked by the mirror but can |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1540 |
// still be deoptimized. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1541 |
set_InstalledCode_entryPoint(obj, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1542 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1543 |
return cb; |
35592
5814f874d736
8147432: JVMCI should report bailouts in PrintCompilation output
never
parents:
34317
diff
changeset
|
1544 |
} |
33160 | 1545 |
} |
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1546 |
// Clear the InstalledCode fields of this HotSpotNmethod |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1547 |
// that no longer refers to an nmethod in the code cache. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1548 |
set_InstalledCode_address(obj, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1549 |
set_InstalledCode_entryPoint(obj, 0); |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1550 |
return NULL; |
33160 | 1551 |
} |
1552 |
} |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1553 |
return (CodeBlob*) code; |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1554 |
} |
33160 | 1555 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1556 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1557 |
// Generate implementations for the initialize, new, isa, get and set methods for all the types and |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1558 |
// fields declared in the JVMCI_CLASSES_DO macro. |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1559 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1560 |
#define START_CLASS(className, fullClassName) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1561 |
void JVMCIEnv::className##_initialize(JVMCI_TRAPS) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1562 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1563 |
HotSpotJVMCI::className::initialize(JVMCI_CHECK); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1564 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1565 |
JNIJVMCI::className::initialize(JVMCI_CHECK); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1566 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1567 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1568 |
JVMCIObjectArray JVMCIEnv::new_##className##_array(int length, JVMCI_TRAPS) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1569 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1570 |
Thread* THREAD = Thread::current(); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1571 |
objArrayOop array = oopFactory::new_objArray(HotSpotJVMCI::className::klass(), length, CHECK_(JVMCIObject())); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1572 |
return (JVMCIObjectArray) wrap(array); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1573 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1574 |
JNIAccessMark jni(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1575 |
jobjectArray result = jni()->NewObjectArray(length, JNIJVMCI::className::clazz(), NULL); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1576 |
return wrap(result); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1577 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1578 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1579 |
bool JVMCIEnv::isa_##className(JVMCIObject object) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1580 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1581 |
return HotSpotJVMCI::className::is_instance(this, object); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1582 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1583 |
return JNIJVMCI::className::is_instance(this, object); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1584 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1585 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1586 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1587 |
#define END_CLASS |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1588 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1589 |
#define FIELD(className, name, type, accessor, cast) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1590 |
type JVMCIEnv::get_##className##_##name(JVMCIObject obj) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1591 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1592 |
return HotSpotJVMCI::className::get_##name(this, obj); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1593 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1594 |
return JNIJVMCI::className::get_##name(this, obj); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1595 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1596 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1597 |
void JVMCIEnv::set_##className##_##name(JVMCIObject obj, type x) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1598 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1599 |
HotSpotJVMCI::className::set_##name(this, obj, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1600 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1601 |
JNIJVMCI::className::set_##name(this, obj, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1602 |
} \ |
33160 | 1603 |
} |
1604 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1605 |
#define EMPTY_CAST |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1606 |
#define CHAR_FIELD(className, name) FIELD(className, name, jchar, Char, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1607 |
#define INT_FIELD(className, name) FIELD(className, name, jint, Int, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1608 |
#define BOOLEAN_FIELD(className, name) FIELD(className, name, jboolean, Boolean, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1609 |
#define LONG_FIELD(className, name) FIELD(className, name, jlong, Long, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1610 |
#define FLOAT_FIELD(className, name) FIELD(className, name, jfloat, Float, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1611 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1612 |
#define OBJECT_FIELD(className, name, signature) OOPISH_FIELD(className, name, JVMCIObject, Object, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1613 |
#define OBJECTARRAY_FIELD(className, name, signature) OOPISH_FIELD(className, name, JVMCIObjectArray, Object, (JVMCIObjectArray)) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1614 |
#define PRIMARRAY_FIELD(className, name, signature) OOPISH_FIELD(className, name, JVMCIPrimitiveArray, Object, (JVMCIPrimitiveArray)) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1615 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1616 |
#define STATIC_OBJECT_FIELD(className, name, signature) STATIC_OOPISH_FIELD(className, name, JVMCIObject, Object, (JVMCIObject)) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1617 |
#define STATIC_OBJECTARRAY_FIELD(className, name, signature) STATIC_OOPISH_FIELD(className, name, JVMCIObjectArray, Object, (JVMCIObjectArray)) |
36078
954c49c0ba57
8149969: [JVMCI] PrintNMethods is ignored for CompilerToVM.installCode when not called from the broker
never
parents:
35592
diff
changeset
|
1618 |
|
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1619 |
#define OOPISH_FIELD(className, name, type, accessor, cast) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1620 |
type JVMCIEnv::get_##className##_##name(JVMCIObject obj) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1621 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1622 |
return HotSpotJVMCI::className::get_##name(this, obj); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1623 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1624 |
return JNIJVMCI::className::get_##name(this, obj); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1625 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1626 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1627 |
void JVMCIEnv::set_##className##_##name(JVMCIObject obj, type x) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1628 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1629 |
HotSpotJVMCI::className::set_##name(this, obj, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1630 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1631 |
JNIJVMCI::className::set_##name(this, obj, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1632 |
} \ |
33160 | 1633 |
} |
1634 |
||
54669
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1635 |
#define STATIC_OOPISH_FIELD(className, name, type, accessor, cast) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1636 |
type JVMCIEnv::get_##className##_##name() { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1637 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1638 |
return HotSpotJVMCI::className::get_##name(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1639 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1640 |
return JNIJVMCI::className::get_##name(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1641 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1642 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1643 |
void JVMCIEnv::set_##className##_##name(type x) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1644 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1645 |
HotSpotJVMCI::className::set_##name(this, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1646 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1647 |
JNIJVMCI::className::set_##name(this, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1648 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1649 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1650 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1651 |
#define STATIC_PRIMITIVE_FIELD(className, name, type, accessor, cast) \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1652 |
type JVMCIEnv::get_##className##_##name() { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1653 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1654 |
return HotSpotJVMCI::className::get_##name(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1655 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1656 |
return JNIJVMCI::className::get_##name(this); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1657 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1658 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1659 |
void JVMCIEnv::set_##className##_##name(type x) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1660 |
if (is_hotspot()) { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1661 |
HotSpotJVMCI::className::set_##name(this, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1662 |
} else { \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1663 |
JNIJVMCI::className::set_##name(this, x); \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1664 |
} \ |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1665 |
} |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1666 |
#define STATIC_INT_FIELD(className, name) STATIC_PRIMITIVE_FIELD(className, name, jint, Int, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1667 |
#define STATIC_BOOLEAN_FIELD(className, name) STATIC_PRIMITIVE_FIELD(className, name, jboolean, Boolean, EMPTY_CAST) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1668 |
#define METHOD(jniCallType, jniGetMethod, hsCallType, returnType, className, methodName, signatureSymbolName, args) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1669 |
#define CONSTRUCTOR(className, signature) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1670 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1671 |
JVMCI_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OBJECT_FIELD, PRIMARRAY_FIELD, OBJECTARRAY_FIELD, STATIC_OBJECT_FIELD, STATIC_OBJECTARRAY_FIELD, STATIC_INT_FIELD, STATIC_BOOLEAN_FIELD, METHOD, CONSTRUCTOR) |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1672 |
|
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1673 |
#undef START_CLASS |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1674 |
#undef END_CLASS |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1675 |
#undef METHOD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1676 |
#undef CONSTRUCTOR |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1677 |
#undef FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1678 |
#undef CHAR_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1679 |
#undef INT_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1680 |
#undef BOOLEAN_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1681 |
#undef LONG_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1682 |
#undef FLOAT_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1683 |
#undef OBJECT_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1684 |
#undef PRIMARRAY_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1685 |
#undef OBJECTARRAY_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1686 |
#undef STATIC_OOPISH_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1687 |
#undef STATIC_OBJECT_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1688 |
#undef STATIC_OBJECTARRAY_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1689 |
#undef STATIC_INT_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1690 |
#undef STATIC_BOOLEAN_FIELD |
ad45b3802d4e
8220623: [JVMCI] Update JVMCI to support JVMCI based Compiler compiled into shared library
kvn
parents:
53430
diff
changeset
|
1691 |
#undef EMPTY_CAST |