mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* array.c (rb_ary_or): use RHASH_TBL_RAW instead of RHASH_TBL
* process.c (rb_execarg_fixup): use RHASH_TBL_RAW and insert write barriers where appropriate * vm.c (kwmerge_i): use RHASH_TBL_RAW * vm.c (HASH_ASET): use rb_hash_aset instead of calling directly into st_insert git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
0aada28159
commit
e0290c9404
4 changed files with 22 additions and 8 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
Sun Dec 8 09:40:00 2013 Charlie Somerville <charliesome@ruby-lang.org>
|
||||||
|
|
||||||
|
* array.c (rb_ary_or): use RHASH_TBL_RAW instead of RHASH_TBL
|
||||||
|
|
||||||
|
* process.c (rb_execarg_fixup): use RHASH_TBL_RAW and insert write
|
||||||
|
barriers where appropriate
|
||||||
|
|
||||||
|
* vm.c (kwmerge_i): use RHASH_TBL_RAW
|
||||||
|
|
||||||
|
* vm.c (HASH_ASET): use rb_hash_aset instead of calling directly into
|
||||||
|
st_insert
|
||||||
|
|
||||||
Sat Dec 7 11:15:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Sat Dec 7 11:15:52 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* hash.c (rb_hash_reject): copy unrejected elements only to new hash,
|
* hash.c (rb_hash_reject): copy unrejected elements only to new hash,
|
||||||
|
|
2
array.c
2
array.c
|
@ -4058,7 +4058,7 @@ rb_ary_or(VALUE ary1, VALUE ary2)
|
||||||
|
|
||||||
for (i=0; i<RARRAY_LEN(ary2); i++) {
|
for (i=0; i<RARRAY_LEN(ary2); i++) {
|
||||||
VALUE elt = RARRAY_AREF(ary2, i);
|
VALUE elt = RARRAY_AREF(ary2, i);
|
||||||
if (!st_update(RHASH_TBL(hash), (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
|
if (!st_update(RHASH_TBL_RAW(hash), (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
|
||||||
OBJ_WRITTEN(hash, Qundef, elt);
|
OBJ_WRITTEN(hash, Qundef, elt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
process.c
12
process.c
|
@ -2316,24 +2316,26 @@ rb_execarg_fixup(VALUE execarg_obj)
|
||||||
}
|
}
|
||||||
hide_obj(envtbl);
|
hide_obj(envtbl);
|
||||||
if (envopts != Qfalse) {
|
if (envopts != Qfalse) {
|
||||||
st_table *stenv = RHASH_TBL(envtbl);
|
st_table *stenv = RHASH_TBL_RAW(envtbl);
|
||||||
long i;
|
long i;
|
||||||
for (i = 0; i < RARRAY_LEN(envopts); i++) {
|
for (i = 0; i < RARRAY_LEN(envopts); i++) {
|
||||||
VALUE pair = RARRAY_AREF(envopts, i);
|
VALUE pair = RARRAY_AREF(envopts, i);
|
||||||
VALUE key = RARRAY_AREF(pair, 0);
|
VALUE key = RARRAY_AREF(pair, 0);
|
||||||
VALUE val = RARRAY_AREF(pair, 1);
|
VALUE val = RARRAY_AREF(pair, 1);
|
||||||
if (NIL_P(val)) {
|
if (NIL_P(val)) {
|
||||||
st_data_t stkey = (st_data_t)key;
|
st_data_t stkey = (st_data_t)key;
|
||||||
st_delete(stenv, &stkey, NULL);
|
st_delete(stenv, &stkey, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
st_insert(stenv, (st_data_t)key, (st_data_t)val);
|
st_insert(stenv, (st_data_t)key, (st_data_t)val);
|
||||||
|
OBJ_WRITTEN(envtbl, Qundef, key);
|
||||||
|
OBJ_WRITTEN(envtbl, Qundef, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
envp_buf = rb_str_buf_new(0);
|
envp_buf = rb_str_buf_new(0);
|
||||||
hide_obj(envp_buf);
|
hide_obj(envp_buf);
|
||||||
st_foreach(RHASH_TBL(envtbl), fill_envp_buf_i, (st_data_t)envp_buf);
|
st_foreach(RHASH_TBL_RAW(envtbl), fill_envp_buf_i, (st_data_t)envp_buf);
|
||||||
envp_str = rb_str_buf_new(sizeof(char*) * (RHASH_SIZE(envtbl) + 1));
|
envp_str = rb_str_buf_new(sizeof(char*) * (RHASH_SIZE(envtbl) + 1));
|
||||||
hide_obj(envp_str);
|
hide_obj(envp_str);
|
||||||
p = RSTRING_PTR(envp_buf);
|
p = RSTRING_PTR(envp_buf);
|
||||||
|
|
4
vm.c
4
vm.c
|
@ -2212,7 +2212,7 @@ static int
|
||||||
kwmerge_i(VALUE key, VALUE value, VALUE hash)
|
kwmerge_i(VALUE key, VALUE value, VALUE hash)
|
||||||
{
|
{
|
||||||
if (!SYMBOL_P(key)) Check_Type(key, T_SYMBOL);
|
if (!SYMBOL_P(key)) Check_Type(key, T_SYMBOL);
|
||||||
if (st_update(RHASH_TBL(hash), key, kwmerge_ii, (st_data_t)value) == 0) { /* !existing */
|
if (st_update(RHASH_TBL_RAW(hash), key, kwmerge_ii, (st_data_t)value) == 0) { /* !existing */
|
||||||
OBJ_WRITTEN(hash, Qundef, value);
|
OBJ_WRITTEN(hash, Qundef, value);
|
||||||
}
|
}
|
||||||
return ST_CONTINUE;
|
return ST_CONTINUE;
|
||||||
|
@ -2675,7 +2675,7 @@ VALUE rb_insn_operand_intern(rb_iseq_t *iseq,
|
||||||
|
|
||||||
#if VM_COLLECT_USAGE_DETAILS
|
#if VM_COLLECT_USAGE_DETAILS
|
||||||
|
|
||||||
#define HASH_ASET(h, k, v) st_insert(RHASH_TBL(h), (st_data_t)(k), (st_data_t)(v))
|
#define HASH_ASET(h, k, v) rb_hash_aset((h), (st_data_t)(k), (st_data_t)(v))
|
||||||
|
|
||||||
/* uh = {
|
/* uh = {
|
||||||
* insn(Fixnum) => ihash(Hash)
|
* insn(Fixnum) => ihash(Hash)
|
||||||
|
|
Loading…
Reference in a new issue