// NB: when this returns, the Debugger class no longer has any references to the // given proxy. It will likely be destroyed when the caller's reference goes out // of scope. void Debugger::removeProxy(DebuggerProxyPtr proxy) { TRACE(2, "Debugger::removeProxy\n"); if (proxy->getSandbox().valid()) { const StringData* sid = makeStaticString(proxy->getSandboxId()); setDebuggerFlag(sid, false); m_proxyMap.erase(sid); } const StringData* dummySid = makeStaticString(proxy->getDummyInfo().id()); m_proxyMap.erase(dummySid); // Clear the debugger blacklist PC upon last detach if JIT is used if (RuntimeOption::EvalJit && countConnectedProxy() == 0) { jit::clearDbgBL(); } if (countConnectedProxy() == 0) { auto instance = HphpdHook::GetInstance(); DebuggerHook::setActiveDebuggerInstance(instance, false); } }
void Debugger::removeProxy(DebuggerProxyPtr proxy) { if (proxy->getSandbox().valid()) { const StringData* sid = StringData::GetStaticString(proxy->getSandboxId()); setDebuggerFlag(sid, false); m_proxyMap.erase(sid); } const StringData* dummySid = StringData::GetStaticString(proxy->getDummyInfo().id()); m_proxyMap.erase(dummySid); // Clear the debugger blacklist PC upon last detach if JIT is used if (RuntimeOption::EvalJit && countConnectedProxy() == 0) { VM::Transl::Translator::Get()->clearDbgBL(); } }
// NB: when this returns, the Debugger class no longer has any references to the // given proxy. It will likely be destroyed when the caller's reference goes out // of scope. void Debugger::removeProxy(DebuggerProxyPtr proxy) { TRACE(2, "Debugger::removeProxy\n"); if (proxy->getSandbox().valid()) { const StringData* sid = makeStaticString(proxy->getSandboxId()); setDebuggerFlag(sid, false); m_proxyMap.erase(sid); } const StringData* dummySid = makeStaticString(proxy->getDummyInfo().id()); m_proxyMap.erase(dummySid); // Clear the debugger blacklist PC upon last detach if JIT is used if (RuntimeOption::EvalJit && countConnectedProxy() == 0) { JIT::mcg->tx().clearDbgBL(); } }