def compile(fn, argtypes, view=False, gcpolicy="ref", backendopt=True, annotatorpolicy=None): t = Translation(fn, argtypes, gc=gcpolicy, backend="c", policy=annotatorpolicy) if not backendopt: t.disable(["backendopt_lltype"]) t.annotate() # XXX fish t.driver.config.translation.countmallocs = True compiled_fn = t.compile_c() if getattr(py.test.config.option, 'view', False): t.view() malloc_counters = t.driver.cbuilder.get_malloc_counters() def checking_fn(*args, **kwds): if 'expected_extra_mallocs' in kwds: expected_extra_mallocs = kwds.pop('expected_extra_mallocs') else: expected_extra_mallocs = 0 res = compiled_fn(*args, **kwds) mallocs, frees = malloc_counters() if isinstance(expected_extra_mallocs, int): assert mallocs - frees == expected_extra_mallocs else: assert mallocs - frees in expected_extra_mallocs return res return checking_fn
def test_translate_pypackrat_regex(): from pypy.rlib.parsing.pypackrat import PackratParser class parser(PackratParser): """ num: `([1-9][0-9]*)|0`; """ print parser._code def parse(s): p = parser(s) return p.num() res = parse("1234") assert res == '1234' t = Translation(parse) t.annotate([str]) t.rtype() t.backendopt() if option.view: t.view() func = t.compile_c() res = func("12345") assert res == '12345' res = func("0") assert res == '0'
def compile(fn, argtypes, view=False, gcpolicy="ref", backendopt=True, annotatorpolicy=None): if argtypes is not None and "__pypy__" in sys.builtin_module_names: py.test.skip("requires building cpython extension modules") t = Translation(fn, argtypes, gc=gcpolicy, backend="c", policy=annotatorpolicy) if not backendopt: t.disable(["backendopt_lltype"]) t.annotate() # XXX fish t.driver.config.translation.countmallocs = True compiled_fn = t.compile_c() try: if py.test.config.option.view: t.view() except AttributeError: pass malloc_counters = t.driver.cbuilder.get_malloc_counters() def checking_fn(*args, **kwds): if 'expected_extra_mallocs' in kwds: expected_extra_mallocs = kwds.pop('expected_extra_mallocs') else: expected_extra_mallocs = 0 res = compiled_fn(*args, **kwds) mallocs, frees = malloc_counters() if isinstance(expected_extra_mallocs, int): assert mallocs - frees == expected_extra_mallocs else: assert mallocs - frees in expected_extra_mallocs return res return checking_fn
def compile(fn, argtypes, view=False, gcpolicy="ref", backendopt=True, annotatorpolicy=None): t = Translation(fn, argtypes, gc=gcpolicy, backend="c", policy=annotatorpolicy) if not backendopt: t.disable(["backendopt_lltype"]) t.annotate() # XXX fish t.driver.config.translation.countmallocs = True compiled_fn = t.compile_c() if getattr(py.test.config.option, 'view', False): t.view() malloc_counters = t.driver.cbuilder.get_malloc_counters() def checking_fn(*args, **kwds): if 'expected_extra_mallocs' in kwds: expected_extra_mallocs = kwds.pop('expected_extra_mallocs') else: expected_extra_mallocs = 0 res = compiled_fn(*args, **kwds) mallocs, frees = malloc_counters() if isinstance(expected_extra_mallocs, int): assert mallocs - frees == expected_extra_mallocs else: assert mallocs - frees in expected_extra_mallocs return res return checking_fn
def build_adi(function, types): t = Translation(function) t.rtype(types) if conftest.option.view: t.view() adi = AbstractDataFlowInterpreter(t.context) graph = graphof(t.context, function) adi.schedule_function(graph) adi.complete() return t.context, adi, graph
def build_adi(function, types): t = Translation(function) t.rtype(types) if conftest.option.view: t.view() adi = AbstractDataFlowInterpreter(t.context) graph = graphof(t.context, function) adi.schedule_function(graph) adi.complete() return t.context, adi, graph
def test_tagged_boehm(): t = Translation(entry_point, standalone=True, gc='boehm') try: exename = t.compile_c() finally: if conftest.option.view: t.view() g = os.popen(exename, 'r') data = g.read() g.close() assert data.rstrip().endswith('ALL OK')
def test_tagged_boehm(): t = Translation(entry_point, standalone=True, gc='boehm', taggedpointers=True) try: exename = str(t.compile_c()) finally: if conftest.option.view: t.view() g = os.popen(exename, 'r') data = g.read() g.close() assert data.rstrip().endswith('ALL OK')
def test_name(): def f(): return 3 f.c_name = 'pypy_xyz_f' t = Translation(f, [], backend="c") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert 'pypy_xyz_f' in t.driver.cbuilder.c_source_filename.read()
def test_tagged_boehm(): py.test.skip("broken as test need rffi") t = Translation(entry_point, standalone=True, gc='boehm') try: exename = t.compile_llvm() finally: if conftest.option.view: t.view() g = os.popen(exename, 'r') data = g.read() g.close() assert data.rstrip().endswith('ALL OK')
def test_name(): def f(): return 3 f.c_name = 'pypy_xyz_f' t = Translation(f, [], backend="c") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert 'pypy_xyz_f' in t.driver.cbuilder.c_source_filename.read()
def compile_rex(rex): try: from pypy.translator.interactive import Translation except ImportError: py.test.skip("pypy not found") fda = rex.make_automaton().make_deterministic() fda.optimize() fn = fda.make_code() t = Translation(fn) t.backendopt([str], backend="c") if py.test.config.option.view: t.view() return t.compile_c()
def test_tagged_boehm(): runtest.llvm_test() runtest.gcc3_test() t = Translation(entry_point, standalone=True, gc='boehm') try: exename = t.compile_llvm() finally: if conftest.option.view: t.view() g = os.popen(exename, 'r') data = g.read() g.close() assert data.rstrip().endswith('ALL OK')
def compile_rex(rex): try: from pypy.translator.interactive import Translation except ImportError: py.test.skip("pypy not found") fda = rex.make_automaton().make_deterministic() fda.optimize() fn = fda.make_code() t = Translation(fn) t.backendopt([str], backend="c") if py.test.config.option.view: t.view() return t.compile_c()
def test_exportstruct(): from pypy.rlib.exports import export_struct def f(): return 42 FOO = Struct("FOO", ("field1", Signed)) foo = malloc(FOO, flavor="raw") foo.field1 = 43 export_struct("BarStruct", foo._obj) t = Translation(f, [], backend="c") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert ' BarStruct ' in t.driver.cbuilder.c_source_filename.read() free(foo, flavor="raw")
def test_entrypoints(): def f(): return 3 key = "test_entrypoints42" @entrypoint(key, [int], "foobar") def g(x): return x + 42 t = Translation(f, [], backend="c", secondaryentrypoints="test_entrypoints42") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert 'foobar' in t.driver.cbuilder.c_source_filename.read()
def test_computed_int_symbolic(): too_early = True def compute_fn(): assert not too_early return 7 k = ComputedIntSymbolic(compute_fn) def f(): return k*6 t = Translation(f) t.rtype() if conftest.option.view: t.view() too_early = False fn = t.compile_c() res = fn() assert res == 42
def test_computed_int_symbolic(): too_early = True def compute_fn(): assert not too_early return 7 k = ComputedIntSymbolic(compute_fn) def f(): return k*6 t = Translation(f) t.rtype() if conftest.option.view: t.view() too_early = False fn = t.compile_c() res = fn() assert res == 42
def test_exportstruct(): from pypy.rlib.exports import export_struct def f(): return 42 FOO = Struct("FOO", ("field1", Signed)) foo = malloc(FOO, flavor="raw") foo.field1 = 43 export_struct("BarStruct", foo._obj) t = Translation(f, [], backend="c") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert ' BarStruct ' in t.driver.cbuilder.c_source_filename.read() free(foo, flavor="raw")
def test_entrypoints(): def f(): return 3 key = "test_entrypoints42" @entrypoint(key, [int], "foobar") def g(x): return x + 42 t = Translation(f, [], backend="c", secondaryentrypoints="test_entrypoints42") t.annotate() compiled_fn = t.compile_c() if py.test.config.option.view: t.view() assert 'foobar' in t.driver.cbuilder.c_source_filename.read()
def compile(fn, argtypes, view=False, gcpolicy="ref", backendopt=True, annotatorpolicy=None): if argtypes is not None and "__pypy__" in sys.builtin_module_names: py.test.skip("requires building cpython extension modules") t = Translation(fn, argtypes, gc=gcpolicy, backend="c", policy=annotatorpolicy) if not backendopt: t.disable(["backendopt_lltype"]) t.annotate() # XXX fish t.driver.config.translation.countmallocs = True compiled_fn = t.compile_c() try: if py.test.config.option.view: t.view() except AttributeError: pass malloc_counters = t.driver.cbuilder.get_malloc_counters() def checking_fn(*args, **kwds): if 'expected_extra_mallocs' in kwds: expected_extra_mallocs = kwds.pop('expected_extra_mallocs') else: expected_extra_mallocs = 0 res = compiled_fn(*args, **kwds) mallocs, frees = malloc_counters() if isinstance(expected_extra_mallocs, int): assert mallocs - frees == expected_extra_mallocs else: assert mallocs - frees in expected_extra_mallocs return res return checking_fn
def test_translate_pypackrat(): from pypy.rlib.parsing.pypackrat import PackratParser class parser(PackratParser): """ expr: additive; additive: a = additive '-' b = multitive return {'(%s - %s)' % (a, b)} | multitive; multitive: a = multitive '*' b = simple return {'(%s * %s)' % (a, b)} | simple; simple: ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'); """ print parser._code def parse(s): p = parser(s) return p.expr() res = parse("5-5-5") assert res == '((5 - 5) - 5)' t = Translation(parse) t.annotate([str]) t.rtype() t.backendopt() if option.view: t.view() func = t.compile_c() res = func("5-5-5") assert res == '((5 - 5) - 5)'
def test_translate_pypackrat(): from pypy.rlib.parsing.pypackrat import PackratParser class parser(PackratParser): """ expr: additive; additive: a = additive '-' b = multitive return {'(%s - %s)' % (a, b)} | multitive; multitive: a = multitive '*' b = simple return {'(%s * %s)' % (a, b)} | simple; simple: ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'); """ print parser._code def parse(s): p = parser(s) return p.expr() res = parse("5-5-5") assert res == '((5 - 5) - 5)' t = Translation(parse) t.annotate([str]) t.rtype() t.backendopt() if option.view: t.view() func = t.compile_c() res = func("5-5-5") assert res == '((5 - 5) - 5)'
def test_translate_pypackrat_regex(): from pypy.rlib.parsing.pypackrat import PackratParser class parser(PackratParser): """ num: `([1-9][0-9]*)|0`; """ print parser._code def parse(s): p = parser(s) return p.num() res = parse("1234") assert res == '1234' t = Translation(parse) t.annotate([str]) t.rtype() t.backendopt() if option.view: t.view() func = t.compile_c() res = func("12345") assert res == '12345' res = func("0") assert res == '0'
def compile(fn, argtypes, view=False, gcpolicy="ref", backendopt=True, annotatorpolicy=None): t = Translation(fn, argtypes, gc=gcpolicy, backend="c", policy=annotatorpolicy) if not backendopt: t.disable(["backendopt_lltype"]) t.annotate() # XXX fish t.driver.config.translation.countmallocs = True compiled_fn = t.compile_c() if conftest.option.view: t.view() # XXX fish fish fish some more module = t.driver.cbuilder.c_ext_module def checking_fn(*args, **kwds): if 'expected_extra_mallocs' in kwds: expected_extra_mallocs = kwds.pop('expected_extra_mallocs') else: expected_extra_mallocs = 0 res = compiled_fn(*args, **kwds) mallocs, frees = module.malloc_counters() assert mallocs - frees == expected_extra_mallocs return res return checking_fn
def getcompiled(f, args): t = Translation(f) fn = t.compile_c(args) if conftest.option.view: t.view() return fn, t
def getcompiled(f, args): t = Translation(f) fn = t.compile_c(args) if conftest.option.view: t.view() return fn, t