diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-23 11:01:02 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-01-23 11:01:02 +0000 |
commit | e567f351c287dcfdf1c25518cca140d661c01985 (patch) | |
tree | 4e464e9dbc9e001c5f4fab5b9a65dafca26ae9e1 /marshal.c | |
parent | bb7830c7d4026d3f9022bc3046c8591b5f9221ae (diff) |
marshal.c: indetity tables
* marshal.c (w_object, marshal_dump): use indetity tables for
arbitrary VALUE keys, because of performance of FLONUM.
[Bug #10761]
* marshal.c (obj_alloc_by_klass, marshal_load): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49389 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'marshal.c')
-rw-r--r-- | marshal.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -748,7 +748,7 @@ w_object(VALUE obj, struct dump_arg *arg, int limit) VALUE real_obj = obj; obj = compat->dumper(real_obj); if (!arg->compat_tbl) { - arg->compat_tbl = st_init_numtable(); + arg->compat_tbl = rb_init_identtable(); } st_insert(arg->compat_tbl, (st_data_t)obj, (st_data_t)real_obj); if (obj != real_obj && !ivtbl) hasiv = 0; @@ -997,7 +997,7 @@ marshal_dump(int argc, VALUE *argv) wrapper = TypedData_Make_Struct(rb_cData, struct dump_arg, &dump_arg_data, arg); arg->dest = 0; arg->symbols = st_init_numtable(); - arg->data = st_init_numtable(); + arg->data = rb_init_identtable(); arg->infection = 0; arg->compat_tbl = 0; arg->encodings = 0; @@ -1507,7 +1507,7 @@ obj_alloc_by_klass(VALUE klass, struct load_arg *arg, VALUE *oldclass) if (oldclass) *oldclass = compat->oldclass; if (!arg->compat_tbl) { - arg->compat_tbl = st_init_numtable(); + arg->compat_tbl = rb_init_identtable(); } st_insert(arg->compat_tbl, (st_data_t)obj, (st_data_t)real_obj); return obj; @@ -2016,7 +2016,7 @@ marshal_load(int argc, VALUE *argv) arg->src = port; arg->offset = 0; arg->symbols = st_init_numtable(); - arg->data = st_init_numtable(); + arg->data = rb_init_identtable(); arg->compat_tbl = 0; arg->proc = 0; arg->readable = 0; |