[macruby-changes] [689] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Oct 30 18:11:23 PDT 2008


Revision: 689
          http://trac.macosforge.org/projects/ruby/changeset/689
Author:   lsansonetti at apple.com
Date:     2008-10-30 18:11:23 -0700 (Thu, 30 Oct 2008)
Log Message:
-----------
more missing wb, yeepee

Modified Paths:
--------------
    MacRuby/trunk/error.c
    MacRuby/trunk/eval.c
    MacRuby/trunk/gc.c
    MacRuby/trunk/load.c
    MacRuby/trunk/proc.c
    MacRuby/trunk/vm.c
    MacRuby/trunk/vm_eval.c
    MacRuby/trunk/vm_insnhelper.c

Modified: MacRuby/trunk/error.c
===================================================================
--- MacRuby/trunk/error.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/error.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -1549,20 +1549,20 @@
     if (th->parse_in_eval) {
 	if (!RTEST(err)) {
 	    err = rb_exc_new2(rb_eSyntaxError, s);
-	    th->errinfo = err;
+	    GC_WB(&th->errinfo, err);
 	}
 	else {
 	    VALUE str = rb_obj_as_string(err);
 
 	    rb_str_cat2(str, "\n");
 	    rb_str_cat2(str, s);
-	    th->errinfo = rb_exc_new3(rb_eSyntaxError, str);
+	    GC_WB(&th->errinfo, rb_exc_new3(rb_eSyntaxError, str));
 	}
     }
     else {
 	if (!RTEST(err)) {
 	    err = rb_exc_new2(rb_eSyntaxError, "compile error");
-	    th->errinfo = err;
+	    GC_WB(&th->errinfo, err);
 	}
 	rb_write_error(s);
 	rb_write_error("\n");

Modified: MacRuby/trunk/eval.c
===================================================================
--- MacRuby/trunk/eval.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/eval.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -200,7 +200,7 @@
     else if (ex == 0) {
 	ex = state;
     }
-    th->errinfo = errs[1];
+    GC_WB(&th->errinfo, errs[1]);
     ex = error_handle(ex);
     ruby_finalize_1();
     POP_TAG();
@@ -392,7 +392,7 @@
     int line = 0;
 
     if (rb_thread_set_raised(th)) {
-	th->errinfo = exception_error;
+	GC_WB(&th->errinfo, exception_error);
 	JUMP_TAG(TAG_FATAL);
     }
 
@@ -412,7 +412,7 @@
 	}
     }
     if (!NIL_P(mesg)) {
-	th->errinfo = mesg;
+	GC_WB(&th->errinfo, mesg);
     }
 
     if (RTEST(ruby_debug) && !NIL_P(e = th->errinfo) &&
@@ -435,7 +435,7 @@
 	}
 	POP_TAG();
 	if (status == TAG_FATAL && th->errinfo == exception_error) {
-	    th->errinfo = mesg;
+	    GC_WB(&th->errinfo, mesg);
 	}
 	else if (status) {
 	    rb_thread_reset_raised(th);
@@ -695,7 +695,7 @@
 		    state = 0;
 		}
 		if (state == 0) {
-		    th->errinfo = e_info;
+		    GC_WB(&th->errinfo, e_info);
 		}
 	    }
 	}
@@ -1076,7 +1076,7 @@
     if (!NIL_P(err) && !rb_obj_is_kind_of(err, rb_eException)) {
 	rb_raise(rb_eTypeError, "assigning non-exception to $!");
     }
-    GET_THREAD()->errinfo = err;
+    GC_WB(&GET_THREAD()->errinfo, err);
 }
 
 VALUE

Modified: MacRuby/trunk/gc.c
===================================================================
--- MacRuby/trunk/gc.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/gc.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -430,9 +430,10 @@
 static void
 rb_objc_scan_external_callout(void *context, void (*scanner)(void *context, void *start, void *end))
 {
+    /* XXX we should scan all threads */
     rb_thread_t *th = GET_THREAD();
     if (th->stack != NULL) {
-	(*scanner)(context, th->stack, th->cfp->sp);
+	(*scanner)(context, th->stack, th->stack + th->stack_size);
     }
 } 
 

Modified: MacRuby/trunk/load.c
===================================================================
--- MacRuby/trunk/load.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/load.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -571,7 +571,7 @@
 	load_failed(fname);
     }
 
-    th->errinfo = errinfo;
+    GC_WB(&th->errinfo, errinfo);
 
     return result;
 }

Modified: MacRuby/trunk/proc.c
===================================================================
--- MacRuby/trunk/proc.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/proc.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -90,8 +90,8 @@
     GetProcPtr(procval, dst);
 
     dst->block = src->block;
-    dst->block.proc = procval;
-    dst->envval = src->envval;
+    GC_WB(&dst->block.proc, procval);
+    GC_WB(&dst->envval, src->envval);
     dst->safe_level = src->safe_level;
     dst->is_lambda = src->is_lambda;
 

Modified: MacRuby/trunk/vm.c
===================================================================
--- MacRuby/trunk/vm.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/vm.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -362,7 +362,8 @@
 
     bcfp = RUBY_VM_GET_CFP_FROM_BLOCK_PTR(block);
     bdfp = bcfp->dfp;
-    block->proc = procval = vm_make_proc(th, bcfp, block);
+    procval = vm_make_proc(th, bcfp, block);
+    GC_WB(&block->proc, procval); 
     return procval;
 }
 
@@ -391,13 +392,13 @@
     }
     procval = rb_proc_alloc(rb_cProc);
     GetProcPtr(procval, proc);
-    proc->blockprocval = blockprocval;
-    proc->block.self = block->self;
-    proc->block.lfp = block->lfp;
-    proc->block.dfp = block->dfp;
-    proc->block.iseq = block->iseq;
-    proc->block.proc = procval;
-    proc->envval = envval;
+    GC_WB(&proc->blockprocval, blockprocval);
+    GC_WB(&proc->block.self, block->self);
+    GC_WB(&proc->block.lfp, block->lfp);
+    GC_WB(&proc->block.dfp, block->dfp);
+    GC_WB(&proc->block.iseq, block->iseq);
+    GC_WB(&proc->block.proc, procval);
+    GC_WB(&proc->envval, envval);
     proc->safe_level = th->safe_level;
 
     if (VMDEBUG) {
@@ -835,7 +836,7 @@
     VALUE *dfp = GC_GUARDED_PTR_REF(*cfp->dfp);
 
     th->state = TAG_BREAK;
-    th->errinfo = (VALUE)NEW_THROW_OBJECT(Qnil, (VALUE)dfp, TAG_BREAK);
+    GC_WB(&th->errinfo, (VALUE)NEW_THROW_OBJECT(Qnil, (VALUE)dfp, TAG_BREAK));
     TH_JUMP_TAG(th, TAG_BREAK);
 }
 
@@ -1208,7 +1209,7 @@
 	    }
 	    else {
 		vm_pop_frame(th);
-		th->errinfo = err;
+		GC_WB(&th->errinfo, err);
 		TH_POP_TAG2();
 		JUMP_TAG(state);
 	    }

Modified: MacRuby/trunk/vm_eval.c
===================================================================
--- MacRuby/trunk/vm_eval.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/vm_eval.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -1192,7 +1192,7 @@
 	rb_raise(rb_eArgError, "uncaught throw %s", RSTRING_PTR(desc));
     }
     rb_trap_restore_mask();
-    th->errinfo = NEW_THROW_OBJECT(tag, 0, TAG_THROW);
+    GC_WB(&th->errinfo, NEW_THROW_OBJECT(tag, 0, TAG_THROW));
 
     JUMP_TAG(TAG_THROW);
 #ifndef __GNUC__

Modified: MacRuby/trunk/vm_insnhelper.c
===================================================================
--- MacRuby/trunk/vm_insnhelper.c	2008-10-31 00:28:11 UTC (rev 688)
+++ MacRuby/trunk/vm_insnhelper.c	2008-10-31 01:11:23 UTC (rev 689)
@@ -56,7 +56,7 @@
     cfp->bp = sp + 1;
     cfp->iseq = (rb_iseq_t *) iseq;
     cfp->flag = type;
-    cfp->self = self;
+    GC_WB(&cfp->self, self);
     cfp->lfp = lfp;
     cfp->dfp = sp;
     cfp->proc = 0;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20081030/42d78fce/attachment-0001.html>


More information about the macruby-changes mailing list