diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-23 01:43:39 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-23 01:43:39 +0000 |
| commit | 02fa3456cee3f424230ff29cbf8f0415c381c9ba (patch) | |
| tree | 3529fba31d19558e82ff57056ef44907597cf55b | |
| parent | 83d1fdeee57fe1bcd72a78c8146eacafd9e51bef (diff) | |
vm_insnhelper.c: vm_stack_consistency_error
* vm_insnhelper.c (vm_stack_consistency_error): extracted from
insns.def for further info in the future.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59149 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | insns.def | 3 | ||||
| -rw-r--r-- | vm_insnhelper.c | 16 |
2 files changed, 17 insertions, 2 deletions
@@ -913,8 +913,7 @@ leave if (OPT_CHECKED_RUN) { const VALUE *const bp = vm_base_ptr(reg_cfp); if (reg_cfp->sp != bp) { - rb_bug("Stack consistency error (sp: %"PRIdPTRDIFF", bp: %"PRIdPTRDIFF")", - VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, bp)); + vm_stack_consistency_error(th, reg_cfp, bp); } } diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 83ebe37124..9aaf881a2e 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -3297,6 +3297,22 @@ vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key) return 0; } +NORETURN(static void + vm_stack_consistency_error(rb_thread_t *, + const rb_control_frame_t *, + const VALUE *)); +static void +vm_stack_consistency_error(rb_thread_t *th, + const rb_control_frame_t *cfp, + const VALUE *bp) +{ + const ptrdiff_t nsp = VM_SP_CNT(th, cfp->sp); + const ptrdiff_t nbp = VM_SP_CNT(th, bp); + static const char stack_consistency_error[] = + "Stack consistency error (sp: %"PRIdPTRDIFF", bp: %"PRIdPTRDIFF")"; + rb_bug(stack_consistency_error, nsp, nbp); +} + enum binop_operands_type { bot_others = 0, bot_fixnum, |
