Пример #1
0
void cgDbgTrashFrame(IRLS& env, const IRInstruction* inst) {
  auto const fp = srcLoc(env, inst, 0).reg();
  auto const off = cellsToBytes(inst->extra<DbgTrashFrame>()->offset.offset);
  for (auto i = 0; i < kNumActRecCells; ++i) {
    trashTV(vmain(env), fp, off + cellsToBytes(i), kTVTrashJITFrame);
  }
}
Пример #2
0
void cgInlineReturnNoFrame(IRLS& env, const IRInstruction* inst) {
  auto& v = vmain(env);

  if (RuntimeOption::EvalHHIRGenerateAsserts) {
    auto const extra = inst->extra<InlineReturnNoFrame>();
    auto const offset = cellsToBytes(extra->offset.offset);
    for (auto i = 0; i < kNumActRecCells; ++i) {
      trashTV(v, rvmfp(), offset - cellsToBytes(i), kTVTrashJITFrame);
    }
  }

  v << inlineend{};
}
Пример #3
0
void cgDbgTrashMem(IRLS& env, const IRInstruction* inst) {
  auto const ptr = srcLoc(env, inst, 0).reg();
  trashTV(vmain(env), ptr, 0, kTVTrashJITHeap);
}
Пример #4
0
void cgDbgTrashStk(IRLS& env, const IRInstruction* inst) {
  auto const sp = srcLoc(env, inst, 0).reg();
  auto const off = cellsToBytes(inst->extra<DbgTrashStk>()->offset.offset);
  trashTV(vmain(env), sp, off, kTVTrashJITStk);
}