Author: Anton Gulenko <[email protected]>
Branch: storage
Changeset: r773:a9d2b6743c2c
Date: 2014-04-03 13:38 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/a9d2b6743c2c/
Log: Extracted util-function for tests.
diff --git a/spyvm/test/jit.py b/spyvm/test/jit.py
--- a/spyvm/test/jit.py
+++ b/spyvm/test/jit.py
@@ -13,37 +13,16 @@
from rpython.jit.metainterp.test.test_ajit import LLJitMixin
-from .util import bootstrap_class
+from .util import import_bytecodes
from spyvm import model, interpreter, primitives, shadow
from spyvm import objspace, squeakimage
from spyvm.tool.analyseimage import create_squeakimage, create_testimage
from rpython.rlib.streamio import open_file_as_stream
+import_bytecodes(__name__)
+
space = objspace.ObjSpace()
-# expose the bytecode's values as global constants.
-# Bytecodes that have a whole range are exposed as global functions:
-# call them with an argument 'n' to get the bytecode number 'base + n'.
-# XXX hackish
-def setup():
- def make_getter(entry):
- def get_opcode_chr(n):
- opcode = entry[0] + n
- assert entry[0] <= opcode <= entry[1]
- return chr(opcode)
- return get_opcode_chr
- for entry in interpreter.BYTECODE_RANGES:
- name = entry[-1]
- if len(entry) == 2: # no range
- globals()[name] = chr(entry[0])
- else:
- globals()[name] = make_getter(entry)
-setup()
-
-#
-# Tests
-#
-
sys.setrecursionlimit(5000)
class TestLLtype(LLJitMixin):
diff --git a/spyvm/test/test_interpreter.py b/spyvm/test/test_interpreter.py
--- a/spyvm/test/test_interpreter.py
+++ b/spyvm/test/test_interpreter.py
@@ -1,9 +1,11 @@
import py, operator, sys
from spyvm import model, interpreter, primitives, shadow, objspace, wrapper,
constants
-from .util import create_space_interp, copy_to_module, cleanup_module
+from .util import create_space_interp, copy_to_module, cleanup_module,
import_bytecodes
from spyvm.wrapper import PointWrapper
from spyvm.conftest import option
+import_bytecodes(__name__)
+
def setup_module():
space, interp = create_space_interp(bootstrap = True)
w = space.w
@@ -36,25 +38,6 @@
exp = w(exp)
assert list[i].is_same_object(exp)
-# expose the bytecode's values as global constants.
-# Bytecodes that have a whole range are exposed as global functions:
-# call them with an argument 'n' to get the bytecode number 'base + n'.
-# XXX hackish
-def setup():
- def make_getter(entry):
- def get_opcode_chr(n):
- opcode = entry[0] + n
- assert entry[0] <= opcode <= entry[1]
- return chr(opcode)
- return get_opcode_chr
- for entry in interpreter.BYTECODE_RANGES:
- name = entry[-1]
- if len(entry) == 2: # no range
- globals()[name] = chr(entry[0])
- else:
- globals()[name] = make_getter(entry)
-setup()
-
def run_with_faked_primitive_methods(methods, func, active_context=None):
# Install faked compiled methods that just invoke the primitive:
diff --git a/spyvm/test/util.py b/spyvm/test/util.py
--- a/spyvm/test/util.py
+++ b/spyvm/test/util.py
@@ -54,6 +54,24 @@
del mod._copied_objects_
import gc; gc.collect()
+def import_bytecodes(module_name):
+ # expose the bytecode's values as global constants.
+ # Bytecodes that have a whole range are exposed as global functions:
+ # call them with an argument 'n' to get the bytecode number 'base + n'.
+ mod = sys.modules[module_name]
+ def make_getter(entry):
+ def get_opcode_chr(n):
+ opcode = entry[0] + n
+ assert entry[0] <= opcode <= entry[1]
+ return chr(opcode)
+ setattr(mod, name, get_opcode_chr)
+ for entry in interpreter.BYTECODE_RANGES:
+ name = entry[-1]
+ if len(entry) == 2: # no range
+ setattr(mod, name, chr(entry[0]))
+ else:
+ make_getter(entry)
+
class BootstrappedObjSpace(objspace.ObjSpace):
def bootstrap(self):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit