Skip to content

Commit ea61671

Browse files
Hao SunNingsheng Jian
Hao Sun
authored and
Ningsheng Jian
committedSep 28, 2022
8294359: Interpreter(AArch64) intrinsify Thread.currentThread()
Reviewed-by: aph, shade
1 parent c42ef70 commit ea61671

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed
 

‎src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -1681,6 +1681,17 @@ address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) {
16811681
return entry_point;
16821682
}
16831683

1684+
// Method entry for java.lang.Thread.currentThread
1685+
address TemplateInterpreterGenerator::generate_currentThread() {
1686+
address entry_point = __ pc();
1687+
1688+
__ ldr(r0, Address(rthread, JavaThread::vthread_offset()));
1689+
__ resolve_oop_handle(r0, rscratch1, rscratch2);
1690+
__ ret(lr);
1691+
1692+
return entry_point;
1693+
}
1694+
16841695
//-----------------------------------------------------------------------------
16851696
// Exceptions
16861697

‎src/hotspot/share/interpreter/abstractInterpreter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ AbstractInterpreter::MethodKind AbstractInterpreter::method_kind(const methodHan
133133
case vmIntrinsics::_floatToRawIntBits: return java_lang_Float_floatToRawIntBits;
134134
case vmIntrinsics::_longBitsToDouble: return java_lang_Double_longBitsToDouble;
135135
case vmIntrinsics::_doubleToRawLongBits: return java_lang_Double_doubleToRawLongBits;
136-
#ifdef AMD64
136+
#if defined(AMD64) || defined(AARCH64)
137137
case vmIntrinsics::_currentThread: return java_lang_Thread_currentThread;
138138
#endif
139139
#endif // ZERO

‎src/hotspot/share/interpreter/templateInterpreterGenerator.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ void TemplateInterpreterGenerator::generate_all() {
201201
method_entry(java_lang_math_fmaF )
202202
method_entry(java_lang_math_fmaD )
203203
method_entry(java_lang_ref_reference_get)
204-
#ifdef AMD64
204+
#if defined(AMD64) || defined(AARCH64)
205205
method_entry(java_lang_Thread_currentThread)
206206
#endif
207207
AbstractInterpreter::initialize_method_handle_entries();
@@ -433,7 +433,7 @@ address TemplateInterpreterGenerator::generate_method_entry(
433433
: // fall thru
434434
case Interpreter::java_util_zip_CRC32C_updateDirectByteBuffer
435435
: entry_point = generate_CRC32C_updateBytes_entry(kind); break;
436-
#ifdef AMD64
436+
#if defined(AMD64) || defined(AARCH64)
437437
case Interpreter::java_lang_Thread_currentThread
438438
: entry_point = generate_currentThread(); break;
439439
#endif

‎src/hotspot/share/interpreter/templateInterpreterGenerator.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class TemplateInterpreterGenerator: public AbstractInterpreterGenerator {
9494
address generate_CRC32_update_entry();
9595
address generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind);
9696
address generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind);
97-
#ifdef AMD64
97+
#if defined(AMD64) || defined(AARCH64)
9898
address generate_currentThread();
9999
#endif
100100
#ifdef IA32

0 commit comments

Comments
 (0)
Please sign in to comment.