[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