[pypy-svn] r25623 - in pypy/dist/pypy/translator/stackless: . test
mwh at codespeak.net
mwh at codespeak.net
Sun Apr 9 16:35:08 CEST 2006
Author: mwh
Date: Sun Apr 9 16:35:07 2006
New Revision: 25623
Modified:
pypy/dist/pypy/translator/stackless/code.py
pypy/dist/pypy/translator/stackless/test/test_transform.py
pypy/dist/pypy/translator/stackless/transform.py
Log:
some changes to placate llinterp
change the state header to be a gc struct too
fix bug in slp_main_loop
the test now works!
Modified: pypy/dist/pypy/translator/stackless/code.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/code.py (original)
+++ pypy/dist/pypy/translator/stackless/code.py Sun Apr 9 16:35:07 2006
@@ -1,11 +1,10 @@
from pypy.rpython.lltypesystem import lltype, llmemory
from pypy.rpython import rarithmetic
-STATE_HEADER = lltype.Struct('state_header',
- ('f_back', lltype.Ptr(lltype.ForwardReference())),
+STATE_HEADER = lltype.GcStruct('state_header',
+ ('f_back', lltype.Ptr(lltype.GcForwardReference())),
('restartstate', lltype.Signed),
- ('function', llmemory.Address),
-)
+ ('function', llmemory.Address),)
STATE_HEADER.f_back.TO.become(STATE_HEADER)
null_state = lltype.nullptr(STATE_HEADER)
@@ -27,7 +26,7 @@
global_state = StacklessData()
void_void_func = lltype.Ptr(lltype.FuncType([], lltype.Void))
-long_void_func = lltype.Ptr(lltype.FuncType([], lltype.Signed))
+long_void_func = lltype.Ptr(lltype.FuncType([lltype.Signed], lltype.Signed))
longlong_void_func = lltype.Ptr(lltype.FuncType([], lltype.SignedLongLong))
float_void_func = lltype.Ptr(lltype.FuncType([], lltype.Float))
pointer_void_func = lltype.Ptr(lltype.FuncType([], llmemory.Address) )
@@ -38,7 +37,7 @@
fn2()
elif signature == 'long':
fn3 = llmemory.cast_adr_to_ptr(fn, long_void_func)
- global_state.retval_long = fn3()
+ global_state.retval_long = fn3(0)
elif signature == 'longlong':
fn3 = llmemory.cast_adr_to_ptr(fn, longlong_void_func)
global_state.retval_longlong = fn3()
@@ -64,7 +63,8 @@
currentframe = global_state.top
while currentframe:
- global_state.top = nextframe = currentframe.f_back
+ global_state.top = currentframe
+ nextframe = currentframe.f_back
fn, signature, global_state.restart_substate = decode_state(currentframe)
try:
call_function(fn, signature)
@@ -75,7 +75,7 @@
else:
global_state.exception = None
- currentframe = nextframe
+ currentframe = nextframe
if global_state.exception is not None:
raise global_state.exception
Modified: pypy/dist/pypy/translator/stackless/test/test_transform.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/test/test_transform.py (original)
+++ pypy/dist/pypy/translator/stackless/test/test_transform.py Sun Apr 9 16:35:07 2006
@@ -86,10 +86,11 @@
## ll_list = r_list_of_strings.convert_const([''])
## from pypy.rpython.llinterp import LLInterpreter
## interp = LLInterpreter(t.rtyper)
-## interp.eval_graph(graphof(t, entry_point), [ll_list])
+## res = interp.eval_graph(graphof(t, entry_point), [ll_list])
+## print res
## return
- cbuilder = CStandaloneBuilder(t, entry_point, gcpolicy=gc.BoehmGcPolicy)
+ cbuilder = CStandaloneBuilder(t, entry_point)#, gcpolicy=gc.BoehmGcPolicy)
cbuilder.generate_source()
cbuilder.compile()
return cbuilder.cmdexec('')
Modified: pypy/dist/pypy/translator/stackless/transform.py
==============================================================================
--- pypy/dist/pypy/translator/stackless/transform.py (original)
+++ pypy/dist/pypy/translator/stackless/transform.py Sun Apr 9 16:35:07 2006
@@ -259,11 +259,13 @@
var_unwind_exception = copyvar(self.translator, var_unwind_exception)
fields = []
+ n = []
for i, v in enumerate(varstosave):
assert v.concretetype is not lltype.Void
fields.append(('field_%d'%(i,), v.concretetype))
+ n.append(repr(v.concretetype))
- frame_type = lltype.GcStruct("S",
+ frame_type = lltype.GcStruct("S" + '-'.join(n),
('header', STATE_HEADER),
*fields)
More information about the Pypy-commit
mailing list