[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