summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-07 11:13:57 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-07 11:13:57 +0000
commit0d1a905edb43fe9260302b286d04cec66f7c4416 (patch)
treefdb10453a3e6c04d81a535a4439f2f868f2c2fd6 /insns.def
parentfca3c408a72cc11bb065bf253bfe00dde4f92b9e (diff)
* vm_exec.c, insns.def (leave): solve problems on
OPT_CALL_THREADED_CODE. Catch up finish frame structure on OPT_CALL_THREADED_CODE. * vm_core.h: add rb_thread_t#retval for temporary space on OPT_CALL_THREADED_CODE. * vm.c (th_init): clear rb_thread_t#retval as Qundef. * vm_dump.c (rb_vmdebug_debug_print_pre): fix debug print format. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def6
1 files changed, 4 insertions, 2 deletions
diff --git a/insns.def b/insns.def
index b616368992..12cbed730d 100644
--- a/insns.def
+++ b/insns.def
@@ -1116,10 +1116,12 @@ leave
RUBY_VM_CHECK_INTS(th);
if (UNLIKELY(VM_FRAME_TYPE_FINISH_P(GET_CFP()))) {
+ vm_pop_frame(th);
+
#if OPT_CALL_THREADED_CODE
- rb_bug("unused instruction on OPT_CALL_THREADED_CODE");
+ th->retval = val;
+ return 0;
#else
- vm_pop_frame(th);
return val;
#endif
}