/hg/icedtea8-forest/hotspot: 3 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Wed Nov 18 04:09:05 UTC 2015
changeset cbdd812ea25e in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=cbdd812ea25e
author: vlivanov
date: Wed Nov 18 03:40:25 2015 +0000
8087218, PR2740: Constant fold loads from final instance fields in VM anonymous classes
Reviewed-by: jrose, rbackman
changeset 71bc933d7a5b in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=71bc933d7a5b
author: shade
date: Thu Oct 29 14:08:19 2015 +0300
8140483, PR2740: Atomic*FieldUpdaters final fields should be trusted
Summary: Add exceptions for A*FU subclasses that do the actual work.
Reviewed-by: jrose, vlivanov
changeset ddebea156752 in /hg/icedtea8-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea8-forest/hotspot?cmd=changeset;node=ddebea156752
author: andrew
date: Wed Nov 18 03:43:28 2015 +0000
PR2743: Remove bad AArch64 merge fragment
diffstat:
src/share/vm/ci/ciField.cpp | 12 ++++++++++++
src/share/vm/ci/ciInstanceKlass.cpp | 2 ++
src/share/vm/ci/ciInstanceKlass.hpp | 5 +++++
src/share/vm/classfile/vmSymbols.hpp | 6 +++++-
src/share/vm/code/relocInfo.hpp | 4 ----
5 files changed, 24 insertions(+), 5 deletions(-)
diffs (93 lines):
diff -r 3b05ef40e997 -r ddebea156752 src/share/vm/ci/ciField.cpp
--- a/src/share/vm/ci/ciField.cpp Fri Oct 02 06:32:22 2015 +0100
+++ b/src/share/vm/ci/ciField.cpp Wed Nov 18 03:43:28 2015 +0000
@@ -187,6 +187,18 @@
// Even if general trusting is disabled, trust system-built closures in these packages.
if (holder->is_in_package("java/lang/invoke") || holder->is_in_package("sun/invoke"))
return true;
+ // Trust VM anonymous classes. They are private API (sun.misc.Unsafe) and can't be serialized,
+ // so there is no hacking of finals going on with them.
+ if (holder->is_anonymous())
+ 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;
}
diff -r 3b05ef40e997 -r ddebea156752 src/share/vm/ci/ciInstanceKlass.cpp
--- a/src/share/vm/ci/ciInstanceKlass.cpp Fri Oct 02 06:32:22 2015 +0100
+++ b/src/share/vm/ci/ciInstanceKlass.cpp Wed Nov 18 03:43:28 2015 +0000
@@ -58,6 +58,7 @@
_nonstatic_field_size = ik->nonstatic_field_size();
_has_nonstatic_fields = ik->has_nonstatic_fields();
_has_default_methods = ik->has_default_methods();
+ _is_anonymous = ik->is_anonymous();
_nonstatic_fields = NULL; // initialized lazily by compute_nonstatic_fields:
_implementor = NULL; // we will fill these lazily
@@ -100,6 +101,7 @@
_nonstatic_field_size = -1;
_has_nonstatic_fields = false;
_nonstatic_fields = NULL;
+ _is_anonymous = false;
_loader = loader;
_protection_domain = protection_domain;
_is_shared = false;
diff -r 3b05ef40e997 -r ddebea156752 src/share/vm/ci/ciInstanceKlass.hpp
--- a/src/share/vm/ci/ciInstanceKlass.hpp Fri Oct 02 06:32:22 2015 +0100
+++ b/src/share/vm/ci/ciInstanceKlass.hpp Wed Nov 18 03:43:28 2015 +0000
@@ -53,6 +53,7 @@
bool _has_subklass;
bool _has_nonstatic_fields;
bool _has_default_methods;
+ bool _is_anonymous;
ciFlags _flags;
jint _nonstatic_field_size;
@@ -177,6 +178,10 @@
return _has_default_methods;
}
+ bool is_anonymous() {
+ return _is_anonymous;
+ }
+
ciInstanceKlass* get_canonical_holder(int offset);
ciField* get_field_by_offset(int field_offset, bool is_static);
ciField* get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static);
diff -r 3b05ef40e997 -r ddebea156752 src/share/vm/classfile/vmSymbols.hpp
--- a/src/share/vm/classfile/vmSymbols.hpp Fri Oct 02 06:32:22 2015 +0100
+++ b/src/share/vm/classfile/vmSymbols.hpp Wed Nov 18 03:43:28 2015 +0000
@@ -203,7 +203,11 @@
template(java_lang_StackTraceElement, "java/lang/StackTraceElement") \
\
/* 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;") \
\
/* class symbols needed by intrinsics */ \
diff -r 3b05ef40e997 -r ddebea156752 src/share/vm/code/relocInfo.hpp
--- a/src/share/vm/code/relocInfo.hpp Fri Oct 02 06:32:22 2015 +0100
+++ b/src/share/vm/code/relocInfo.hpp Wed Nov 18 03:43:28 2015 +0000
@@ -1307,10 +1307,6 @@
//void pack_data_to -- inherited
void unpack_data();
-#ifdef TARGET_ARCH_aarch64
- void fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest);
-#endif
-
private:
friend class RelocIterator;
section_word_Relocation() { }
More information about the distro-pkg-dev
mailing list