mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
merge revision(s) r45399,r45400,r46036,r46037: [Backport #416]
vm.c: merge code * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary): merge duplicated code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@46628 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
370e83b789
commit
09cf452926
3 changed files with 72 additions and 21 deletions
|
@ -214,4 +214,31 @@ class TestBacktrace < Test::Unit::TestCase
|
||||||
q << true
|
q << true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_core_backtrace_alias
|
||||||
|
obj = BasicObject.new
|
||||||
|
e = assert_raise(NameError) do
|
||||||
|
class << obj
|
||||||
|
alias foo bar
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assert_not_match(/\Acore#/, e.backtrace_locations[0].base_label)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_core_backtrace_undef
|
||||||
|
obj = BasicObject.new
|
||||||
|
e = assert_raise(NameError) do
|
||||||
|
class << obj
|
||||||
|
undef foo
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assert_not_match(/\Acore#/, e.backtrace_locations[0].base_label)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_core_backtrace_hash_merge
|
||||||
|
e = assert_raise(TypeError) do
|
||||||
|
{**nil}
|
||||||
|
end
|
||||||
|
assert_not_match(/\Acore#/, e.backtrace_locations[0].base_label)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#define RUBY_VERSION "2.1.2"
|
#define RUBY_VERSION "2.1.2"
|
||||||
#define RUBY_RELEASE_DATE "2014-06-30"
|
#define RUBY_RELEASE_DATE "2014-07-01"
|
||||||
#define RUBY_PATCHLEVEL 157
|
#define RUBY_PATCHLEVEL 158
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2014
|
#define RUBY_RELEASE_YEAR 2014
|
||||||
#define RUBY_RELEASE_MONTH 6
|
#define RUBY_RELEASE_MONTH 7
|
||||||
#define RUBY_RELEASE_DAY 30
|
#define RUBY_RELEASE_DAY 1
|
||||||
|
|
||||||
#include "ruby/version.h"
|
#include "ruby/version.h"
|
||||||
|
|
||||||
|
|
58
vm.c
58
vm.c
|
@ -2262,46 +2262,62 @@ m_core_set_postexe(VALUE self)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE core_hash_merge_ary(VALUE hash, VALUE ary);
|
||||||
|
static VALUE core_hash_from_ary(VALUE ary);
|
||||||
|
static VALUE core_hash_merge_kwd(int argc, VALUE *argv);
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
core_hash_merge(VALUE hash, long argc, const VALUE *argv)
|
||||||
|
{
|
||||||
|
long i;
|
||||||
|
|
||||||
|
assert(argc % 2 == 0);
|
||||||
|
for (i=0; i<argc; i+=2) {
|
||||||
|
rb_hash_aset(hash, argv[i], argv[i+1]);
|
||||||
|
}
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
m_core_hash_from_ary(VALUE self, VALUE ary)
|
m_core_hash_from_ary(VALUE self, VALUE ary)
|
||||||
|
{
|
||||||
|
VALUE hash;
|
||||||
|
REWIND_CFP(hash = core_hash_from_ary(ary));
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
core_hash_from_ary(VALUE ary)
|
||||||
{
|
{
|
||||||
VALUE hash = rb_hash_new();
|
VALUE hash = rb_hash_new();
|
||||||
int i;
|
|
||||||
|
|
||||||
if (RUBY_DTRACE_HASH_CREATE_ENABLED()) {
|
if (RUBY_DTRACE_HASH_CREATE_ENABLED()) {
|
||||||
RUBY_DTRACE_HASH_CREATE(RARRAY_LEN(ary), rb_sourcefile(), rb_sourceline());
|
RUBY_DTRACE_HASH_CREATE(RARRAY_LEN(ary), rb_sourcefile(), rb_sourceline());
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(RARRAY_LEN(ary) % 2 == 0);
|
return core_hash_merge_ary(hash, ary);
|
||||||
for (i=0; i<RARRAY_LEN(ary); i+=2) {
|
|
||||||
rb_hash_aset(hash, RARRAY_AREF(ary, i), RARRAY_AREF(ary, i+1));
|
|
||||||
}
|
|
||||||
|
|
||||||
return hash;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
m_core_hash_merge_ary(VALUE self, VALUE hash, VALUE ary)
|
m_core_hash_merge_ary(VALUE self, VALUE hash, VALUE ary)
|
||||||
{
|
{
|
||||||
int i;
|
REWIND_CFP(core_hash_merge_ary(hash, ary));
|
||||||
|
return hash;
|
||||||
assert(RARRAY_LEN(ary) % 2 == 0);
|
}
|
||||||
for (i=0; i<RARRAY_LEN(ary); i+=2) {
|
|
||||||
rb_hash_aset(hash, RARRAY_AREF(ary, i), RARRAY_AREF(ary, i+1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
core_hash_merge_ary(VALUE hash, VALUE ary)
|
||||||
|
{
|
||||||
|
core_hash_merge(hash, RARRAY_LEN(ary), RARRAY_CONST_PTR(ary));
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
m_core_hash_merge_ptr(int argc, VALUE *argv, VALUE recv)
|
m_core_hash_merge_ptr(int argc, VALUE *argv, VALUE recv)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
VALUE hash = argv[0];
|
VALUE hash = argv[0];
|
||||||
|
|
||||||
for (i=1; i<argc; i+=2) {
|
REWIND_CFP(core_hash_merge(hash, argc-1, argv+1));
|
||||||
rb_hash_aset(hash, argv[i], argv[i+1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
@ -2333,6 +2349,14 @@ kwcheck_i(VALUE key, VALUE value, VALUE hash)
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
m_core_hash_merge_kwd(int argc, VALUE *argv, VALUE recv)
|
m_core_hash_merge_kwd(int argc, VALUE *argv, VALUE recv)
|
||||||
|
{
|
||||||
|
VALUE hash;
|
||||||
|
REWIND_CFP(hash = core_hash_merge_kwd(argc, argv));
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
core_hash_merge_kwd(int argc, VALUE *argv)
|
||||||
{
|
{
|
||||||
VALUE hash, kw;
|
VALUE hash, kw;
|
||||||
rb_check_arity(argc, 1, 2);
|
rb_check_arity(argc, 1, 2);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue