[pypy-commit] pypy py3.6-wordcode: use _from_code less often (it's still in the apptest support, but I'll ignore that for now)
cfbolz
pypy.commits at gmail.com
Mon May 14 09:43:41 EDT 2018
Author: Carl Friedrich Bolz-Tereick <cfbolz at gmx.de>
Branch: py3.6-wordcode
Changeset: r94581:a890ba3fdb85
Date: 2018-05-14 15:42 +0200
http://bitbucket.org/pypy/pypy/changeset/a890ba3fdb85/
Log: use _from_code less often (it's still in the apptest support, but
I'll ignore that for now)
diff --git a/pypy/interpreter/astcompiler/test/test_compiler.py b/pypy/interpreter/astcompiler/test/test_compiler.py
--- a/pypy/interpreter/astcompiler/test/test_compiler.py
+++ b/pypy/interpreter/astcompiler/test/test_compiler.py
@@ -72,9 +72,8 @@
def check(self, w_dict, evalexpr, expected):
# for now, we compile evalexpr with CPython's compiler but run
# it with our own interpreter to extract the data from w_dict
- co_expr = compile(evalexpr, '<evalexpr>', 'eval')
space = self.space
- pyco_expr = PyCode._from_code(space, co_expr)
+ pyco_expr = space.createcompiler().compile(evalexpr, '<evalexpr>', 'eval')
w_res = pyco_expr.exec_host_bytecode(w_dict, w_dict)
res = space.str_w(space.repr(w_res))
expected_repr = self.get_py3_repr(expected)
diff --git a/pypy/interpreter/test/test_function.py b/pypy/interpreter/test/test_function.py
--- a/pypy/interpreter/test/test_function.py
+++ b/pypy/interpreter/test/test_function.py
@@ -641,11 +641,20 @@
class TestMethod:
- def setup_method(self, method):
- def c(self, bar):
- return bar
- code = PyCode._from_code(self.space, c.__code__)
- self.fn = Function(self.space, code, self.space.newdict())
+ @classmethod
+ def compile(cls, src):
+ assert src.strip().startswith("def ")
+ compiler = cls.space.createcompiler()
+ code = compiler.compile(src, '<hello>', 'exec', 0).co_consts_w[0]
+ return Function(cls.space, code, cls.space.newdict())
+
+ def setup_class(cls):
+ src = """
+def c(self, bar):
+ return bar
+ """
+ cls.fn = cls.compile(src)
+
def test_get(self):
space = self.space
@@ -670,9 +679,7 @@
def test_method_get(self):
space = self.space
# Create some function for this test only
- def m(self): return self
- func = Function(space, PyCode._from_code(self.space, m.__code__),
- space.newdict())
+ func = self.compile("def m(self): return self")
# Some shorthands
obj1 = space.wrap(23)
obj2 = space.wrap(42)
@@ -694,6 +701,11 @@
assert meth3 is func
class TestShortcuts(object):
+ def compile(self, src):
+ assert src.strip().startswith("def ")
+ compiler = self.space.createcompiler()
+ code = compiler.compile(src, '<hello>', 'exec', 0).co_consts_w[0]
+ return Function(self.space, code, self.space.newdict())
def test_call_function(self):
space = self.space
@@ -701,14 +713,15 @@
d = {}
for i in range(10):
args = "(" + ''.join(["a%d," % a for a in range(i)]) + ")"
- exec """
+ src = """
def f%s:
return %s
-""" % (args, args) in d
+""" % (args, args)
+ exec src in d
f = d['f']
res = f(*range(i))
- code = PyCode._from_code(self.space, f.__code__)
- fn = Function(self.space, code, self.space.newdict())
+ fn = self.compile(src)
+ code = fn.code
assert fn.code.fast_natural_arity == i|PyCode.FLATPYCALL
if i < 5:
@@ -727,18 +740,18 @@
def test_flatcall(self):
space = self.space
- def f(a):
- return a
- code = PyCode._from_code(self.space, f.__code__)
- fn = Function(self.space, code, self.space.newdict())
+ src = """
+def f(a):
+ return a"""
+ fn = self.compile(src)
assert fn.code.fast_natural_arity == 1|PyCode.FLATPYCALL
def bomb(*args):
assert False, "shortcutting should have avoided this"
- code.funcrun = bomb
- code.funcrun_obj = bomb
+ fn.code.funcrun = bomb
+ fn.code.funcrun_obj = bomb
w_3 = space.newint(3)
w_res = space.call_function(fn, w_3)
@@ -754,18 +767,19 @@
def test_flatcall_method(self):
space = self.space
- def f(self, a):
- return a
- code = PyCode._from_code(self.space, f.__code__)
- fn = Function(self.space, code, self.space.newdict())
+ src = """
+def f(self, a):
+ return a
+"""
+ fn = self.compile(src)
assert fn.code.fast_natural_arity == 2|PyCode.FLATPYCALL
def bomb(*args):
assert False, "shortcutting should have avoided this"
- code.funcrun = bomb
- code.funcrun_obj = bomb
+ fn.code.funcrun = bomb
+ fn.code.funcrun_obj = bomb
w_3 = space.newint(3)
w_res = space.appexec([fn, w_3], """(f, x):
@@ -782,9 +796,11 @@
def test_flatcall_default_arg(self):
space = self.space
- def f(a, b):
- return a+b
- code = PyCode._from_code(self.space, f.__code__)
+ src = """
+def f(a, b):
+ return a+b
+"""
+ code = self.compile(src).code
fn = Function(self.space, code, self.space.newdict(),
defs_w=[space.newint(1)])
@@ -811,9 +827,11 @@
def test_flatcall_default_arg_method(self):
space = self.space
- def f(self, a, b):
- return a+b
- code = PyCode._from_code(self.space, f.__code__)
+ src = """
+def f(self, a, b):
+ return a+b
+ """
+ code = self.compile(src).code
fn = Function(self.space, code, self.space.newdict(),
defs_w=[space.newint(1)])
diff --git a/pypy/module/imp/test/test_import.py b/pypy/module/imp/test/test_import.py
--- a/pypy/module/imp/test/test_import.py
+++ b/pypy/module/imp/test/test_import.py
@@ -788,7 +788,7 @@
f.write(_getlong(mtime))
if co:
# marshal the code object with the PyPy marshal impl
- pyco = PyCode._from_code(space, co)
+ pyco = space.createcompiler().compile(co, '?', 'exec', 0)
w_marshal = space.getbuiltinmodule('marshal')
w_marshaled_code = space.call_method(w_marshal, 'dumps', pyco)
marshaled_code = space.bytes_w(w_marshaled_code)
@@ -809,7 +809,7 @@
def test_read_compiled_module(self):
space = self.space
mtime = 12345
- co = compile('x = 42', '?', 'exec')
+ co = 'x = 42'
cpathname = _testfile(space, importing.get_pyc_magic(space), mtime, co)
stream = streamio.open_file_as_stream(cpathname, "rb")
try:
@@ -829,7 +829,7 @@
def test_load_compiled_module(self):
space = self.space
mtime = 12345
- co = compile('x = 42', '?', 'exec')
+ co = 'x = 42'
cpathname = _testfile(space, importing.get_pyc_magic(space), mtime, co)
w_modulename = space.wrap('somemodule')
stream = streamio.open_file_as_stream(cpathname, "rb")
@@ -854,7 +854,7 @@
def test_load_compiled_module_nopathname(self):
space = self.space
mtime = 12345
- co = compile('x = 42', '?', 'exec')
+ co = 'x = 42'
cpathname = _testfile(space, importing.get_pyc_magic(space), mtime, co)
w_modulename = space.wrap('somemodule')
stream = streamio.open_file_as_stream(cpathname, "rb")
@@ -931,7 +931,7 @@
continue
pathname = "whatever"
mtime = 12345
- co = compile('x = 42', '?', 'exec')
+ co = 'x = 42'
cpathname = _testfile(space1, importing.get_pyc_magic(space1),
mtime, co)
w_modulename = space2.wrap('somemodule')
More information about the pypy-commit
mailing list