< prev index next >

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

Print this page

        

*** 33,52 **** // // Object entry // ------------ // // 6 ! // 3 2 1 0 ! // +---------------------------------------------------------------------+-+-+ ! // |11111111 11111111 11111111 11111111 11111111 11111111 11111111 111111|1|1| ! // +---------------------------------------------------------------------+-+-+ ! // | | | ! // | 1-1 Partial Array Flag (1-bit) * | ! // | | ! // | 0-0 Final Flag (1-bit) * // | ! // * 63-2 Object Address (62-bits) // // // Partial array entry // ------------------- // --- 33,54 ---- // // Object entry // ------------ // // 6 ! // 3 3 2 1 0 ! // +--------------------------------------------------------------------+-+-+-+ ! // |11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111|1|1|1| ! // +--------------------------------------------------------------------+-+-+-+ ! // | | | | ! // | 2-2 Follow Flag (1-bit) * | | ! // | | | ! // | 1-1 Partial Array Flag (1-bit) * | ! // | | ! // | 0-0 Final Flag (1-bit) * // | ! // * 63-3 Object Address (62-bits) // // // Partial array entry // ------------------- //
*** 67,77 **** class ZMarkStackEntry { private: typedef ZBitField<uint64_t, bool, 0, 1> field_finalizable; typedef ZBitField<uint64_t, bool, 1, 1> field_partial_array; ! typedef ZBitField<uint64_t, uintptr_t, 2, 62> field_object_address; typedef ZBitField<uint64_t, size_t, 2, 30> field_partial_array_length; typedef ZBitField<uint64_t, size_t, 32, 32> field_partial_array_offset; uint64_t _entry; --- 69,80 ---- class ZMarkStackEntry { private: typedef ZBitField<uint64_t, bool, 0, 1> field_finalizable; typedef ZBitField<uint64_t, bool, 1, 1> field_partial_array; ! typedef ZBitField<uint64_t, bool, 2, 1> field_follow; ! typedef ZBitField<uint64_t, uintptr_t, 3, 61> field_object_address; typedef ZBitField<uint64_t, size_t, 2, 30> field_partial_array_length; typedef ZBitField<uint64_t, size_t, 32, 32> field_partial_array_offset; uint64_t _entry;
*** 81,92 **** // _entry to allow it to be optimized out when instantiating ZMarkStack, // which has a long array of ZMarkStackEntry elements, but doesn't care // what _entry is initialized to. } ! ZMarkStackEntry(uintptr_t object_address, bool finalizable) : _entry(field_object_address::encode(object_address) | field_partial_array::encode(false) | field_finalizable::encode(finalizable)) {} ZMarkStackEntry(size_t partial_array_offset, size_t partial_array_length, bool finalizable) : _entry(field_partial_array_offset::encode(partial_array_offset) | --- 84,96 ---- // _entry to allow it to be optimized out when instantiating ZMarkStack, // which has a long array of ZMarkStackEntry elements, but doesn't care // what _entry is initialized to. } ! ZMarkStackEntry(uintptr_t object_address, bool follow, bool finalizable) : _entry(field_object_address::encode(object_address) | + field_follow::encode(follow) | field_partial_array::encode(false) | field_finalizable::encode(finalizable)) {} ZMarkStackEntry(size_t partial_array_offset, size_t partial_array_length, bool finalizable) : _entry(field_partial_array_offset::encode(partial_array_offset) |
*** 108,117 **** --- 112,125 ---- size_t partial_array_length() const { return field_partial_array_length::decode(_entry); } + bool follow() const { + return field_follow::decode(_entry); + } + uintptr_t object_address() const { return field_object_address::decode(_entry); } };
< prev index next >