void hopc_gc_mark_chunk_pointers(hopc_runtime *r, hword_t size, hcell *raw, const hregmask *mask) { hword_t i = 0; for(i = 0; i < size; i++) { if( BITGET(mask[BMASKWORD(i)], BOFF(i)) ) { hopc_gc_mark_root_alive(r, (memchunk*)(raw[i].p)); } } }
void hopc_gc_update_chunk_pointers(hopc_runtime *r, hcell* lb, hword_t shift, hword_t size, hcell *raw, const hregmask *mask) { hword_t i = 0; for(i = 0; i < size; i++) { if( BITGET(mask[BMASKWORD(i)], BOFF(i)) ) { raw[i].p = (hword_t*)PTRSHIFT(raw[i].p, lb, shift); } } }
{ "lhdr", FLDT_DIR_LEAF_HDR, OI(LOFF(hdr)), dir_leaf_hdr_count, FLD_COUNT, TYP_NONE }, { "nhdr", FLDT_DIR_NODE_HDR, OI(NOFF(hdr)), dir_node_hdr_count, FLD_COUNT, TYP_NONE }, { "entries", FLDT_DIR_LEAF_ENTRY, OI(LOFF(entries)), dir_leaf_entries_count, FLD_ARRAY|FLD_COUNT, TYP_NONE }, { "btree", FLDT_DIR_NODE_ENTRY, OI(NOFF(btree)), dir_node_btree_count, FLD_ARRAY|FLD_COUNT, TYP_NONE }, { "namelist", FLDT_DIR_LEAF_NAME, dir_leaf_namelist_offset, dir_leaf_namelist_count, FLD_ARRAY|FLD_OFFSET|FLD_COUNT, TYP_NONE }, { NULL } }; #define BOFF(f) bitize(offsetof(xfs_da_blkinfo_t, f)) const field_t dir_blkinfo_flds[] = { { "forw", FLDT_DIRBLOCK, OI(BOFF(forw)), C1, 0, TYP_INODATA }, { "back", FLDT_DIRBLOCK, OI(BOFF(back)), C1, 0, TYP_INODATA }, { "magic", FLDT_UINT16X, OI(BOFF(magic)), C1, 0, TYP_NONE }, { "pad", FLDT_UINT16X, OI(BOFF(pad)), C1, FLD_SKIPALL, TYP_NONE }, { NULL } }; #define LEOFF(f) bitize(offsetof(xfs_dir_leaf_entry_t, f)) const field_t dir_leaf_entry_flds[] = { { "hashval", FLDT_UINT32X, OI(LEOFF(hashval)), C1, 0, TYP_NONE }, { "nameidx", FLDT_UINT16D, OI(LEOFF(nameidx)), C1, 0, TYP_NONE }, { "namelen", FLDT_UINT8D, OI(LEOFF(namelen)), C1, 0, TYP_NONE }, { "pad2", FLDT_UINT8X, OI(LEOFF(pad2)), C1, FLD_SKIPALL, TYP_NONE }, { NULL } };