summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-09-28 04:05:36 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-09-28 04:05:36 +0000
commitd50483df23383caf098c23c25c133f4eefca5917 (patch)
treed2e94e5ec61e548687a0b67d06a0662063650a31 /insns.def
parent8124d67988ea5aa995f1721446c229a83a8b356d (diff)
* vm_core.h: remove rb_control_frame_t::bp (bp: base pointer).
`bp' can be calculate by `sp' (stack pointer) of previous frame. Now, `bp_check' field is remained for debug. You can eliminate this field by setting VM_DEBUG_BP_CHECK as 0. * vm_insnhelper.c (vm_base_ptr): add `vm_base_ptr(cfp). This function calculates base pointer from cfp. * vm_insnhelper.c (vm_setup_method): push `recv' value on top of value stack (before method parameters). This change is for keeping consistency with normal method dispatch. * insns.def: fix to use vm_base_ptr(). * vm.c (vm_exec): ditto. * vm_dump.c: remove `bp' related dumps. * cont.c (fiber_init): fix to check VM_DEBUG_BP_CHECK. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def8
1 files changed, 4 insertions, 4 deletions
diff --git a/insns.def b/insns.def
index 1dc4328d72..bbbac396be 100644
--- a/insns.def
+++ b/insns.def
@@ -1092,9 +1092,9 @@ leave
(VALUE val)
{
if (OPT_CHECKED_RUN) {
- if (reg_cfp->sp != reg_cfp->bp) {
+ if (reg_cfp->sp != vm_base_ptr(reg_cfp)) {
rb_bug("Stack consistency error (sp: %"PRIdPTRDIFF", bp: %"PRIdPTRDIFF")",
- VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, reg_cfp->bp));
+ VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, vm_base_ptr(reg_cfp)));
}
}
@@ -1316,8 +1316,8 @@ opt_checkenv
()
()
{
- if (GET_CFP()->bp != GET_EP() + 1) {
- VALUE *ep = GET_CFP()->bp - 1;
+ if (vm_base_ptr(reg_cfp) != GET_EP() + 1) {
+ VALUE *ep = vm_base_ptr(reg_cfp) - 1;
/* TODO: copy env and clean stack at creating env? */
*ep = *GET_EP();
SET_EP(ep);