diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-04 18:48:24 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-04 18:48:24 +0000 |
commit | 50e62191ecf65a7118041447da8e629b2ff62e7a (patch) | |
tree | d4c4bf1801116dffb61ad9f214dc0f83c42cace6 /eval.c | |
parent | b369eea79f5ef06a8b314e5ef3a25a0db36db410 (diff) | |
download | ruby-50e62191ecf65a7118041447da8e629b2ff62e7a.tar.gz |
* defines.h (FLUSH_REGISTER_WINDOWS): Make the flushw call an
inline function instead so it can be used as an expression.
* eval.c (EXEC_TAG, THREAD_SAVE_CONTEXT): Consistently call
FLUSH_REGISTER_WINDOWS before calling setjmp(). (I suspect that
every setjmp() implementation should take care of register
windows, though)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -825,7 +825,7 @@ static struct tag *prot_tag; #define PROT_FUNC -1 #define PROT_THREAD -2 -#define EXEC_TAG() setjmp(prot_tag->buf) +#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, setjmp(prot_tag->buf)) #define JUMP_TAG(st) do { \ ruby_frame = prot_tag->frame; \ @@ -7753,7 +7753,8 @@ thread_switch(n) } #define THREAD_SAVE_CONTEXT(th) \ - (rb_thread_save_context(th),thread_switch(setjmp((th)->context))) + (rb_thread_save_context(th),\ + thread_switch((FLUSH_REGISTER_WINDOWS, setjmp((th)->context)))) static void rb_thread_restore_context _((rb_thread_t,int)); |