summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-08 02:57:39 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-09-08 02:57:39 +0000
commita31c632299b72cd9e4ff53cec6d7b56f1f8a54f7 (patch)
tree41e34ef0a04b01d6d0d26ca0a71e91aed4c7bd6a /insns.def
parent922bc54adb2b1cbcc14edc93a37f626c7a784a02 (diff)
* iseq.c (iseq_mark): no need to mark inline cache entries.
* insns.def (onceinlinecache, setinlinecache): save a value to mark cached value. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def4
1 files changed, 4 insertions, 0 deletions
diff --git a/insns.def b/insns.def
index 426f101632..4acbcef1cb 100644
--- a/insns.def
+++ b/insns.def
@@ -1200,6 +1200,7 @@ onceinlinecache
}
else {
/* none */
+ ic->ic_value = Qundef;
val = Qnil;
}
}
@@ -1217,6 +1218,9 @@ setinlinecache
{
IC ic = GET_CONST_INLINE_CACHE(dst);
+ if (ic->ic_value == Qundef) {
+ rb_ary_push(GET_ISEQ()->mark_ary, val);
+ }
ic->ic_value = val;
ic->ic_vmstat = GET_VM_STATE_VERSION() - ruby_vm_const_missing_count;
ruby_vm_const_missing_count = 0;