A heap pointer. More...
#include <rts/gc.h>
Public Member Functions | |
| template<typename T > | |
| T & | operator* () |
| template<typename T > | |
| T * | operator-> () |
| template<typename T > | |
| T & | operator[] (std::ptrdiff_t i) |
| void | lvb (uint64_t *address, bool unique_context=true) |
| loaded-value-barrier read-barrier, modified to do contraction of "locally unique" references when the context isn't unique. | |
Public Attributes | |
| union { | |
| uint64_t unique: 1 | |
| does this reference locally believe it is unique? | |
| uint64_t type: 2 | |
| what type of this pointer is this? | |
| uint64_t offset: 9 | |
| offset within a 4k page | |
| uint64_t segment: 9 | |
| which 4k page within a 2mb region | |
| uint64_t region: 19 | |
| which 2mb region in the system? 1tb addressable. | |
| uint64_t nmt: 1 | |
| not-marked-through toggle for LVB read-barrier | |
| uint64_t space: 4 | |
| which generation/space are we in? | |
| uint64_t tag: 19 | |
| constructor # | |
| uint64_t addr | |
| }; | |
Static Public Attributes | |
| static const uint64_t | mask = 0x7ffffffff8 |
| mask for the offset, segment and region | |
A heap pointer.
1.8.8