[pypy-svn] r15828 - pypy/dist/pypy/rpython/memory/test
cfbolz at codespeak.net
cfbolz at codespeak.net
Tue Aug 9 17:00:09 CEST 2005
Author: cfbolz
Date: Tue Aug 9 17:00:08 2005
New Revision: 15828
Modified:
pypy/dist/pypy/rpython/memory/test/test_llinterpsim.py
Log:
unify interpret and interpret_raises
Modified: pypy/dist/pypy/rpython/memory/test/test_llinterpsim.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/test/test_llinterpsim.py (original)
+++ pypy/dist/pypy/rpython/memory/test/test_llinterpsim.py Tue Aug 9 17:00:08 2005
@@ -39,7 +39,8 @@
_lastinterpreted = []
_tcache = {}
-def interpret(func, values, view=False, viewbefore=False, policy=None, someobjects=False):
+def get_interpreter(func, values, view=False, viewbefore=False, policy=None,
+ someobjects=False):
key = (func,) + tuple([typeOf(x) for x in values])+ (someobjects,)
try:
(t, interp) = _tcache[key]
@@ -64,33 +65,17 @@
del _tcache[_lastinterpreted.pop(0)]
if view:
t.view()
+ return interp
+
+def interpret(func, values, view=False, viewbefore=False, policy=None,
+ someobjects=False):
+ interp = get_interpreter(func, values, view, viewbefore, policy,
+ someobjects)
return interp.eval_function(func, values)
def interpret_raises(exc, func, values, view=False, viewbefore=False, policy=None, someobjects=False):
- key = (func,) + tuple([typeOf(x) for x in values])+ (someobjects,)
- try:
- (t, interp) = _tcache[key]
- except KeyError:
- def annotation(x):
- T = typeOf(x)
- if T == Ptr(PyObject) and someobjects:
- return object
- elif T == Ptr(rstr.STR):
- return str
- else:
- return lltype_to_annotation(T)
-
- t, typer = gengraph(func, [annotation(x)
- for x in values], viewbefore, policy)
- interp = LLInterpreter(t.flowgraphs, typer, gclltype,
- gclltype.prepare_graphs)
- _tcache[key] = (t, interp)
- # keep the cache small
- _lastinterpreted.append(key)
- if len(_lastinterpreted) >= 4:
- del _tcache[_lastinterpreted.pop(0)]
- if view:
- t.view()
+ interp = get_interpreter(func, values, view, viewbefore, policy,
+ someobjects)
info = py.test.raises(LLException, "interp.eval_function(func, values)")
assert find_exception(info.value, interp) is exc, "wrong exception type"
More information about the Pypy-commit
mailing list