Mercurial > hg > icedtea8-forest > hotspot
changeset 10862:b4a58a1cd60f
8166583: Add oopDesc::klass_or_null_acquire()
Summary: Added new function.
Reviewed-by: dholmes, tschatzl, adinn
author | kbarrett |
---|---|
date | Fri, 23 Sep 2016 18:23:12 -0400 |
parents | 9cf4c59c7395 |
children | be47c996965c |
files | src/share/vm/oops/oop.hpp src/share/vm/oops/oop.inline.hpp |
diffstat | 2 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/oops/oop.hpp Fri Dec 01 17:03:07 2017 +0100 +++ b/src/share/vm/oops/oop.hpp Fri Sep 23 18:23:12 2016 -0400 @@ -83,6 +83,7 @@ Klass* klass() const; Klass* klass_or_null() const volatile; + Klass* klass_or_null_acquire() const volatile; Klass** klass_addr(); narrowKlass* compressed_klass_addr();
--- a/src/share/vm/oops/oop.inline.hpp Fri Dec 01 17:03:07 2017 +0100 +++ b/src/share/vm/oops/oop.inline.hpp Fri Sep 23 18:23:12 2016 -0400 @@ -78,7 +78,6 @@ } inline Klass* oopDesc::klass_or_null() const volatile { - // can be NULL in CMS if (UseCompressedClassPointers) { return Klass::decode_klass(_metadata._compressed_klass); } else { @@ -86,6 +85,17 @@ } } +inline Klass* oopDesc::klass_or_null_acquire() const volatile { + if (UseCompressedClassPointers) { + // Workaround for non-const load_acquire parameter. + const volatile narrowKlass* addr = &_metadata._compressed_klass; + volatile narrowKlass* xaddr = const_cast<volatile narrowKlass*>(addr); + return Klass::decode_klass(OrderAccess::load_acquire(xaddr)); + } else { + return (Klass*)OrderAccess::load_ptr_acquire(&_metadata._klass); + } +} + inline int oopDesc::klass_gap_offset_in_bytes() { assert(UseCompressedClassPointers, "only applicable to compressed klass pointers"); return oopDesc::klass_offset_in_bytes() + sizeof(narrowKlass);