ko1
ed88975237
* eval_intern.h, eval.c (ruby_init): remove POP_TAG_INIT().
...
* cont.c (rb_fiber_start): remove zero-clearing tag.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-06 16:04:02 +00:00
ko1
15b31b0d80
* cont.c (rb_cont_call): forbid calling dead fiber with
...
Cotinuation#call.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-06 01:55:09 +00:00
ko1
64ffdb4440
* cont.c (rb_fiber_start): clear th->tag and check error to fix
...
[ruby-dev:30888] and [ruby-dev:30889].
* eval_intern.h: fix rb_fiber_start() prototype.
* test/ruby/test_fiber.rb: add tests for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-05 17:55:07 +00:00
ko1
6b3ef2249c
* cont.c (Fiber#pass): rename to Fiber#yield. Block parameter
...
of fiber body receive first yield values.
e.g.: Fiber.new{|x| p x}.yield(:ok) #=> :ok
* cont.c: rename rb_context_t#retval to rb_context_t#value.
* test/ruby/test_fiber.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-02 07:48:29 +00:00
ko1
284565992f
* cont.c (cont_capture): store all local variables in heap
...
([ruby-dev:30832]).
* vm.c (th_stack_to_heap): added.
* test/ruby/test_continuation.rb: add a test for above.
* eval_intern.h (th_get_ruby_level_cfp): fix to clean code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12415 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-30 05:56:13 +00:00
ko1
d64609463f
* cont.c: fix bug around Continuation and Fiber.
...
* test/ruby/test_continuation.rb: add tests for Continuation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-29 01:59:53 +00:00
nobu
7f41ff0ff6
* cont.c: fixed a function name.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12396 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-28 01:25:55 +00:00
ko1
57062d91b9
* cont.c: support Fiber. Check test/ruby/test_fiber.rb for detail.
...
Fiber is known as "Micro Thread", "Coroutine", and other terms.
At this time, only Fiber#pass is supported to change context.
I want to know more suitable method name/API for Fiber (... do you
know more suitable class name instead of Fiber?) as "suspend/resume",
"call", "yield", "start/kick/stop/restart", ....
* eval.c, eval_intern.h, thread.c, yarvcore.c, yarvcore.h: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-27 19:12:43 +00:00
ko1
e4aa7208e5
* cont.c: check across trap violation.
...
* eval.c, yarvcore.h: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-24 03:08:13 +00:00
ko1
7c4ff2d332
* cont.c: support callcc which everyone love.
...
incomplete. please give me bug reports.
* common.mk, inits.c, thread.c: ditto.
* yarvcore.c: export thread_mark().
* yarvcore.h: disable value cache option.
* eval_intern.h: set th_get_ruby_level_cfp to inline.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-23 22:52:19 +00:00