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.