aboutsummaryrefslogtreecommitdiffstats
path: root/vm_method.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-17 23:29:54 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-08-18 00:34:12 +0900
commit1d11a8b1938d3310d6b573c2feb173661a82b6a6 (patch)
tree0bf7f69bd3c95593c6fdc4de74fbe420d8cb79bd /vm_method.c
parent6db3051fcc08440fb1d80617dae90ae3f97db95c (diff)
downloadruby-1d11a8b1938d3310d6b573c2feb173661a82b6a6.tar.gz
Ensure non-OPT_GLOBAL_METHOD_CACHE code valid
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/vm_method.c b/vm_method.c
index 0bc32ad36f..d5ebaa4d4c 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -803,8 +803,8 @@ verify_method_cache(VALUE klass, ID id, VALUE defined_class, rb_method_entry_t *
static rb_method_entry_t *
method_entry_get(VALUE klass, ID id, VALUE *defined_class_ptr)
{
-#if OPT_GLOBAL_METHOD_CACHE
struct cache_entry *ent;
+ if (!OPT_GLOBAL_METHOD_CACHE) goto nocache;
ent = GLOBAL_METHOD_CACHE(klass, id);
if (ent->method_state == GET_GLOBAL_METHOD_STATE() &&
ent->class_serial == RCLASS_SERIAL(klass) &&
@@ -814,8 +814,8 @@ method_entry_get(VALUE klass, ID id, VALUE *defined_class_ptr)
RB_DEBUG_COUNTER_INC(mc_global_hit);
return ent->me;
}
-#endif
+ nocache:
RB_DEBUG_COUNTER_INC(mc_global_miss);
return method_entry_get_without_cache(klass, id, defined_class_ptr);
}
@@ -2090,7 +2090,7 @@ obj_respond_to_missing(VALUE obj, VALUE mid, VALUE priv)
void
Init_Method(void)
{
-#if OPT_GLOBAL_METHOD_CACHE
+ if (!OPT_GLOBAL_METHOD_CACHE) return;
char *ptr = getenv("RUBY_GLOBAL_METHOD_CACHE_SIZE");
int val;
@@ -2109,7 +2109,6 @@ Init_Method(void)
fprintf(stderr, "[FATAL] failed to allocate memory\n");
exit(EXIT_FAILURE);
}
-#endif
}
void