1.1 --- a/src/share/vm/ci/ciField.cpp Fri Oct 30 08:29:19 2015 -0700 1.2 +++ b/src/share/vm/ci/ciField.cpp Thu Oct 29 14:08:19 2015 +0300 1.3 @@ -187,6 +187,14 @@ 1.4 // Even if general trusting is disabled, trust system-built closures in these packages. 1.5 if (holder->is_in_package("java/lang/invoke") || holder->is_in_package("sun/invoke")) 1.6 return true; 1.7 + // Trust Atomic*FieldUpdaters: they are very important for performance, and make up one 1.8 + // more reason not to use Unsafe, if their final fields are trusted. See more in JDK-8140483. 1.9 + if (holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl() || 1.10 + holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicLongFieldUpdater_CASUpdater() || 1.11 + holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicLongFieldUpdater_LockedUpdater() || 1.12 + holder->name() == ciSymbol::java_util_concurrent_atomic_AtomicReferenceFieldUpdater_Impl()) { 1.13 + return true; 1.14 + } 1.15 return TrustFinalNonStaticFields; 1.16 } 1.17