Skip to content

Commit 56c7545

Browse files
author
Kim Barrett
committed
8352565: Add native method implementation of Reference.get()
Reviewed-by: vlivanov, tschatzl, lmesnik
1 parent 7447276 commit 56c7545

20 files changed

+236
-40
lines changed

src/hotspot/share/c1/c1_Compiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ bool Compiler::is_intrinsic_supported(vmIntrinsics::ID id) {
141141
case vmIntrinsics::_arraycopy:
142142
case vmIntrinsics::_currentTimeMillis:
143143
case vmIntrinsics::_nanoTime:
144-
case vmIntrinsics::_Reference_get:
144+
case vmIntrinsics::_Reference_get0:
145145
// Use the intrinsic version of Reference.get() so that the value in
146146
// the referent field can be registered by the G1 pre-barrier code.
147147
// Also to prevent commoning reads from this field across safepoint

src/hotspot/share/c1/c1_GraphBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3340,7 +3340,7 @@ GraphBuilder::GraphBuilder(Compilation* compilation, IRScope* scope)
33403340
break;
33413341
}
33423342

3343-
case vmIntrinsics::_Reference_get:
3343+
case vmIntrinsics::_Reference_get0:
33443344
{
33453345
{
33463346
// With java.lang.ref.reference.get() we must go through the

src/hotspot/share/c1/c1_LIRGenerator.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ void LIRGenerator::do_Return(Return* x) {
11851185

11861186
// Example: ref.get()
11871187
// Combination of LoadField and g1 pre-write barrier
1188-
void LIRGenerator::do_Reference_get(Intrinsic* x) {
1188+
void LIRGenerator::do_Reference_get0(Intrinsic* x) {
11891189

11901190
const int referent_offset = java_lang_ref_Reference::referent_offset();
11911191

@@ -2914,8 +2914,8 @@ void LIRGenerator::do_Intrinsic(Intrinsic* x) {
29142914
case vmIntrinsics::_onSpinWait:
29152915
__ on_spin_wait();
29162916
break;
2917-
case vmIntrinsics::_Reference_get:
2918-
do_Reference_get(x);
2917+
case vmIntrinsics::_Reference_get0:
2918+
do_Reference_get0(x);
29192919
break;
29202920

29212921
case vmIntrinsics::_updateCRC32:

src/hotspot/share/c1/c1_LIRGenerator.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ class LIRGenerator: public InstructionVisitor, public BlockClosure {
266266
void do_CompareAndSwap(Intrinsic* x, ValueType* type);
267267
void do_PreconditionsCheckIndex(Intrinsic* x, BasicType type);
268268
void do_FPIntrinsics(Intrinsic* x);
269-
void do_Reference_get(Intrinsic* x);
269+
void do_Reference_get0(Intrinsic* x);
270270
void do_update_CRC32(Intrinsic* x);
271271
void do_update_CRC32C(Intrinsic* x);
272272
void do_vectorizedMismatch(Intrinsic* x);

src/hotspot/share/classfile/vmIntrinsics.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ bool vmIntrinsics::preserves_state(vmIntrinsics::ID id) {
9999
case vmIntrinsics::_dpow:
100100
case vmIntrinsics::_Preconditions_checkIndex:
101101
case vmIntrinsics::_Preconditions_checkLongIndex:
102-
case vmIntrinsics::_Reference_get:
102+
case vmIntrinsics::_Reference_get0:
103103
case vmIntrinsics::_Continuation_doYield:
104104
case vmIntrinsics::_updateCRC32:
105105
case vmIntrinsics::_updateBytesCRC32:
@@ -244,7 +244,7 @@ bool vmIntrinsics::disabled_by_jvm_flags(vmIntrinsics::ID id) {
244244
case vmIntrinsics::_storeFence:
245245
case vmIntrinsics::_fullFence:
246246
case vmIntrinsics::_countPositives:
247-
case vmIntrinsics::_Reference_get:
247+
case vmIntrinsics::_Reference_get0:
248248
case vmIntrinsics::_Continuation_doYield:
249249
case vmIntrinsics::_Continuation_enterSpecial:
250250
case vmIntrinsics::_Continuation_pin:

src/hotspot/share/classfile/vmIntrinsics.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ class methodHandle;
461461
do_signature(vectorizedMismatch_signature, "(Ljava/lang/Object;JLjava/lang/Object;JII)I") \
462462
\
463463
/* java/lang/ref/Reference */ \
464-
do_intrinsic(_Reference_get, java_lang_ref_Reference, get_name, void_object_signature, F_R) \
464+
do_intrinsic(_Reference_get0, java_lang_ref_Reference, get0_name, void_object_signature, F_RN) \
465465
do_intrinsic(_Reference_refersTo0, java_lang_ref_Reference, refersTo0_name, object_boolean_signature, F_RN) \
466466
do_intrinsic(_PhantomReference_refersTo0, java_lang_ref_PhantomReference, refersTo0_name, object_boolean_signature, F_RN) \
467467
do_intrinsic(_Reference_clear0, java_lang_ref_Reference, clear0_name, void_method_signature, F_RN) \

src/hotspot/share/classfile/vmSymbols.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ class SerializeClosure;
422422
template(sp_name, "sp") \
423423
template(pc_name, "pc") \
424424
template(cs_name, "cs") \
425-
template(get_name, "get") \
425+
template(get0_name, "get0") \
426426
template(refersTo0_name, "refersTo0") \
427427
template(clear0_name, "clear0") \
428428
template(put_name, "put") \

src/hotspot/share/include/jvm.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@ JVM_HasReferencePendingList(JNIEnv *env);
353353
JNIEXPORT void JNICALL
354354
JVM_WaitForReferencePendingList(JNIEnv *env);
355355

356+
JNIEXPORT jobject JNICALL
357+
JVM_ReferenceGet(JNIEnv *env, jobject ref);
358+
356359
JNIEXPORT jboolean JNICALL
357360
JVM_ReferenceRefersTo(JNIEnv *env, jobject ref, jobject o);
358361

src/hotspot/share/interpreter/abstractInterpreter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ AbstractInterpreter::MethodKind AbstractInterpreter::method_kind(const methodHan
148148
case vmIntrinsics::_fmaF: return java_lang_math_fmaF;
149149
case vmIntrinsics::_dsqrt: return java_lang_math_sqrt;
150150
case vmIntrinsics::_dsqrt_strict: return java_lang_math_sqrt_strict;
151-
case vmIntrinsics::_Reference_get: return java_lang_ref_reference_get;
151+
case vmIntrinsics::_Reference_get0: return java_lang_ref_reference_get0;
152152
case vmIntrinsics::_Object_init:
153153
if (m->code_size() == 1) {
154154
// We need to execute the special return bytecode to check for
@@ -210,7 +210,7 @@ vmIntrinsics::ID AbstractInterpreter::method_intrinsic(MethodKind kind) {
210210
case java_lang_math_exp : return vmIntrinsics::_dexp;
211211
case java_lang_math_fmaD : return vmIntrinsics::_fmaD;
212212
case java_lang_math_fmaF : return vmIntrinsics::_fmaF;
213-
case java_lang_ref_reference_get: return vmIntrinsics::_Reference_get;
213+
case java_lang_ref_reference_get0: return vmIntrinsics::_Reference_get0;
214214
case java_util_zip_CRC32_update : return vmIntrinsics::_updateCRC32;
215215
case java_util_zip_CRC32_updateBytes
216216
: return vmIntrinsics::_updateBytesCRC32;
@@ -320,7 +320,7 @@ void AbstractInterpreter::print_method_kind(MethodKind kind) {
320320
case java_util_zip_CRC32_updateByteBuffer : tty->print("java_util_zip_CRC32_updateByteBuffer"); break;
321321
case java_util_zip_CRC32C_updateBytes : tty->print("java_util_zip_CRC32C_updateBytes"); break;
322322
case java_util_zip_CRC32C_updateDirectByteBuffer: tty->print("java_util_zip_CRC32C_updateDirectByteByffer"); break;
323-
case java_lang_ref_reference_get : tty->print("java_lang_ref_reference_get"); break;
323+
case java_lang_ref_reference_get0 : tty->print("java_lang_ref_reference_get0"); break;
324324
case java_lang_Thread_currentThread : tty->print("java_lang_Thread_currentThread"); break;
325325
case java_lang_Float_float16ToFloat : tty->print("java_lang_Float_float16ToFloat"); break;
326326
case java_lang_Float_floatToFloat16 : tty->print("java_lang_Float_floatToFloat16"); break;

src/hotspot/share/interpreter/abstractInterpreter.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class AbstractInterpreter: AllStatic {
8383
java_lang_math_exp, // implementation of java.lang.Math.exp (x)
8484
java_lang_math_fmaF, // implementation of java.lang.Math.fma (x, y, z)
8585
java_lang_math_fmaD, // implementation of java.lang.Math.fma (x, y, z)
86-
java_lang_ref_reference_get, // implementation of java.lang.ref.Reference.get()
86+
java_lang_ref_reference_get0, // implementation of java.lang.ref.Reference.get()
8787
java_util_zip_CRC32_update, // implementation of java.util.zip.CRC32.update()
8888
java_util_zip_CRC32_updateBytes, // implementation of java.util.zip.CRC32.updateBytes()
8989
java_util_zip_CRC32_updateByteBuffer, // implementation of java.util.zip.CRC32.updateByteBuffer()

0 commit comments

Comments
 (0)