[pypy-svn] r27747 - in pypy/branch/njriley-trans/pypy: module/trans rpython/module translator/c translator/c/src
njriley at codespeak.net
njriley at codespeak.net
Fri May 26 22:30:58 CEST 2006
Author: njriley
Date: Fri May 26 22:30:57 2006
New Revision: 27747
Modified:
pypy/branch/njriley-trans/pypy/module/trans/__init__.py
pypy/branch/njriley-trans/pypy/module/trans/interp_trans.py
pypy/branch/njriley-trans/pypy/module/trans/rtrans.py
pypy/branch/njriley-trans/pypy/rpython/module/ll_trans.py
pypy/branch/njriley-trans/pypy/translator/c/extfunc.py
pypy/branch/njriley-trans/pypy/translator/c/src/ll_trans.h
Log:
Exposed retry to applevel, auto syscall stuff to other C code;
refactored code a bit.
Modified: pypy/branch/njriley-trans/pypy/module/trans/__init__.py
==============================================================================
--- pypy/branch/njriley-trans/pypy/module/trans/__init__.py (original)
+++ pypy/branch/njriley-trans/pypy/module/trans/__init__.py Fri May 26 22:30:57 2006
@@ -9,6 +9,7 @@
interpleveldefs = {
'begin' : 'interp_trans.begin',
'end' : 'interp_trans.end',
+ 'retry' : 'interp_trans.retry',
'abort' : 'interp_trans.abort',
'pause' : 'interp_trans.pause',
'unpause' : 'interp_trans.unpause',
Modified: pypy/branch/njriley-trans/pypy/module/trans/interp_trans.py
==============================================================================
--- pypy/branch/njriley-trans/pypy/module/trans/interp_trans.py (original)
+++ pypy/branch/njriley-trans/pypy/module/trans/interp_trans.py Fri May 26 22:30:57 2006
@@ -10,6 +10,10 @@
rtrans.end()
return space.w_None
+def retry(space):
+ rtrans.retry()
+ return space.w_None
+
def abort(space):
rtrans.abort()
return space.w_None
Modified: pypy/branch/njriley-trans/pypy/module/trans/rtrans.py
==============================================================================
--- pypy/branch/njriley-trans/pypy/module/trans/rtrans.py (original)
+++ pypy/branch/njriley-trans/pypy/module/trans/rtrans.py Fri May 26 22:30:57 2006
@@ -8,6 +8,9 @@
def end():
os.write(2, '= rtrans.end\n')
+def retry():
+ os.write(2, '= rtrans.retry\n')
+
def abort():
os.write(2, '= rtrans.abort\n')
Modified: pypy/branch/njriley-trans/pypy/rpython/module/ll_trans.py
==============================================================================
--- pypy/branch/njriley-trans/pypy/rpython/module/ll_trans.py (original)
+++ pypy/branch/njriley-trans/pypy/rpython/module/ll_trans.py Fri May 26 22:30:57 2006
@@ -6,6 +6,10 @@
pass
ll_trans_end.suggested_primitive = True
+def ll_trans_retry():
+ pass
+ll_trans_retry.suggested_primitive = True
+
def ll_trans_abort():
pass
ll_trans_abort.suggested_primitive = True
Modified: pypy/branch/njriley-trans/pypy/translator/c/extfunc.py
==============================================================================
--- pypy/branch/njriley-trans/pypy/translator/c/extfunc.py (original)
+++ pypy/branch/njriley-trans/pypy/translator/c/extfunc.py Fri May 26 22:30:57 2006
@@ -57,6 +57,7 @@
ll_thread.ll_thread_get_ident: 'LL_thread_get_ident',
ll_trans.ll_trans_begin: 'LL_trans_begin',
ll_trans.ll_trans_end: 'LL_trans_end',
+ ll_trans.ll_trans_retry: 'LL_trans_retry',
ll_trans.ll_trans_abort: 'LL_trans_abort',
ll_trans.ll_trans_pause: 'LL_trans_pause',
ll_trans.ll_trans_unpause: 'LL_trans_unpause',
Modified: pypy/branch/njriley-trans/pypy/translator/c/src/ll_trans.h
==============================================================================
--- pypy/branch/njriley-trans/pypy/translator/c/src/ll_trans.h (original)
+++ pypy/branch/njriley-trans/pypy/translator/c/src/ll_trans.h Fri May 26 22:30:57 2006
@@ -4,6 +4,7 @@
/* prototypes */
void LL_trans_begin(void);
void LL_trans_end(void);
+void LL_trans_retry(void);
void LL_trans_abort(void);
void LL_trans_pause(void);
void LL_trans_unpause(void);
@@ -12,6 +13,7 @@
void LL_trans_disable(void);
int RPyTransPause(void);
void RPyTransUnpause(int pause_state);
+void RPyTransSurroundSyscalls(int surround);
/* implementations */
@@ -32,6 +34,12 @@
}
void
+LL_trans_retry(void)
+{
+ XACT_RETRY;
+}
+
+void
LL_trans_abort(void)
{
XACT_ABORT(&&abort);
@@ -55,6 +63,19 @@
XACT_UNPAUSE(pause_state);
}
+void
+RPyTransSurroundSyscalls(int surround)
+{
+ if (surround) {
+ int pause_state;
+ XACT_PAUSE(pause_state);
+ set_auto_xact(1);
+ XACT_UNPAUSE(pause_state);
+ } else {
+ set_auto_xact(0);
+ }
+}
+
static __thread int pause_state;
void
@@ -100,16 +121,14 @@
assert(ret_val == 0);
}
XACT_BEGIN;
- XACT_PAUSE(ret_val);
- set_auto_xact(1);
- XACT_UNPAUSE(ret_val);
+ RPyTransSurroundSyscalls(1);
XACT_END;
}
void
LL_trans_disable(void)
{
- set_auto_xact(0);
+ RPyTransSurroundSyscalls(0);
}
int
More information about the Pypy-commit
mailing list