void register_catch_block(const Venv& env, const Venv::LabelPatch& p) { // If the catch block is empty, we can just let tc_unwind_resume() and // tc_unwind_personality() skip over our frame. if (is_empty_catch(env.unit.blocks[p.target])) return; auto const catch_target = env.addrs[p.target]; assertx(catch_target); env.meta.catches.emplace_back(p.instr, catch_target); }
void register_catch_block(const Venv& env, const Venv::LabelPatch& p) { bool const is_empty = is_empty_catch(env.unit.blocks[p.target]); auto const catch_target = is_empty ? mcg->ustubs().endCatchHelper : env.addrs[p.target]; assertx(catch_target); env.meta.catches.emplace_back(p.instr, catch_target); }
void register_catch_block(const Venv& env, const Venv::LabelPatch& p) { bool const is_empty = is_empty_catch(env.unit.blocks[p.target]); auto const catch_target = is_empty ? mcg->tx().uniqueStubs.endCatchHelper : env.addrs[p.target]; assertx(catch_target); mcg->registerCatchBlock(p.instr, catch_target); }