src/share/vm/ci/ciField.cpp

changeset 8176
714096aec397
parent 6812
00cf2b6f51b9
child 8604
04d83ba48607
child 8664
00cbb581da94
     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  

mercurial