diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-17 07:26:26 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-17 07:26:26 +0000 |
commit | 9e68d0dc03456fe6c074143c3b14aef3d4a7b565 (patch) | |
tree | 12c5b178a21d50e7c597623392fb30b46b34f803 | |
parent | 5a8c6a5c93a79bedb1b859461396ef2037aef18b (diff) | |
download | ruby-9e68d0dc03456fe6c074143c3b14aef3d4a7b565.tar.gz |
* insns.def (opt_case_dispatch): runtime value cannot be used as
an element initializer.
* vm_insnhelper.c (opt_case_dispatch_i): gets rid of type-punning
calls.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | insns.def | 6 | ||||
-rw-r--r-- | vm_insnhelper.c | 4 |
3 files changed, 12 insertions, 5 deletions
@@ -1,3 +1,10 @@ +Tue Nov 17 16:26:24 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * insns.def (opt_case_dispatch): runtime value cannot be used as + an element initializer. + + * vm_insnhelper.c (opt_case_dispatch_i): gets rid of type-punning + calls. Mon Nov 16 15:51:53 2009 Shugo Maeda <shugo@ruby-lang.org> * vm_insnhelper.c (vm_call_method): protected singleton methods of @@ -1247,10 +1247,10 @@ opt_case_dispatch } } else { - struct opt_case_dispatch_i_arg arg = { - key, -1 - }; + struct opt_case_dispatch_i_arg arg; + arg.obj = key; + arg.label = -1; st_foreach(RHASH_TBL(hash), opt_case_dispatch_i, (st_data_t)&arg); if (arg.label != -1) { diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 3654e39890..a05574f1db 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -1645,9 +1645,9 @@ struct opt_case_dispatch_i_arg { }; static int -opt_case_dispatch_i(st_data_t key, st_data_t data, void *p) +opt_case_dispatch_i(st_data_t key, st_data_t data, st_data_t p) { - struct opt_case_dispatch_i_arg *arg = p; + struct opt_case_dispatch_i_arg *arg = (void *)p; if (RTEST(rb_funcall((VALUE)key, idEqq, 1, arg->obj))) { arg->label = FIX2INT((VALUE)data); |