1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Improve ec assertions.

This commit is contained in:
Samuel Williams 2019-07-19 14:54:31 +12:00
parent 63160a84b4
commit 6eef80d824
No known key found for this signature in database
GPG key ID: A0765423A44728FB
2 changed files with 7 additions and 17 deletions

8
cont.c
View file

@ -759,14 +759,6 @@ fiber_verify(const rb_fiber_t *fiber)
#endif #endif
} }
#if VM_CHECK_MODE > 0
void
rb_ec_verify(const rb_execution_context_t *ec)
{
/* TODO */
}
#endif
inline static void inline static void
fiber_status_set(rb_fiber_t *fiber, enum fiber_status s) fiber_status_set(rb_fiber_t *fiber, enum fiber_status s)
{ {

16
vm.c
View file

@ -2443,6 +2443,8 @@ rb_execution_context_update(const rb_execution_context_t *ec)
{ {
/* update VM stack */ /* update VM stack */
if (ec->vm_stack) { if (ec->vm_stack) {
VM_ASSERT(ec->cfp);
rb_control_frame_t *cfp = ec->cfp; rb_control_frame_t *cfp = ec->cfp;
rb_control_frame_t *limit_cfp = (void *)(ec->vm_stack + ec->vm_stack_size); rb_control_frame_t *limit_cfp = (void *)(ec->vm_stack + ec->vm_stack_size);
@ -2461,23 +2463,17 @@ rb_execution_context_update(const rb_execution_context_t *ec)
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp); cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
} }
} else {
VM_ASSERT(!ec->cfp);
} }
#if VM_CHECK_MODE > 0
void rb_ec_verify(const rb_execution_context_t *ec); /* cont.c */
rb_ec_verify(ec);
#endif
} }
void void
rb_execution_context_mark(const rb_execution_context_t *ec) rb_execution_context_mark(const rb_execution_context_t *ec)
{ {
#if VM_CHECK_MODE > 0
void rb_ec_verify(const rb_execution_context_t *ec); /* cont.c */
rb_ec_verify(ec);
#endif
/* mark VM stack */ /* mark VM stack */
if (ec->vm_stack) { if (ec->vm_stack) {
VM_ASSERT(ec->cfp);
VALUE *p = ec->vm_stack; VALUE *p = ec->vm_stack;
VALUE *sp = ec->cfp->sp; VALUE *sp = ec->cfp->sp;
rb_control_frame_t *cfp = ec->cfp; rb_control_frame_t *cfp = ec->cfp;
@ -2501,6 +2497,8 @@ rb_execution_context_mark(const rb_execution_context_t *ec)
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp); cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
} }
} else {
VM_ASSERT(!ec->cfp);
} }
/* mark machine stack */ /* mark machine stack */