[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