def get_size_descr(gccache, STRUCT): cache = gccache._cache_size try: return cache[STRUCT] except KeyError: size = symbolic.get_size(STRUCT, gccache.translate_support_code) count_fields_if_immut = heaptracker.count_fields_if_immutable(STRUCT) if heaptracker.has_gcstruct_a_vtable(STRUCT): sizedescr = SizeDescrWithVTable(size, count_fields_if_immut) else: sizedescr = SizeDescr(size, count_fields_if_immut) gccache.init_size_descr(STRUCT, sizedescr) cache[STRUCT] = sizedescr return sizedescr
def get_size_descr(gccache, STRUCT): cache = gccache._cache_size try: return cache[STRUCT] except KeyError: size = symbolic.get_size(STRUCT, gccache.translate_support_code) count_fields_if_immut = heaptracker.count_fields_if_immutable(STRUCT) if heaptracker.has_gcstruct_a_vtable(STRUCT): sizedescr = SizeDescrWithVTable(size, count_fields_if_immut) else: sizedescr = SizeDescr(size, count_fields_if_immut) gccache.init_size_descr(STRUCT, sizedescr) cache[STRUCT] = sizedescr return sizedescr
def sizeof(self, S): assert not isinstance(S, lltype.Ptr) count = heaptracker.count_fields_if_immutable(S) return self.getdescr(symbolic.get_size(S), count_fields_if_immut=count)
def sizeof(self, S): assert not isinstance(S, lltype.Ptr) count = heaptracker.count_fields_if_immutable(S) return self.getdescr(symbolic.get_size(S), count_fields_if_immut=count)