[pypy-svn] r25454 - in pypy/dist/pypy/translator/c: . test

mwh at codespeak.net mwh at codespeak.net
Thu Apr 6 17:41:02 CEST 2006


Author: mwh
Date: Thu Apr  6 17:41:01 2006
New Revision: 25454

Modified:
   pypy/dist/pypy/translator/c/stacklesstransform.py
   pypy/dist/pypy/translator/c/test/test_stacklesstransform.py
Log:
add a header to the saved frame states.


Modified: pypy/dist/pypy/translator/c/stacklesstransform.py
==============================================================================
--- pypy/dist/pypy/translator/c/stacklesstransform.py	(original)
+++ pypy/dist/pypy/translator/c/stacklesstransform.py	Thu Apr  6 17:41:01 2006
@@ -25,6 +25,10 @@
     else:
         raise Exception("don't know about %r" % (T,))
 
+state_header = lltype.Struct('state_header',
+                             ('f_back', lltype.Ptr(lltype.ForwardReference())),
+                             ('signed', lltype.Signed))
+state_header.f_back.TO.become(state_header)
 
 class StacklessTransfomer(object):
     def __init__(self, translator):
@@ -47,7 +51,9 @@
             for i, k in enumerate(key):
                 for j in range(k):
                     fields.append(('state_%s_%d'%(STORAGE_FIELDS[i], j), STORAGE_TYPES[i]))
-            T = lltype.Struct("state_%d_%d_%d_%d"%tuple(key), *fields)
+            T = lltype.Struct("state_%d_%d_%d_%d"%tuple(key),
+                              ('header', state_header),
+                              *fields)
             self.frametypes[key] = T
             return T
             

Modified: pypy/dist/pypy/translator/c/test/test_stacklesstransform.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_stacklesstransform.py	(original)
+++ pypy/dist/pypy/translator/c/test/test_stacklesstransform.py	Thu Apr  6 17:41:01 2006
@@ -14,7 +14,8 @@
     ft4vars = st.frame_type_for_vars
     
     s1 = ft4vars([signed])
-    assert len(s1._flds) == 1
+    assert 'header' in s1._flds
+    assert len(s1._flds) == 2
 
     s2_1 = ft4vars([signed, ptr])
     s2_2 = ft4vars([ptr, signed])



More information about the Pypy-commit mailing list