summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-01-04 18:48:24 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-01-04 18:48:24 +0000
commit050de0c31f3daa64b86616ac85464d8171f73489 (patch)
treed4c4bf1801116dffb61ad9f214dc0f83c42cace6 /eval.c
parent2a971523adbc72a62bbaeddd8a181e587314d6a8 (diff)
downloadruby-050de0c31f3daa64b86616ac85464d8171f73489.tar.gz
ruby-050de0c31f3daa64b86616ac85464d8171f73489.tar.xz
ruby-050de0c31f3daa64b86616ac85464d8171f73489.zip
* 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: http://svn.ruby-lang.org/repos/ruby/trunk@3285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index 9030b7041..fcf364350 100644
--- a/eval.c
+++ b/eval.c
@@ -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));