aboutsummaryrefslogtreecommitdiffstats
path: root/insns.def
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-10 16:54:47 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-10 16:54:47 +0000
commit3f58f034b62ef6d3150c1d04ad9ea69090846bf6 (patch)
treeba3749046e859a91710c9d1ae584e96c9659a30a /insns.def
parentfcbd41230f228af3a58c6ab53832a8988e760074 (diff)
downloadruby-3f58f034b62ef6d3150c1d04ad9ea69090846bf6.tar.gz
insns.def: cache nil const
* insns.def (getinlinecache): Qnil is a valid value as a constant. this can be observable when accessing a deprecated constant which is nil. non-nil constant is warned just once for each location, but every time if it is nil. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def7
1 files changed, 5 insertions, 2 deletions
diff --git a/insns.def b/insns.def
index fb5e83cc75..2c1f7d3198 100644
--- a/insns.def
+++ b/insns.def
@@ -951,10 +951,13 @@ getinlinecache
()
(VALUE val)
{
- val = vm_ic_hit_p(ic, GET_EP());
- if (val != Qnil) {
+ if (vm_ic_hit_p(ic, GET_EP())) {
+ val = ic->ic_value.value;
JUMP(dst);
}
+ else {
+ val = Qnil;
+ }
}
/* set inline cache */