def build_cpu(self, CPUClass, translate_support_code=False, no_stats=False, supports_floats=True, supports_longlong=True, supports_singlefloats=True, **kwds): assert CPUClass is not None self.opt = history.Options(**kwds) if no_stats: stats = history.NoStats() else: stats = history.Stats() self.stats = stats if translate_support_code: self.annhelper = MixLevelHelperAnnotator(self.translator.rtyper) cpu = CPUClass(self.translator.rtyper, self.stats, self.opt, translate_support_code, gcdescr=self.gcdescr) if not supports_floats: cpu.supports_floats = False if not supports_longlong: cpu.supports_longlong = False if not supports_singlefloats: cpu.supports_singlefloats = False self.cpu = cpu
def _run_with_pyjitpl(testself, args): cw = testself.cw opt = history.Options(listops=True) metainterp_sd = pyjitpl.MetaInterpStaticData(cw.cpu, opt) metainterp_sd.finish_setup(cw) [jitdriver_sd] = metainterp_sd.jitdrivers_sd metainterp = pyjitpl.MetaInterp(metainterp_sd, jitdriver_sd) testself.metainterp = metainterp try: metainterp.compile_and_run_once(jitdriver_sd, *args) except (jitexc.DoneWithThisFrameInt, jitexc.DoneWithThisFrameRef, jitexc.DoneWithThisFrameFloat) as e: return e.result else: raise Exception("FAILED")