[pypy-svn] r69896 - in pypy/branch/virtual-forcing/pypy/rlib: . test
arigo at codespeak.net
arigo at codespeak.net
Fri Dec 4 15:57:19 CET 2009
Author: arigo
Date: Fri Dec 4 15:57:18 2009
New Revision: 69896
Modified:
pypy/branch/virtual-forcing/pypy/rlib/jit.py
pypy/branch/virtual-forcing/pypy/rlib/test/test__jit_vref.py
Log:
Using this function may help during debugging.
Modified: pypy/branch/virtual-forcing/pypy/rlib/jit.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/rlib/jit.py (original)
+++ pypy/branch/virtual-forcing/pypy/rlib/jit.py Fri Dec 4 15:57:18 2009
@@ -1,7 +1,7 @@
import py
import sys
from pypy.rpython.extregistry import ExtRegistryEntry
-from pypy.rlib.objectmodel import CDefinedIntSymbolic
+from pypy.rlib.objectmodel import CDefinedIntSymbolic, we_are_translated
from pypy.rlib.unroll import unrolling_iterable
def purefunction(func):
@@ -105,10 +105,17 @@
return DirectVRef(x)
virtual_ref.oopspec = 'virtual_ref(x)'
+def virtual_ref_finish(x):
+ if not we_are_translated():
+ x._forced = x._forced or -1
+
class DirectVRef(object):
+ _forced = 0
def __init__(self, x):
self._x = x
def __call__(self):
+ assert self._forced >= 0, "too late to force the virtual_ref!"
+ self._forced = 1
return self._x
def _freeze_(self):
raise Exception("should not see a prebuilt virtual_ref")
Modified: pypy/branch/virtual-forcing/pypy/rlib/test/test__jit_vref.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/rlib/test/test__jit_vref.py (original)
+++ pypy/branch/virtual-forcing/pypy/rlib/test/test__jit_vref.py Fri Dec 4 15:57:18 2009
@@ -1,4 +1,5 @@
-from pypy.rlib.jit import virtual_ref
+import py
+from pypy.rlib.jit import virtual_ref, virtual_ref_finish
from pypy.rlib._jit_vref import SomeVRef
from pypy.annotation import model as annmodel
from pypy.annotation.annrpython import RPythonAnnotator
@@ -22,6 +23,17 @@
vref = virtual_ref(x1)
assert vref() is x1
+def test_finish():
+ vref = virtual_ref(X())
+ virtual_ref_finish(vref)
+ py.test.raises(AssertionError, "vref()")
+ #
+ x1 = X()
+ vref = virtual_ref(x1)
+ assert vref() is x1
+ virtual_ref_finish(vref)
+ assert vref() is x1
+
def test_annotate_1():
def f():
return virtual_ref(X())
More information about the Pypy-commit
mailing list