% # Copyright (c) 2018 Takashi Kokubun. All rights reserved. % # % # This file is a part of the programming language Ruby. Permission is hereby % # granted, to either redistribute and/or modify this file, provided that the % # conditions mentioned in the file COPYING are met. Consult the file for % # details. % % # JIT: Move pc so that catch table lookup condition is met. If the ISeq might not catch an exception, % # the pc motion is optimized away and thus pc should be set properly before `goto cancel`. if (body->catch_except_p) { fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", next_pos); /* ADD_PC(INSN_ATTR(width)); */ } % % # JIT: move sp to use or preserve stack variables fprintf(f, " reg_cfp->sp = (VALUE *)reg_cfp->bp + %d;\n", b->stack_size + 1 - <%= insn.pops.size %>); /* POPN(INSN_ATTR(popn)); */