[macruby-changes] [1942] MacRuby/branches/experimental
source_changes at macosforge.org
source_changes at macosforge.org
Fri Jun 26 19:04:02 PDT 2009
Revision: 1942
http://trac.macosforge.org/projects/ruby/changeset/1942
Author: lsansonetti at apple.com
Date: 2009-06-26 19:04:02 -0700 (Fri, 26 Jun 2009)
Log Message:
-----------
more MT compliance
Modified Paths:
--------------
MacRuby/branches/experimental/thread.c
MacRuby/branches/experimental/vm.cpp
Modified: MacRuby/branches/experimental/thread.c
===================================================================
--- MacRuby/branches/experimental/thread.c 2009-06-27 01:24:26 UTC (rev 1941)
+++ MacRuby/branches/experimental/thread.c 2009-06-27 02:04:02 UTC (rev 1942)
@@ -313,7 +313,7 @@
rb_thread_wakeup(VALUE thread, SEL sel)
{
rb_vm_thread_wakeup(GetThreadPtr(thread));
- return Qnil;
+ return thread;
}
/*
@@ -338,8 +338,9 @@
static VALUE
rb_thread_run(VALUE thread, SEL sel)
{
- // On MacRuby, #wakeup and #run are the same.
- return rb_thread_wakeup(thread, 0);
+ rb_vm_thread_wakeup(GetThreadPtr(thread));
+ pthread_yield_np();
+ return thread;
}
/*
Modified: MacRuby/branches/experimental/vm.cpp
===================================================================
--- MacRuby/branches/experimental/vm.cpp 2009-06-27 01:24:26 UTC (rev 1941)
+++ MacRuby/branches/experimental/vm.cpp 2009-06-27 02:04:02 UTC (rev 1942)
@@ -4409,6 +4409,7 @@
pthread_cleanup_push(rb_vm_thread_destructor, (void *)thread);
rb_vm_thread_t *t = GetThreadPtr(thread);
+
try {
VALUE val = rb_vm_block_eval(t->body, t->argc, t->argv);
GC_WB(&t->value, val);
@@ -4416,6 +4417,7 @@
catch (...) {
// TODO handle thread-level exceptions.
//printf("exception raised inside thread %p\n", pthread_self());
+ t->value = Qfalse;
}
pthread_cleanup_pop(0);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090626/ccb981a6/attachment-0001.html>
More information about the macruby-changes
mailing list