@@ -360,9 +360,7 @@ IMDInternalImport * CordbProcess::LookupMetaData(VMPTR_PEAssembly vmPEAssembly)
360360 }
361361
362362 // Cache didn't have it... time to search harder
363- VMPTR_AppDomain vmAppDomain;
364- GetDAC()->GetCurrentAppDomain(&vmAppDomain);
365- LookupOrCreateAppDomain(vmAppDomain);
363+ GetAppDomain();
366364
367365 // There may be perf issues here. The DAC may make a lot of metadata requests, and so
368366 // this may be an area for potential perf optimizations if we find things running slow.
@@ -2638,28 +2636,22 @@ COM_METHOD CordbProcess::GetAsyncStack(CORDB_ADDRESS continuationAddress, ICorDe
26382636
26392637HRESULT CordbProcess::GetTypeForObject(CORDB_ADDRESS addr, CordbType **ppType, CordbAppDomain **pAppDomain)
26402638{
2641- VMPTR_AppDomain appDomain = VMPTR_AppDomain::NullPtr();
2642-
26432639 HRESULT hr = E_FAIL;
2644- IfFailThrow(GetDAC()->GetCurrentAppDomain(&appDomain));
2645- if (!appDomain.IsNull())
2646- {
2647- CordbAppDomain *cdbAppDomain = appDomain.IsNull() ? GetAppDomain() : LookupOrCreateAppDomain(appDomain);
2640+ CordbAppDomain *cdbAppDomain = GetAppDomain();
26482641
2649- _ASSERTE(cdbAppDomain);
2642+ _ASSERTE(cdbAppDomain);
26502643
2651- DebuggerIPCE_ExpandedTypeData data;
2652- IfFailThrow(GetDAC()->GetObjectExpandedTypeInfo(AllBoxed, addr, &data));
2644+ DebuggerIPCE_ExpandedTypeData data;
2645+ IfFailThrow(GetDAC()->GetObjectExpandedTypeInfo(AllBoxed, addr, &data));
26532646
2654- CordbType *type = 0;
2655- hr = CordbType::TypeDataToType(cdbAppDomain, &data, &type);
2647+ CordbType *type = 0;
2648+ hr = CordbType::TypeDataToType(cdbAppDomain, &data, &type);
26562649
2657- if (SUCCEEDED(hr))
2658- {
2659- *ppType = type;
2660- if (pAppDomain)
2661- *pAppDomain = cdbAppDomain;
2662- }
2650+ if (SUCCEEDED(hr))
2651+ {
2652+ *ppType = type;
2653+ if (pAppDomain)
2654+ *pAppDomain = cdbAppDomain;
26632655 }
26642656
26652657 return hr;
@@ -2797,7 +2789,7 @@ HRESULT CordbRefEnum::Next(ULONG celt, COR_GC_REFERENCE refs[], ULONG *pceltFetc
27972789 {
27982790 for (ULONG i = 0; i < fetched; ++i)
27992791 {
2800- CordbAppDomain *pDomain = process->LookupOrCreateAppDomain(dacRefs[i].vmDomain );
2792+ CordbAppDomain *pDomain = process->GetAppDomain( );
28012793
28022794 ICorDebugAppDomain *pAppDomain = NULL;
28032795 ICorDebugValue *pOutObject = NULL;
@@ -4870,10 +4862,7 @@ void CordbProcess::RawDispatchEvent(
48704862 pThread = LookupOrCreateThread(pEvent->vmThread);
48714863 }
48724864
4873- if (!pEvent->vmAppDomain.IsNull())
4874- {
4875- pAppDomain.Assign(LookupOrCreateAppDomain(pEvent->vmAppDomain));
4876- }
4865+ pAppDomain.Assign(GetAppDomain());
48774866
48784867 DWORD dwVolatileThreadId = 0;
48794868 if (pThread != NULL)
@@ -5386,7 +5375,7 @@ void CordbProcess::RawDispatchEvent(
53865375 // Either way, still send the CreateEvent. (We don't want to skip the Create event
53875376 // just because the debugger did an enumerate)
53885377 // We remove AppDomains from the hash as soon as they are exited.
5389- pAppDomain.Assign(LookupOrCreateAppDomain(pEvent->AppDomainData.vmAppDomain ));
5378+ pAppDomain.Assign(GetAppDomain( ));
53905379 _ASSERTE(pAppDomain != NULL); // throws on failure
53915380
53925381 {
@@ -5461,7 +5450,7 @@ void CordbProcess::RawDispatchEvent(
54615450 pEval->m_resultType = pEvent->FuncEvalComplete.resultType;
54625451 pEval->m_resultAppDomainToken = pEvent->FuncEvalComplete.vmAppDomain;
54635452
5464- CordbAppDomain *pResultAppDomain = LookupOrCreateAppDomain(pEvent->FuncEvalComplete.vmAppDomain );
5453+ CordbAppDomain *pResultAppDomain = GetAppDomain( );
54655454
54665455 _ASSERTE(OutstandingEvalCount() > 0);
54675456 DecrementOutstandingEvalCount();
@@ -5531,7 +5520,7 @@ void CordbProcess::RawDispatchEvent(
55315520 else
55325521 {
55335522 _ASSERTE (pEvent->NameChange.eventType == APP_DOMAIN_NAME_CHANGE);
5534- pAppDomain.Assign(LookupOrCreateAppDomain(pEvent->NameChange.vmAppDomain ));
5523+ pAppDomain.Assign(GetAppDomain( ));
55355524 if (pAppDomain)
55365525 {
55375526 pAppDomain->InvalidateName();
@@ -8559,33 +8548,6 @@ HRESULT CordbProcess::SafeReadBuffer(TargetBuffer tb, BYTE * pLocalBuffer, BOOL
85598548 return S_OK;
85608549}
85618550
8562-
8563- //---------------------------------------------------------------------------------------
8564- // Lookup or create an appdomain.
8565- //
8566- // Arguments:
8567- // vmAppDomain - CLR appdomain to lookup
8568- //
8569- // Returns:
8570- // Instance of CordbAppDomain for the given appdomain. This is a cached instance.
8571- // If the CordbAppDomain does not yet exist, it will be created and added to the cache.
8572- // Never returns NULL. Throw on error.
8573- CordbAppDomain * CordbProcess::LookupOrCreateAppDomain(VMPTR_AppDomain vmAppDomain)
8574- {
8575- if (m_pAppDomain == NULL)
8576- {
8577- _ASSERTE(GetProcessLock()->HasLock());
8578-
8579- RSInitHolder<CordbAppDomain> pAppDomain;
8580- pAppDomain.Assign(new CordbAppDomain(this, vmAppDomain)); // throws
8581-
8582- m_pAppDomain = pAppDomain;
8583- m_pAppDomain->InternalAddRef();
8584- pAppDomain.ClearAndMarkDontNeuter();
8585- }
8586- return m_pAppDomain;
8587- }
8588-
85898551CordbAppDomain * CordbProcess::GetAppDomain()
85908552{
85918553 // Return the one and only app domain
@@ -8594,10 +8556,17 @@ CordbAppDomain * CordbProcess::GetAppDomain()
85948556 return m_pAppDomain;
85958557 }
85968558
8559+ _ASSERTE(GetProcessLock()->HasLock());
8560+
85978561 VMPTR_AppDomain vmAppDomain;
85988562 IfFailThrow(GetDAC()->GetCurrentAppDomain(&vmAppDomain));
8599- CordbAppDomain * appDomain = LookupOrCreateAppDomain(vmAppDomain);
8600- return appDomain;
8563+ RSInitHolder<CordbAppDomain> pAppDomain;
8564+ pAppDomain.Assign(new CordbAppDomain(this, vmAppDomain)); // throws
8565+
8566+ m_pAppDomain = pAppDomain;
8567+ m_pAppDomain->InternalAddRef();
8568+ pAppDomain.ClearAndMarkDontNeuter();
8569+ return m_pAppDomain;
86018570}
86028571
86038572//---------------------------------------------------------------------------------------
@@ -8625,9 +8594,7 @@ HRESULT CordbProcess::EnumerateAppDomains(ICorDebugAppDomainEnum **ppAppDomains)
86258594 ValidateOrThrow(ppAppDomains);
86268595
86278596 // Ensure the appdomain is populated.
8628- VMPTR_AppDomain vmAppDomain;
8629- GetDAC()->GetCurrentAppDomain(&vmAppDomain);
8630- LookupOrCreateAppDomain(vmAppDomain);
8597+ GetAppDomain();
86318598
86328599 RSSmartPtr<CordbAppDomain> rgAppDomains[1];
86338600 DWORD count = 0;
@@ -15082,11 +15049,9 @@ HRESULT CordbProcess::GetReferenceValueFromGCHandle(
1508215049 {
1508315050 ThrowHR(CORDBG_E_BAD_REFERENCE_VALUE);
1508415051 }
15085- VMPTR_AppDomain vmAppDomain;
15086- IfFailThrow(pDAC->GetCurrentAppDomain(&vmAppDomain));
1508715052
1508815053 RSLockHolder lockHolder(GetProcessLock());
15089- CordbAppDomain * pAppDomain = LookupOrCreateAppDomain(vmAppDomain );
15054+ CordbAppDomain * pAppDomain = GetAppDomain( );
1509015055 lockHolder.Release();
1509115056
1509215057 // Now that we finally have the AppDomain, we can go ahead and get a ReferenceValue
0 commit comments