From 960e8a419f9bbf4b48f534c66972e833d56e8289 Mon Sep 17 00:00:00 2001 From: shugo Date: Sat, 6 Oct 2012 09:36:35 +0000 Subject: [PATCH] * vm_opts.h (OPT_GLOBAL_METHOD_CACHE): new build option to enable/disable global method caching. [ruby-dev:46203] [Bug #7111] * vm_method.c (rb_method_entry_get_with_omod): don't use global method cache if OPT_GLOBAL_METHOD_CACHE is 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ vm_method.c | 2 ++ vm_opts.h | 1 + 3 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 95e720dce1..d65ffbb53d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Sat Oct 6 18:31:36 2012 Shugo Maeda + + * vm_opts.h (OPT_GLOBAL_METHOD_CACHE): new build option to + enable/disable global method caching. [ruby-dev:46203] [Bug #7111] + + * vm_method.c (rb_method_entry_get_with_omod): don't use global + method cache if OPT_GLOBAL_METHOD_CACHE is 0. + Sat Oct 6 16:32:04 2012 Shugo Maeda * vm_method.c (search_method): check omod only once for performance. diff --git a/vm_method.c b/vm_method.c index c5b33caa58..51724bc248 100644 --- a/vm_method.c +++ b/vm_method.c @@ -497,6 +497,7 @@ rb_method_entry_t * rb_method_entry_get_with_omod(VALUE omod, VALUE klass, ID id, VALUE *defined_class_ptr) { +#if OPT_GLOBAL_METHOD_CACHE struct cache_entry *ent; ent = cache + EXPR1(klass, omod, id); @@ -506,6 +507,7 @@ rb_method_entry_get_with_omod(VALUE omod, VALUE klass, ID id, *defined_class_ptr = ent->defined_class; return ent->me; } +#endif return rb_method_entry_get_without_cache(klass, omod, id, defined_class_ptr); diff --git a/vm_opts.h b/vm_opts.h index 9e357f4c40..4f7162d1b4 100644 --- a/vm_opts.h +++ b/vm_opts.h @@ -37,6 +37,7 @@ /* VM running option */ #define OPT_CHECKED_RUN 1 #define OPT_INLINE_METHOD_CACHE 1 +#define OPT_GLOBAL_METHOD_CACHE 1 #define OPT_BLOCKINLINING 0 /* architecture independent, affects generated code */