def consider_constant(self, TYPE, value): if value is not lltype.top_container(value): return if isinstance(TYPE, (lltype.GcStruct, lltype.GcArray)): p = value._as_ptr() if not self.gcheaderbuilder.get_header(p): hdr = self.gcheaderbuilder.new_header(p) hdr.refcount = sys.maxint // 2 hdr.hash = lltype.identityhash_nocache(p)
def gcheader_initdata(self, obj): hdr = lltype.malloc(self.HDR, immortal=True) hdr.hash = lltype.identityhash_nocache(obj._as_ptr()) return hdr._obj
def common_gcheader_initdata(self, defnode): if defnode.db.gctransformer is not None: hdr = lltype.malloc(defnode.db.gctransformer.HDR, immortal=True) hdr.hash = lltype.identityhash_nocache(defnode.obj._as_ptr()) return hdr._obj return None