equal
deleted
inserted
replaced
107 return _metadata._klass; |
107 return _metadata._klass; |
108 } |
108 } |
109 } |
109 } |
110 |
110 |
111 Klass* oopDesc::klass_or_null() const volatile { |
111 Klass* oopDesc::klass_or_null() const volatile { |
112 // can be NULL in CMS |
|
113 if (UseCompressedClassPointers) { |
112 if (UseCompressedClassPointers) { |
114 return Klass::decode_klass(_metadata._compressed_klass); |
113 return Klass::decode_klass(_metadata._compressed_klass); |
115 } else { |
114 } else { |
116 return _metadata._klass; |
115 return _metadata._klass; |
|
116 } |
|
117 } |
|
118 |
|
119 Klass* oopDesc::klass_or_null_acquire() const volatile { |
|
120 if (UseCompressedClassPointers) { |
|
121 // Workaround for non-const load_acquire parameter. |
|
122 const volatile narrowKlass* addr = &_metadata._compressed_klass; |
|
123 volatile narrowKlass* xaddr = const_cast<volatile narrowKlass*>(addr); |
|
124 return Klass::decode_klass(OrderAccess::load_acquire(xaddr)); |
|
125 } else { |
|
126 return (Klass*)OrderAccess::load_ptr_acquire(&_metadata._klass); |
117 } |
127 } |
118 } |
128 } |
119 |
129 |
120 Klass** oopDesc::klass_addr() { |
130 Klass** oopDesc::klass_addr() { |
121 // Only used internally and with CMS and will not work with |
131 // Only used internally and with CMS and will not work with |