8140483: Atomic*FieldUpdaters final fields should be trusted
Add exceptions for A*FU subclasses that do the actual work. Reviewed-by: jrose, vlivanov
This commit is contained in:
parent
c04398f782
commit
a7f471d8be
@ -190,6 +190,14 @@ static bool trust_final_non_static_fields(ciInstanceKlass* holder) {
|
|||||||
// so there is no hacking of finals going on with them.
|
// so there is no hacking of finals going on with them.
|
||||||
if (holder->is_anonymous())
|
if (holder->is_anonymous())
|
||||||
return true;
|
return true;
|
||||||
|
// Trust Atomic*FieldUpdaters: they are very important for performance, and make up one
|
||||||
|
// more reason not to use Unsafe, if their final fields are trusted. See more in JDK-8140483.
|
||||||
|
if (holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl() ||
|
||||||
|
holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicLongFieldUpdater_CASUpdater() ||
|
||||||
|
holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicLongFieldUpdater_LockedUpdater() ||
|
||||||
|
holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicReferenceFieldUpdater_Impl()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return TrustFinalNonStaticFields;
|
return TrustFinalNonStaticFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +202,11 @@
|
|||||||
template(java_lang_StackTraceElement, "java/lang/StackTraceElement") \
|
template(java_lang_StackTraceElement, "java/lang/StackTraceElement") \
|
||||||
\
|
\
|
||||||
/* Concurrency support */ \
|
/* Concurrency support */ \
|
||||||
template(java_util_concurrent_locks_AbstractOwnableSynchronizer, "java/util/concurrent/locks/AbstractOwnableSynchronizer") \
|
template(java_util_concurrent_locks_AbstractOwnableSynchronizer, "java/util/concurrent/locks/AbstractOwnableSynchronizer") \
|
||||||
|
template(java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl, "java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl") \
|
||||||
|
template(java_util_concurrent_atomic_AtomicLongFieldUpdater_CASUpdater, "java/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater") \
|
||||||
|
template(java_util_concurrent_atomic_AtomicLongFieldUpdater_LockedUpdater, "java/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater") \
|
||||||
|
template(java_util_concurrent_atomic_AtomicReferenceFieldUpdater_Impl, "java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl") \
|
||||||
template(sun_misc_Contended_signature, "Lsun/misc/Contended;") \
|
template(sun_misc_Contended_signature, "Lsun/misc/Contended;") \
|
||||||
\
|
\
|
||||||
/* class symbols needed by intrinsics */ \
|
/* class symbols needed by intrinsics */ \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user