コード例 #1
0
ファイル: func-prologue.cpp プロジェクト: swarooprath123/hhvm
TCA genFuncPrologue(TransID transID, Func* func, int argc) {
  auto context = prologue_context(transID, func,
                                  func->getEntryForNumArgs(argc));
  IRGS env{context, TransFlags{}};

  auto& cb = mcg->code.main();

  // Dump the func guard in the TC before anything else.
  emitFuncGuard(func, cb);
  auto const start = cb.frontier();

  irgen::emitFuncPrologue(env, argc, transID);
  irgen::sealUnit(env);
  genCode(env.unit, CodeKind::CrossTrace);

  return start;
}
コード例 #2
0
ファイル: func-prologue.cpp プロジェクト: BruceZu/hhvm
TCA genFuncPrologue(TransID transID, TransKind kind, Func* func, int argc,
                    CodeCache::View code, CGMeta& fixups) {
  auto context = prologue_context(transID, kind, func,
                                  func->getEntryForNumArgs(argc));
  IRUnit unit{context};
  irgen::IRGS env{unit};

  auto& cb = code.main();

  // Dump the func guard in the TC before anything else.
  emitFuncGuard(func, cb, fixups);
  auto const start = cb.frontier();

  irgen::emitFuncPrologue(env, argc, transID);
  irgen::sealUnit(env);

  irlower::genCode(env.unit, code, fixups, CodeKind::CrossTrace);

  return start;
}
コード例 #3
0
ファイル: vasm-internal.cpp プロジェクト: DerPapst/hhvm
bool emit(Venv& env, const funcguard& i) {
  emitFuncGuard(i.func, *env.cb, env.meta, i.watch);
  return true;
}