1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2025-02-01 04:51:49 +01:00

LLVM: fix cancellation

This commit is contained in:
Nekotekina 2017-06-25 15:16:07 +03:00
parent e5ae32e5f3
commit 9738ce0cf6

View File

@ -476,7 +476,7 @@ void ppu_thread::exec_task()
{
if (g_cfg.core.ppu_decoder == ppu_decoder_type::llvm)
{
while (!test(state, cpu_flag::ret + cpu_flag::exit + cpu_flag::stop))
while (!test(state, cpu_flag::ret + cpu_flag::exit + cpu_flag::stop + cpu_flag::dbg_global_stop))
{
reinterpret_cast<ppu_function_t>(static_cast<std::uintptr_t>(ppu_ref(cia)))(*this);
}
@ -1165,14 +1165,10 @@ extern void ppu_initialize(const ppu_module& info)
part.name += info.name;
}
if (fstart)
if (fstart || fpos < info.funcs.size())
{
fmt::append(part.name, "+%06X", info.funcs.at(fstart).addr);
}
else if (fpos < info.funcs.size())
{
part.name.append("+0");
}
// Compute module hash
std::string obj_name;
@ -1245,6 +1241,11 @@ extern void ppu_initialize(const ppu_module& info)
ppu_initialize2(jit2, part, Emu.GetCachePath(), obj_name);
}
if (Emu.IsStopped())
{
return;
}
// Proceed with original JIT instance
semaphore_lock lock(jmutex);
ppu_initialize2(jit, part, Emu.GetCachePath(), obj_name);
@ -1257,6 +1258,11 @@ extern void ppu_initialize(const ppu_module& info)
thread.join();
}
if (Emu.IsStopped())
{
return;
}
jit.fin();
// Get and install function addresses