[pypy-commit] pypy optresult-unroll: Finish the test; it passes on x86
arigo
noreply at buildbot.pypy.org
Fri Sep 4 13:20:36 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch: optresult-unroll
Changeset: r79413:c04ede48ab19
Date: 2015-09-04 12:30 +0200
http://bitbucket.org/pypy/pypy/changeset/c04ede48ab19/
Log: Finish the test; it passes on x86
diff --git a/rpython/jit/backend/llsupport/test/test_zrpy_gc_direct.py b/rpython/jit/backend/llsupport/test/test_zrpy_gc_direct.py
--- a/rpython/jit/backend/llsupport/test/test_zrpy_gc_direct.py
+++ b/rpython/jit/backend/llsupport/test/test_zrpy_gc_direct.py
@@ -4,10 +4,11 @@
from rpython.jit.metainterp.history import BasicFinalDescr, BasicFailDescr
from rpython.jit.metainterp.gc import get_description
from rpython.annotator.listdef import s_list_of_strings
-from rpython.rtyper.lltypesystem import lltype, llmemory
+from rpython.rtyper.lltypesystem import lltype, llmemory, rffi
from rpython.rtyper.rclass import getclassrepr
from rpython.translator.unsimplify import call_initial_function
from rpython.translator.translator import TranslationContext
+from rpython.translator.c import genc
def test_guard_class():
@@ -39,13 +40,16 @@
cpu = CPU(rtyper, NoStats(),
translate_support_code=True,
gcdescr=get_description(t.config))
+ execute_token = cpu.make_execute_token(llmemory.GCREF)
+ finaldescr = BasicFinalDescr()
+ faildescr = BasicFailDescr()
loop = parse("""
[p0]
guard_class(p0, ConstInt(vtable_B), descr=faildescr) []
finish(descr=finaldescr)
- """, namespace={'finaldescr': BasicFinalDescr(),
- 'faildescr': BasicFailDescr(),
+ """, namespace={'finaldescr': finaldescr,
+ 'faildescr': faildescr,
'vtable_B': vtable_B})
def g():
@@ -53,8 +57,22 @@
token = JitCellToken()
cpu.compile_loop(loop.inputargs, loop.operations, token)
- # xxx
+ for x in [A(),B(), C()]:
+ p0 = rffi.cast(llmemory.GCREF, x)
+ frame = execute_token(token, p0)
+ descr = cpu.get_latest_descr(frame)
+ if descr is finaldescr:
+ print 'match'
+ elif descr is faildescr:
+ print 'fail'
+ else:
+ print '???'
call_initial_function(t, g)
-#...turn to C here
+ cbuilder = genc.CStandaloneBuilder(t, main, t.config)
+ cbuilder.generate_source(defines=cbuilder.DEBUG_DEFINES)
+ cbuilder.compile()
+
+ data = cbuilder.cmdexec('')
+ assert data == 'fail\nmatch\nfail\n'
More information about the pypy-commit
mailing list