class MultipleFrozenPBCRepr(AbstractMultipleFrozenPBCRepr): """Representation selected for multiple non-callable pre-built constants.""" def __init__(self, rtyper, access_set): self.rtyper = rtyper self.access_set = access_set self.pbc_type = ForwardReference() self.lowleveltype = Ptr(self.pbc_type) self.pbc_cache = {} def _setup_repr(self): llfields = self._setup_repr_fields() kwds = {'hints': {'immutable': True}} self.pbc_type.become(Struct('pbc', *llfields, **kwds)) def create_instance(self): return malloc(self.pbc_type, immortal=True) def null_instance(self): return nullptr(self.pbc_type) def getfield(self, vpbc, attr, llops): mangled_name, r_value = self.fieldmap[attr] cmangledname = inputconst(Void, mangled_name) return llops.genop('getfield', [vpbc, cmangledname], resulttype = r_value)
class MultipleFrozenPBCRepr(AbstractMultipleFrozenPBCRepr): """Representation selected for multiple non-callable pre-built constants.""" def __init__(self, rtyper, access_set): self.rtyper = rtyper self.access_set = access_set self.pbc_type = ForwardReference() self.lowleveltype = Ptr(self.pbc_type) self.pbc_cache = {} def _setup_repr(self): llfields = self._setup_repr_fields() kwds = {'hints': {'immutable': True}} self.pbc_type.become(Struct('pbc', *llfields, **kwds)) def create_instance(self): return malloc(self.pbc_type, immortal=True) def null_instance(self): return nullptr(self.pbc_type) def getfield(self, vpbc, attr, llops): mangled_name, r_value = self.fieldmap[attr] cmangledname = inputconst(Void, mangled_name) return llops.genop('getfield', [vpbc, cmangledname], resulttype=r_value)