< prev index next >

src/hotspot/share/gc/z/zMarkStackEntry.hpp

Print this page




  48 //
  49 //
  50 //  Partial array entry
  51 //  -------------------
  52 //
  53 //   6                                 3  3
  54 //   3                                 2  1                               2 1 0
  55 //  +------------------------------------+---------------------------------+-+-+
  56 //  |11111111 11111111 11111111 11111111 |11111111 11111111 11111111 111111|1|1|
  57 //  +------------------------------------+---------------------------------+-+-+
  58 //  |                                    |                                 | |
  59 //  |                                    |  1-1 Partial Array Flag (1-bit) * |
  60 //  |                                    |                                   |
  61 //  |                                    |            0-0 Final Flag (1-bit) *
  62 //  |                                    |
  63 //  |                                    * 31-2 Partial Array Length (30-bits)
  64 //  |
  65 //  * 63-32 Partial Array Address Offset (32-bits)
  66 //
  67 
  68 class ZMarkStackEntry VALUE_OBJ_CLASS_SPEC  {
  69 private:
  70   typedef ZBitField<uint64_t, bool,      0,  1>  field_finalizable;
  71   typedef ZBitField<uint64_t, bool,      1,  1>  field_partial_array;
  72   typedef ZBitField<uint64_t, uintptr_t, 2,  62> field_object_address;
  73   typedef ZBitField<uint64_t, size_t,    2,  30> field_partial_array_length;
  74   typedef ZBitField<uint64_t, size_t,    32, 32> field_partial_array_offset;
  75 
  76   uint64_t _entry;
  77 
  78 public:
  79   ZMarkStackEntry() {
  80     // This constructor is intentionally left emtpy and does not initialize
  81     // _entry to allow it to be optimized out when instantiating ZMarkStack,
  82     // which has a long array of ZMarkStackEntry elements, but doesn't care
  83     // what _entry is initialized to.
  84   }
  85 
  86   ZMarkStackEntry(uintptr_t object_address, bool finalizable) :
  87       _entry(field_object_address::encode(object_address) |
  88              field_partial_array::encode(false) |




  48 //
  49 //
  50 //  Partial array entry
  51 //  -------------------
  52 //
  53 //   6                                 3  3
  54 //   3                                 2  1                               2 1 0
  55 //  +------------------------------------+---------------------------------+-+-+
  56 //  |11111111 11111111 11111111 11111111 |11111111 11111111 11111111 111111|1|1|
  57 //  +------------------------------------+---------------------------------+-+-+
  58 //  |                                    |                                 | |
  59 //  |                                    |  1-1 Partial Array Flag (1-bit) * |
  60 //  |                                    |                                   |
  61 //  |                                    |            0-0 Final Flag (1-bit) *
  62 //  |                                    |
  63 //  |                                    * 31-2 Partial Array Length (30-bits)
  64 //  |
  65 //  * 63-32 Partial Array Address Offset (32-bits)
  66 //
  67 
  68 class ZMarkStackEntry  {
  69 private:
  70   typedef ZBitField<uint64_t, bool,      0,  1>  field_finalizable;
  71   typedef ZBitField<uint64_t, bool,      1,  1>  field_partial_array;
  72   typedef ZBitField<uint64_t, uintptr_t, 2,  62> field_object_address;
  73   typedef ZBitField<uint64_t, size_t,    2,  30> field_partial_array_length;
  74   typedef ZBitField<uint64_t, size_t,    32, 32> field_partial_array_offset;
  75 
  76   uint64_t _entry;
  77 
  78 public:
  79   ZMarkStackEntry() {
  80     // This constructor is intentionally left emtpy and does not initialize
  81     // _entry to allow it to be optimized out when instantiating ZMarkStack,
  82     // which has a long array of ZMarkStackEntry elements, but doesn't care
  83     // what _entry is initialized to.
  84   }
  85 
  86   ZMarkStackEntry(uintptr_t object_address, bool finalizable) :
  87       _entry(field_object_address::encode(object_address) |
  88              field_partial_array::encode(false) |


< prev index next >