< prev index next >

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

Print this page




  26 
  27 #include "gc/z/zBitField.hpp"
  28 #include "memory/allocation.hpp"
  29 #include "metaprogramming/primitiveConversions.hpp"
  30 
  31 //
  32 // Forwarding table entry layout
  33 // -----------------------------
  34 //
  35 //   6                      4 4                                             0
  36 //   3                      2 1                                             0
  37 //  +------------------------+-----------------------------------------------+
  38 //  |11111111 11111111 111111|11 11111111 11111111 11111111 11111111 11111111|
  39 //  +------------------------+-----------------------------------------------+
  40 //  |                        |
  41 //  |                        * 41-0 To Object Offset (42-bits)
  42 //  |
  43 //  * 63-42 From Object Index (22-bits)
  44 //
  45 
  46 class ZForwardingTableEntry VALUE_OBJ_CLASS_SPEC {
  47   friend struct PrimitiveConversions;
  48 
  49 private:
  50   typedef ZBitField<uint64_t, size_t, 0,  42> field_to_offset;
  51   typedef ZBitField<uint64_t, size_t, 42, 22> field_from_index;
  52 
  53   uint64_t _entry;
  54 
  55 public:
  56   ZForwardingTableEntry() :
  57       _entry(empty()) {}
  58 
  59   ZForwardingTableEntry(size_t from_index, size_t to_offset) :
  60       _entry(field_from_index::encode(from_index) |
  61              field_to_offset::encode(to_offset)) {}
  62 
  63   static uintptr_t empty() {
  64     return (uintptr_t)-1;
  65   }
  66 




  26 
  27 #include "gc/z/zBitField.hpp"
  28 #include "memory/allocation.hpp"
  29 #include "metaprogramming/primitiveConversions.hpp"
  30 
  31 //
  32 // Forwarding table entry layout
  33 // -----------------------------
  34 //
  35 //   6                      4 4                                             0
  36 //   3                      2 1                                             0
  37 //  +------------------------+-----------------------------------------------+
  38 //  |11111111 11111111 111111|11 11111111 11111111 11111111 11111111 11111111|
  39 //  +------------------------+-----------------------------------------------+
  40 //  |                        |
  41 //  |                        * 41-0 To Object Offset (42-bits)
  42 //  |
  43 //  * 63-42 From Object Index (22-bits)
  44 //
  45 
  46 class ZForwardingTableEntry {
  47   friend struct PrimitiveConversions;
  48 
  49 private:
  50   typedef ZBitField<uint64_t, size_t, 0,  42> field_to_offset;
  51   typedef ZBitField<uint64_t, size_t, 42, 22> field_from_index;
  52 
  53   uint64_t _entry;
  54 
  55 public:
  56   ZForwardingTableEntry() :
  57       _entry(empty()) {}
  58 
  59   ZForwardingTableEntry(size_t from_index, size_t to_offset) :
  60       _entry(field_from_index::encode(from_index) |
  61              field_to_offset::encode(to_offset)) {}
  62 
  63   static uintptr_t empty() {
  64     return (uintptr_t)-1;
  65   }
  66 


< prev index next >