* 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
* ext/etc/etc.c (etc_sysconfdir): mentioned special case on
Windows. [ruby-core:43110] [Bug #6121]
* ext/etc/extconf.rb: define SYSCONFDIR only if sysconfdir is set
in RbConfig::CONFIG and not empty.
* win32/Makefile.sub (config.status): sysconfdir is not used on
Windows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60402 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
[Feature #14045]
* insns.def (getblockparam, setblockparam): add special access
instructions for block parameters.
getblockparam checks VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM and
if it is not set this instruction creates a Proc object from
a given blcok and set VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM.
setblockparam is similar to setlocal, but set
VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM.
* compile.c: use get/setblockparm instead get/setlocal instructions.
Note that they are used for method local block parameters (def m(&b)),
not for block local method parameters (iter{|&b|).
* proc.c (get_local_variable_ptr): creates Proc object for
Binding#local_variable_get/set.
* safe.c (safe_setter): we need to create Proc objects for postponed
block parameters when $SAFE is changed.
* vm_args.c (args_setup_block_parameter): used only for block local blcok
parameters.
* vm_args.c (vm_caller_setup_arg_block): if called with
VM_CALL_ARGS_BLOCKARG_BLOCKPARAM flag then passed block values should be
a block handler.
* test/ruby/test_optimization.rb: add tests.
* benchmark/bm_vm1_blockparam*: added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm_eval.c (rb_type_str): ensure all value types are covered.
missed types would be warned by -Wswitch option of gcc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60395 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* vm_eval.c (uncallable_object): extract error case as a no-return
function. split successive ?-marks not to get confused with a
trigraph.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
The idiom `rb_gc_force_recycle((VALUE)...)` was used heavily.
This change defines `rb_discard_nod(NODE*)` and allows C compiler to
typecheck.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
A temporary NODE object was allocated to create iseq. Instead, this
patch allocates a dummy NODE as auto variable, and discard it soon.
This change is intended as a preparation to manage AST NODEs out of GC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e