mrb_stack_extend_adjust(mrb_state *mrb, mrb_int room, const mrb_value **argp)
{
  const struct mrb_context *c = mrb->c;
  ptrdiff_t voff = *argp - c->stbase;

  if (voff < 0 || voff >= c->stend - c->stbase) {
    mrb_stack_extend(mrb, room);
  }
  else {
    mrb_stack_extend(mrb, room);
    *argp = c->stbase + voff;
  }
}
mrb_stack_extend_adjust(mrb_state *mrb, mrb_int room, const mrb_value **argp)
{
  const struct mrb_context *c = mrb->c;
  ptrdiff_t voff = *argp - c->stbase;

  if (voff < 0 || voff >= c->stend - c->stbase) {
    mrb_stack_extend(mrb, room);
  }
  else {
    mrb_stack_extend(mrb, room);
    *argp = c->stbase + voff;
  }
}