コード例 #1
0
ファイル: vasm-internal.cpp プロジェクト: DerPapst/hhvm
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);
}
コード例 #2
0
ファイル: vasm-internal.cpp プロジェクト: LouisRenWeiWei/hhvm
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);
}
コード例 #3
0
ファイル: vasm-internal.cpp プロジェクト: KOgames/hhvm
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);
}