void operator()() { auto codeLock = mcg->lockCode(); for (auto& e : entries) { CodeBlock cb; cb.init(e.first, e.second - e.first, "relocated"); X64Assembler a { cb }; while (a.canEmit(2)) { a.ud2(); } if (a.canEmit(1)) a.int3(); } okToRelocate = true; }
void operator()() { LeaseHolder writer(Translator::WriteLease()); if (!writer) { Treadmill::enqueue(std::move(*this)); return; } for (auto& e : entries) { CodeBlock cb; cb.init(e.first, e.second - e.first, "relocated"); X64Assembler a { cb }; while (a.canEmit(2)) { a.ud2(); } if (a.canEmit(1)) a.int3(); } okToRelocate = true; }