jit/backend/x86/test/test_virtualref.py::TestVRef::()::test_alloc_virtualref_and_then_alloc_structure
self = <rpython.jit.backend.x86.test.test_virtualref.TestVRef object at 0x00000181c40916e0>
def test_alloc_virtualref_and_then_alloc_structure(self):
myjitdriver = JitDriver(greens = [], reds = ['n'])
#
class XY:
pass
class ExCtx:
pass
exctx = ExCtx()
@dont_look_inside
def escapexy(xy):
print 'escapexy:', xy.n
if xy.n % 5 == 0:
vr = exctx.vr
print 'accessing via vr:', vr()
assert vr() is xy
#
def f(n):
while n > 0:
myjitdriver.jit_merge_point(n=n)
xy = XY()
xy.n = n
vr = virtual_ref(xy)
# force the virtualref to be allocated
exctx.vr = vr
# force xy to be allocated
escapexy(xy)
# clean up
exctx.vr = vref_None
virtual_ref_finish(vr, xy)
n -= 1
return 1
#
> res = self.meta_interp(f, [15])
jit\metainterp\test\test_virtualref.py:558:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
jit\metainterp\test\support.py:265: in meta_interp
return ll_meta_interp(*args, **kwds)
jit\metainterp\warmspot.py:89: in ll_meta_interp
return jittify_and_run(interp, graph, args, backendopt=backendopt, **kwds)
jit\metainterp\warmspot.py:127: in jittify_and_run
res = interp.eval_graph(graph, args)
rtyper\llinterp.py:97: in eval_graph
retval = llframe.eval()
rtyper\llinterp.py:295: in eval
nextblock, args = self.eval_block(nextblock)
rtyper\llinterp.py:319: in eval_block
self.eval_operation(op)
rtyper\llinterp.py:422: in eval_operation
retval = ophandler(*vals)
rtyper\llinterp.py:697: in op_direct_call
return self.perform_call(f, FTYPE.ARGS, args)
rtyper\llinterp.py:684: in perform_call
return self.invoke_callable_with_pyexceptions(f, *args)
rtyper\llinterp.py:507: in invoke_callable_with_pyexceptions
self.make_llexception()
rtyper\llinterp.py:484: in make_llexception
evalue = exdata.get_standard_ll_exc_instance_by_class(exc.__class__)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <rpython.rtyper.exceptiondata.ExceptionData object at 0x00000181c3fec138>
exceptionclass = <class 'rpython.translator.tool.pdbplus.NoTTY'>
def get_standard_ll_exc_instance_by_class(self, exceptionclass):
if exceptionclass not in self.standardexceptions:
> raise UnknownException(exceptionclass)
E UnknownException: <class 'rpython.translator.tool.pdbplus.NoTTY'>
rtyper\exceptiondata.py:42: UnknownException
---------- Captured stdout call ----------
> d:\pypy_stuff\buildbot64\slave\rpython-win-x86-64\build\rpython\translator\platform\windows.py(319)_handle_error()
-> raise CompilationError(stdout, stderr)
---------- Captured stderr call ----------
[platform:msg] Updated environment with vsver 160, using x64 True
[rtyper] specializing: 100 / 388 blocks (25%)
[rtyper] specializing: 200 / 445 blocks (44%)
[rtyper] specializing: 300 / 445 blocks (67%)
[rtyper] specializing: 400 / 445 blocks (89%)
[rtyper] -=- specialized 445 blocks -=-
[rtyper] -=- specialized 4 more blocks -=-
[rtyper] -=- specialized 2 more blocks -=-
[rtyper] -=- specialized 7 more blocks -=-
[rtyper] -=- specialized 6 more blocks -=-
[rtyper] -=- specialized 19 more blocks -=-
[rtyper] -=- specialized 12 more blocks -=-
[rtyper] -=- specialized 3 more blocks -=-
[jitcodewriter:info] making JitCodes...
[jitcodewriter:info] There are 1 JitCode instances.
[jitcodewriter:info] There are 4 -live- ops. Size of liveness is 9 bytes
[rtyper] replaced 2 'jit_force_virtual' with <* fn force_virtual_if_necessary>
[jitcodewriter] compute_bitstrings:
[jitcodewriter] 1 effectinfos:
[jitcodewriter] 0 descrs for arrays
[jitcodewriter] 0 descrs for fields
[jitcodewriter] 0 descrs for interiorfields
[jitcodewriter] -> 1 bitstrings, mean length 0.0, max length 0
builder: rpython-win-x86-64 build #441+
test: jit/backend/x86/test/test_virtualref.py::TestVRef::()::test_alloc_virtualref_and_then_alloc_structure