Example #1
0
    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()
Example #2
0
    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()
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
        class FakeMetaInterpSd:
            cpu = AbstractCPU()
            cpu.ts = self.ts
            jitdrivers_sd = [FakeJitDriver()]

            def get_name_from_address(self, addr):
                return 'Name'
Example #6
0
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
Example #7
0
        class FakeMetaInterpSd:
            cpu = AbstractCPU()
            cpu.ts = self.ts

            def get_name_from_address(self, addr):
                return 'Name'