예제 #1
0
파일: descr.py 프로젝트: yuyichao/pypy
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
예제 #2
0
파일: descr.py 프로젝트: zielmicha/pypy
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)
        gc_fielddescrs = heaptracker.gc_fielddescrs(gccache, STRUCT)
        if heaptracker.has_gcstruct_a_vtable(STRUCT):
            sizedescr = SizeDescrWithVTable(size, count_fields_if_immut,
                                            gc_fielddescrs)
        else:
            sizedescr = SizeDescr(size, count_fields_if_immut,
                                  gc_fielddescrs)
        gccache.init_size_descr(STRUCT, sizedescr)
        cache[STRUCT] = sizedescr
        return sizedescr
예제 #3
0
파일: runner.py 프로젝트: Qointum/pypy
 def count_fields_if_immutable(self):
     return heaptracker.count_fields_if_immutable(self.S)
예제 #4
0
 def count_fields_if_immutable(self):
     return heaptracker.count_fields_if_immutable(self.S)