[pypy-commit] pypy jit-targets: Fixes for metainterp/test/test_ztranslation. Unsure if it's really

arigo noreply at buildbot.pypy.org
Sat Dec 10 17:18:14 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: jit-targets
Changeset: r50357:195866ee2672
Date: 2011-12-10 17:17 +0100
http://bitbucket.org/pypy/pypy/changeset/195866ee2672/

Log:	Fixes for metainterp/test/test_ztranslation. Unsure if it's really
	worth the burden to maintain this mess just for this test...

diff --git a/pypy/jit/backend/llgraph/llimpl.py b/pypy/jit/backend/llgraph/llimpl.py
--- a/pypy/jit/backend/llgraph/llimpl.py
+++ b/pypy/jit/backend/llgraph/llimpl.py
@@ -49,6 +49,11 @@
         value._the_opaque_pointer = op
         return op
 
+def _normalize(value):
+    if isinstance(value, lltype._ptr):
+        value = lltype.top_container(value._obj)
+    return value
+
 def from_opaque_string(s):
     if isinstance(s, str):
         return s
@@ -348,13 +353,13 @@
     op = loop.operations[-1]
     op.descr = weakref.ref(descr)
 
+TARGET_TOKENS = weakref.WeakKeyDictionary()
+
 def compile_add_target_token(loop, descr):
-    compiled_version = loop
     loop = _from_opaque(loop)
     op = loop.operations[-1]
-    descr.compiled_version = compiled_version
-    descr.target_opindex = len(loop.operations)
-    descr.target_arguments = op.args
+    descrobj = _normalize(descr)
+    TARGET_TOKENS[descrobj] = loop, len(loop.operations), op.args
 
 def compile_add_var(loop, intvar):
     loop = _from_opaque(loop)
@@ -392,18 +397,9 @@
 
 def compile_add_jump_target(loop, targettoken):
     loop = _from_opaque(loop)
-    if isinstance(targettoken, history.JitCellToken):
-        assert False
-        loop_target = _from_opaque(targettoken.compiled_loop_token.compiled_version)
-        target_opindex = 0
-        target_inputargs = loop_target.inputargs
-    elif isinstance(targettoken, history.TargetToken):
-        loop_target = _from_opaque(targettoken.compiled_version)
-        target_opindex = targettoken.target_opindex
-        target_inputargs = targettoken.target_arguments
-    else:
-        assert False
-
+    descrobj = _normalize(targettoken)
+    loop_target, target_opindex, target_inputargs = TARGET_TOKENS[descrobj]
+    #
     op = loop.operations[-1]
     op.jump_target = loop_target
     op.jump_target_opindex = target_opindex
@@ -1823,6 +1819,7 @@
 setannotation(compile_add, annmodel.s_None)
 setannotation(compile_add_descr, annmodel.s_None)
 setannotation(compile_add_descr_arg, annmodel.s_None)
+setannotation(compile_add_target_token, annmodel.s_None)
 setannotation(compile_add_var, annmodel.s_None)
 setannotation(compile_add_int_const, annmodel.s_None)
 setannotation(compile_add_ref_const, annmodel.s_None)


More information about the pypy-commit mailing list