[pypy-svn] r29743 - pypy/dist/pypy/translator/stackless

pedronis at codespeak.net pedronis at codespeak.net
Fri Jul 7 16:08:07 CEST 2006


Author: pedronis
Date: Fri Jul  7 16:08:05 2006
New Revision: 29743

Modified:
   pypy/dist/pypy/translator/stackless/code.py
   pypy/dist/pypy/translator/stackless/frame.py
Log:
(afayolle, david, pedronis)

changes to make the stackless code possibly work on 64 bits, check-in to test on such a machine



Modified: pypy/dist/pypy/translator/stackless/code.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/code.py	(original)
+++ pypy/dist/pypy/translator/stackless/code.py	Fri Jul  7 16:08:05 2006
@@ -2,7 +2,7 @@
 from pypy.rpython import rarithmetic
 from pypy.rpython import extfunctable
 from pypy.translator.stackless import frame
-from pypy.translator.stackless.frame import STATE_HEADER, SAVED_REFERENCE, STORAGE_FIELDS
+from pypy.translator.stackless.frame import STATE_HEADER, SAVED_REFERENCE, STORAGE_TYPES_AND_FIELDS
 
 EMPTY_STATE = frame.make_state_header_type('empty_state')
 
@@ -280,7 +280,8 @@
                                                           EMPTY_STATE])
 """
 
-for typename in STORAGE_FIELDS.values():
+for _lltype, typename in STORAGE_TYPES_AND_FIELDS:
+    if typename == 'void': continue
     if typename == 'weak': continue
     exec template%dict(typename=typename, TYPENAME=typename.upper())
 

Modified: pypy/dist/pypy/translator/stackless/frame.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/frame.py	(original)
+++ pypy/dist/pypy/translator/stackless/frame.py	Fri Jul  7 16:08:05 2006
@@ -13,21 +13,23 @@
 SAVED_REFERENCE = llmemory.GCREF
 null_saved_ref = lltype.nullptr(SAVED_REFERENCE.TO)
 
-STORAGE_TYPES = [lltype.Void, SAVED_REFERENCE, llmemory.Address,
-                 lltype.Signed, lltype.Float, lltype.SignedLongLong,
-                 llmemory.WeakGcAddress]
-
-STORAGE_FIELDS = {SAVED_REFERENCE: 'ref',
-                  llmemory.Address: 'addr',
-                  lltype.Signed: 'long',
-                  lltype.Float: 'float',
-                  lltype.SignedLongLong: 'longlong',
-                  llmemory.WeakGcAddress: 'weak',
-                  }
-
-RETVAL_VOID = 0
-for _key, _value in STORAGE_FIELDS.items():
-    globals()['RETVAL_' + _value.upper()] = STORAGE_TYPES.index(_key)
+STORAGE_TYPES_AND_FIELDS = [
+    (lltype.Void, 'void'),
+    (SAVED_REFERENCE, 'ref'),
+    (llmemory.Address, 'addr'),
+    (lltype.SignedLongLong, 'longlong'),
+    (lltype.Signed, 'long'),
+    (lltype.Float, 'float'),
+    (llmemory.WeakGcAddress, 'weak'),
+     ]
+
+STORAGE_TYPES = [_TYPE for _TYPE, _FIELD in STORAGE_TYPES_AND_FIELDS]
+
+STORAGE_FIELDS = dict(STORAGE_TYPES_AND_FIELDS)
+del STORAGE_FIELDS[lltype.Void]
+
+for i, (_key, _value) in enumerate(STORAGE_TYPES_AND_FIELDS):
+    globals()['RETVAL_' + _value.upper()] = i
 
 def storage_type(T):
     """Return the 'erased' storage type corresponding to T.



More information about the Pypy-commit mailing list