summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-27 14:06:16 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-27 14:06:16 +0000
commite59b9d35fcd58331928aa1f62fe48287b0c643e2 (patch)
treee324012271616d7cf18c00d7f66caa7ccb2d8943 /insns.def
parente02f7f79c23aaaf7c5878408a2b46b00f23c32ba (diff)
downloadbundler-e59b9d35fcd58331928aa1f62fe48287b0c643e2.tar.gz
* insns.def (onceinlinecache): add exclusion control for a region
between onceinlinecache and setinlinecache. [ruby-dev:39768] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def7
1 files changed, 7 insertions, 0 deletions
diff --git a/insns.def b/insns.def
index 95414656bc..ba6f1d6627 100644
--- a/insns.def
+++ b/insns.def
@@ -1199,10 +1199,17 @@ onceinlinecache
()
(VALUE val)
{
+ retry:
if (ic->ic_vmstat) {
val = ic->ic_value.value;
JUMP(dst);
}
+ else if (ic->ic_value.value == Qundef)
+ {
+ RUBY_VM_CHECK_INTS();
+ rb_thread_schedule();
+ goto retry;
+ }
else {
/* none */
ic->ic_value.value = Qundef;