1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00

MultiDictionary hotswap fix

This commit is contained in:
Brian Fiete 2024-12-31 07:45:16 -08:00
parent 23d4d35a73
commit 4f0ad540a7
4 changed files with 92 additions and 23 deletions

View file

@ -5408,8 +5408,8 @@ void DbgModule::HotReplaceMethods(DbgType* newType, DbgType* primaryType)
return;
auto symInfo = mDebugTarget->mSymbolMap.Get(oldMethod->mBlock.mLowPC);
if (symInfo != NULL)
{
oldProgramMap.Add(StringView(symInfo->mName), oldMethod);
{
oldProgramMap.Add(StringView(symInfo->mName), oldMethod);
}
};
@ -5531,16 +5531,17 @@ void DbgModule::HotReplaceMethods(DbgType* newType, DbgType* primaryType)
{
bool didReplace = false;
if (!newMethod->mBlock.IsEmpty())
{
BfLogDbg("Hot added new method %p %s Address:%p\n", newMethod, newMethod->mName, newMethod->mBlock.mLowPC);
{
newMethod->PopulateSubprogram();
auto symInfo = mDebugTarget->mSymbolMap.Get(newMethod->mBlock.mLowPC);
BfLogDbg("Hot added new method %p %s Address:%p Sym:%s\n",
newMethod, newMethod->mName, newMethod->mBlock.mLowPC,
(symInfo != NULL) ? symInfo->mName : "???");
if (symInfo != NULL)
{
DbgSubprogram* oldMethod = NULL;
for (auto itr = oldProgramMap.TryGet(StringView(symInfo->mName)); itr != oldProgramMap.end(); ++itr)
for (auto itr = oldProgramMap.TryGet(StringView(symInfo->mName)); itr != oldProgramMap.end(); ++itr)
{
auto oldMethod = itr.GetValue();
_HotJump(oldMethod, newMethod);