* cont.c (fiber_switch): make sure the root fiber object is available
before the first switching.
* test/ruby/test_fiber.rb: remove "skip".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm.c (thread_free): simply call rb_threadptr_root_fiber_release().
* cont.c (rb_threadptr_root_fiber_release): release th->ec (ec->fiber)
iff root_fiber is NULL. If root_fiber is available, then ignore it
and root fiber object will free th->ec too.
* cont.c (rb_threadptr_root_fiber_setup): do not set th->root_fiber.
th->root_fiber will be set if a root fiber object is created.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
to represent execution context [Feature #14038]
* vm_core.h (rb_thread_t): rb_thread_t::ec is now a pointer.
There are many code using `th` to represent execution context
(such as cfp, VM stack and so on). To access `ec`, they need to
use `th->ec->...` (adding one indirection) so that we need to
replace them by passing `ec` instead of `th`.
* vm_core.h (GET_EC()): introduced to access current ec. Also
remove `ruby_current_thread` global variable.
* cont.c (rb_context_t): introduce rb_context_t::thread_ptr instead of
rb_context_t::thread_value.
* cont.c (ec_set_vm_stack): added to update vm_stack explicitly.
* cont.c (ec_switch): added to switch ec explicitly.
* cont.c (rb_fiber_close): added to terminate fibers explicitly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* array.c (rb_to_array_type): make public to share common code
internally.
* hash.c (rb_to_hash_type): make public to share common code
internally.
* symbol.c (rb_to_symbol_type): make public to share common code
internally.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (update-gems, update-bundled_gems): quote pipes by
double qoutes instead of single quotes, to escape them on
Windows. wildcard characters `*?[{` still need to be quoted by
single quotes to get rid of globbing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60436 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (test-bundled-gems): moved from Makefile.in so it
might work on nmake too.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (test-bundler): moved from Makefile.in so it might
work on nmake too.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/fetch-bundled_gems.rb: get rid of tool/git-refresh which
requries Bourne shell.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/testunit/test_parallel.rb (teardown): this code seems to allow
`Errno::EPIPE` from @worker_in. in such case, `close` may also raise the same
exception.
I'm not confident in this conclusion and still doubt that we should revert
r60417 instead of this commit or not.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
imemo_alloc provides a memory buffer whose contents are marked by GC.
C code can access imemo_alloc buffer freely, so imemo_alloc must be
considered writebarrier-unprotected. But T_IMEMO is writebarrier-
protected by default, which caused a GC bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60427 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/test_io.rb (TestIO#test_puts_parallel): skip a test
needs writev which is not portable. [Feature #14042]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/securerandom.rb (Random::Formatter#choose): [DOC] fix an
example, `n` is not optional.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60420 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c (rb_io_puts): write a newline together at once for each
argument. based on the patch by rohitpaulk (Rohit Kuruvilla) at
[ruby-core:83508]. [Feature #14042]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* range.c (rb_range_values): use rb_check_funcall instead of
calling rb_respond_to then rb_funcall, and allow `begin` and
`end` to be private as well as other internal conversions.
[ruby-core:83541] [Bug #14048]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* spec/mspec/lib/mspec/mocks/mock.rb (Mock.verify_call): should
pass arguments to as given, not packed in an array.
mock_respond_to? expects 2 or 3 arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* range.c (rb_range_values): should raise TypeError if necessary
method is not defined, not NoMethodError, when trying to tell if
the object is a Range and extract info.
[ruby-core:83541] [Bug #14048]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* debug.c (ruby_dummy_gdb_enums): force to include struct RSymbol
info.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e