In article [email protected],
Yukihiro M. [email protected] writes:
http://blogs.sun.com/d/entry/ruby_performance_gains_on_sparc
e$B$K$h$k$He(BSPARCe$B$G$Oe(BEXEC_TAGe$B$NA0$Ne(BFLUSH_REGISTER_WINDOWSe$B$OITMWe(B
e$B$N$h$&$G$9!#$G!“$3$l$r<B:]$K9T$C$F$$$k$N$O:#$^$Ge(BSPARCe$B$He(BIA64
e$B$@$1$@$C$?$N$G$9$,!”<j6a$Ke(BIA64e$B%5!<%P$,$"$k?M$O!"e(BEXEC_TAG()e$B$+e(B
e$B$ie(BFLUSH_REGISTER_WINDOWSe$B$r:o$C$F$bF0:n$9$k$+$I$&$+3NG’$7$F$$e(B
e$B$?$@$1$^$;$s$+!)e(B
1.8 e$B$He(B 1.9 e$B$G;n$7$F$_$^$7$?$,!"e(Bmake test, test-all
e$B$O$H$/$Ke(B
e$BJQ2=$7$^$;$s$M!#e(B
e$B$“$H$O!”$=$Ne(B 2e$B2U=j$Ke(B FLUSH_REGISTER_WINDOWS e$B$rF~$l$?e(B
knu e$B$5e(B
e$B$s$K?R$M$k$H$+!#e(B
1.8:
Index: eval.c
— eval.c (revision 15781)
+++ eval.c (working copy)
@@ -1028,7 +1028,7 @@ static struct tag prot_tag;
#define PROT_LAMBDA INT2FIX(2) / 5 /
#define PROT_YIELD INT2FIX(3) / 7 */
-#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, ruby_setjmp(((void)0),
prot_tag->buf))
+#define EXEC_TAG() (ruby_setjmp(((void)0), prot_tag->buf))
#define JUMP_TAG(st) do {
ruby_frame = prot_tag->frame;
@@ -10330,7 +10330,7 @@ rb_thread_switch(n)
}
#define THREAD_SAVE_CONTEXT(th) \
- (rb_thread_switch((FLUSH_REGISTER_WINDOWS,
ruby_setjmp(rb_thread_save_context(th), (th)->context))))
- (rb_thread_switch((ruby_setjmp(rb_thread_save_context(th),
(th)->context))))
NORETURN(static void rb_thread_restore_context _((rb_thread_t,int)));
NORETURN(NOINLINE(static void
rb_thread_restore_context_0(rb_thread_t,int,void*)));
1.9:
Index: eval_intern.h
— eval_intern.h (revision 15777)
+++ eval_intern.h (working copy)
@@ -143,7 +143,7 @@ char *strrchr(const char *, const char);
#define POP_TAG() TH_POP_TAG()
#define TH_EXEC_TAG() \
- (FLUSH_REGISTER_WINDOWS, ruby_setjmp(_th->tag->buf))
- (ruby_setjmp(_th->tag->buf))
#define EXEC_TAG()
TH_EXEC_TAG()