Author: Armin Rigo <ar...@tunes.org> Branch: stmgc-c7 Changeset: r72948:92734c1dff54 Date: 2014-08-21 17:20 +0200 http://bitbucket.org/pypy/pypy/changeset/92734c1dff54/
Log: import stmgc/7949c54b03a5 diff --git a/rpython/translator/stm/src_stm/revision b/rpython/translator/stm/src_stm/revision --- a/rpython/translator/stm/src_stm/revision +++ b/rpython/translator/stm/src_stm/revision @@ -1,1 +1,1 @@ -b067967930aa +7949c54b03a5 diff --git a/rpython/translator/stm/src_stm/stm/rewind_setjmp.h b/rpython/translator/stm/src_stm/stm/rewind_setjmp.h --- a/rpython/translator/stm/src_stm/stm/rewind_setjmp.h +++ b/rpython/translator/stm/src_stm/stm/rewind_setjmp.h @@ -75,8 +75,13 @@ /* remember the current stack and ss_stack positions */ #define rewind_jmp_enterframe(rjthread, rjbuf, ss) do { \ + rewind_jmp_prepareframe(rjbuf); \ + rewind_jmp_enterprepframe(rjthread, rjbuf, ss); \ +} while (0) +#define rewind_jmp_prepareframe(rjbuf) \ + ((rjbuf)->frame_base = __builtin_frame_address(0)) +#define rewind_jmp_enterprepframe(rjthread, rjbuf, ss) do { \ assert((((long)(ss)) & 1) == 0); \ - (rjbuf)->frame_base = __builtin_frame_address(0); \ (rjbuf)->shadowstack_base = (char *)(ss); \ (rjbuf)->prev = (rjthread)->head; \ (rjthread)->head = (rjbuf); \ diff --git a/rpython/translator/stm/src_stm/stmgc.h b/rpython/translator/stm/src_stm/stmgc.h --- a/rpython/translator/stm/src_stm/stmgc.h +++ b/rpython/translator/stm/src_stm/stmgc.h @@ -329,6 +329,8 @@ /* At some key places, like the entry point of the thread and in the function with the interpreter's dispatch loop, you need to declare a local variable of type 'rewind_jmp_buf' and call these macros. */ +#define stm_rewind_jmp_enterprepframe(tl, rjbuf) \ + rewind_jmp_enterprepframe(&(tl)->rjthread, rjbuf, (tl)->shadowstack) #define stm_rewind_jmp_enterframe(tl, rjbuf) \ rewind_jmp_enterframe(&(tl)->rjthread, rjbuf, (tl)->shadowstack) #define stm_rewind_jmp_leaveframe(tl, rjbuf) \ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit