< prev index next >

src/hotspot/share/oops/compressedKlass.inline.hpp

Print this page

 76 #ifdef ASSERT
 77 inline void CompressedKlassPointers::check_encodable(const void* addr) {
 78   assert(UseCompressedClassPointers, "Only call for +UseCCP");
 79   assert(addr != nullptr, "Null Klass?");
 80   assert(is_encodable(addr),
 81          "Address " PTR_FORMAT " is not encodable (Klass range: " RANGEFMT ", klass alignment: %d)",
 82          p2i(addr), RANGE2FMTARGS(_klass_range_start, _klass_range_end), klass_alignment_in_bytes());
 83 }
 84 
 85 inline void CompressedKlassPointers::check_valid_narrow_klass_id(narrowKlass nk) {
 86   check_init(_base);
 87   assert(UseCompressedClassPointers, "Only call for +UseCCP");
 88   assert(nk > 0, "narrow Klass ID is 0");
 89   const uint64_t nk_mask = ~right_n_bits(narrow_klass_pointer_bits());
 90   assert(((uint64_t)nk & nk_mask) == 0, "narrow klass id bit spillover (%u)", nk);
 91   assert(nk >= _lowest_valid_narrow_klass_id &&
 92          nk <= _highest_valid_narrow_klass_id, "narrowKlass ID out of range (%u)", nk);
 93 }
 94 #endif // ASSERT
 95 





 96 inline address CompressedKlassPointers::encoding_range_end() {
 97   const int max_bits = narrow_klass_pointer_bits() + _shift;
 98   return (address)((uintptr_t)_base + nth_bit(max_bits));
 99 }
100 
101 #endif // SHARE_OOPS_COMPRESSEDKLASS_INLINE_HPP

 76 #ifdef ASSERT
 77 inline void CompressedKlassPointers::check_encodable(const void* addr) {
 78   assert(UseCompressedClassPointers, "Only call for +UseCCP");
 79   assert(addr != nullptr, "Null Klass?");
 80   assert(is_encodable(addr),
 81          "Address " PTR_FORMAT " is not encodable (Klass range: " RANGEFMT ", klass alignment: %d)",
 82          p2i(addr), RANGE2FMTARGS(_klass_range_start, _klass_range_end), klass_alignment_in_bytes());
 83 }
 84 
 85 inline void CompressedKlassPointers::check_valid_narrow_klass_id(narrowKlass nk) {
 86   check_init(_base);
 87   assert(UseCompressedClassPointers, "Only call for +UseCCP");
 88   assert(nk > 0, "narrow Klass ID is 0");
 89   const uint64_t nk_mask = ~right_n_bits(narrow_klass_pointer_bits());
 90   assert(((uint64_t)nk & nk_mask) == 0, "narrow klass id bit spillover (%u)", nk);
 91   assert(nk >= _lowest_valid_narrow_klass_id &&
 92          nk <= _highest_valid_narrow_klass_id, "narrowKlass ID out of range (%u)", nk);
 93 }
 94 #endif // ASSERT
 95 
 96 // Given a narrow Klass ID, returns true if it appears to be valid
 97 inline bool CompressedKlassPointers::is_valid_narrow_klass_id(narrowKlass nk) {
 98   return nk >= _lowest_valid_narrow_klass_id && nk < _highest_valid_narrow_klass_id;
 99 }
100 
101 inline address CompressedKlassPointers::encoding_range_end() {
102   const int max_bits = narrow_klass_pointer_bits() + _shift;
103   return (address)((uintptr_t)_base + nth_bit(max_bits));
104 }
105 
106 #endif // SHARE_OOPS_COMPRESSEDKLASS_INLINE_HPP
< prev index next >