def __init__(self, rtyper, stats, opts, translate_support_code=False, gcdescr=None): assert type(opts) is not bool self.opts = opts from pypy.jit.backend.llsupport.gc import get_ll_description AbstractCPU.__init__(self) self.rtyper = rtyper self.stats = stats self.translate_support_code = translate_support_code if translate_support_code: translator = rtyper.annotator.translator else: translator = None self.gc_ll_descr = get_ll_description(gcdescr, translator, rtyper) if translator and translator.config.translation.gcremovetypeptr: self.vtable_offset = None else: self.vtable_offset, _ = symbolic.get_field_token(rclass.OBJECT, 'typeptr', translate_support_code) self._setup_prebuilt_error('ovf', OverflowError) self._setup_prebuilt_error('zer', ZeroDivisionError) if translate_support_code: self._setup_exception_handling_translated() else: self._setup_exception_handling_untranslated() self.saved_exc_value = lltype.nullptr(llmemory.GCREF.TO) self.asmmemmgr = AsmMemoryManager() self.setup() if translate_support_code: self._setup_on_leave_jitted_translated() else: self._setup_on_leave_jitted_untranslated()
def free_loop_and_bridges(self, compiled_loop_token): AbstractCPU.free_loop_and_bridges(self, compiled_loop_token) blocks = compiled_loop_token.asmmemmgr_blocks if blocks is not None: compiled_loop_token.asmmemmgr_blocks = None for rawstart, rawstop in blocks: self.gc_ll_descr.freeing_block(rawstart, rawstop) self.asmmemmgr.free(rawstart, rawstop)
class FakeMetaInterpSd: cpu = AbstractCPU() cpu.ts = self.ts jitdrivers_sd = [FakeJitDriver()] def get_name_from_address(self, addr): return 'Name'
def test_faildescr_numbering(): cpu = AbstractCPU() fail_descr1 = AbstractFailDescr() fail_descr2 = AbstractFailDescr() n1 = cpu.get_fail_descr_number(fail_descr1) n2 = cpu.get_fail_descr_number(fail_descr2) assert n1 != n2 fail_descr = cpu.get_fail_descr_from_number(n1) assert fail_descr is fail_descr1 fail_descr = cpu.get_fail_descr_from_number(n2) assert fail_descr is fail_descr2 # provides interning on its own n1_1 = cpu.get_fail_descr_number(fail_descr1) assert n1_1 == n1
class FakeMetaInterpSd: cpu = AbstractCPU() cpu.ts = self.ts def get_name_from_address(self, addr): return 'Name'