From e59b9d35fcd58331928aa1f62fe48287b0c643e2 Mon Sep 17 00:00:00 2001
From: mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Tue, 27 Apr 2010 14:06:16 +0000
Subject: * 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
---
 insns.def | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'insns.def')

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;
-- 
cgit v1.2.3

