A cluster-level entry contains the following fields:typedef struct {
addr_t _start;
addr_t _end;
pcmap_block_tbl_t *_blkTbl;
#ifdef MOBY_MULTITHREADED
pcmap_delta_t *_deltaTbl;
#endif
uint32_t _frameSz;
uint32_t _fpSpillOffset;
uint32_t _fpSpillSz;
} pcmap_cluster_t;
typedef struct {
uint32_t _nClusters;
pcmap_cluster_t _clusters[1];
} pcmap_t;
Figure 11.1: Cluster-level PC map data structures
A block-level entry contains the following fields:typedef struct {
uint16_t _pcOffset;
#ifdef MOBY_MULTITHREADED
uint16_t _deltaTblOffset;
#endif
uint8_t _blockKind;
uint8_t _live[LIVE_VEC_SZ];
} pcmap_block_t;
typedef struct {
uint32_t _nEntries;
pcmap_block_t _entries[1];
} pcmap_block_tbl_t;
Figure 11.2: Block-level PC map data structures
bits | purpose | |
0-1 | number of ``ignore'' indices | |
2-3 | number of ``pointer'' indices | |
4-5 | number of ``pointer or enum'' indices | |
6-7 | number of ``any'' indices |