diff options
-rw-r--r-- | src/vm/appdomain.cpp | 3 | ||||
-rw-r--r-- | src/vm/comsynchronizable.cpp | 52 | ||||
-rw-r--r-- | src/vm/comsynchronizable.h | 7 | ||||
-rw-r--r-- | src/vm/ecalllist.h | 7 | ||||
-rw-r--r-- | src/vm/mscorlib.h | 12 | ||||
-rw-r--r-- | src/vm/object.h | 48 | ||||
-rw-r--r-- | src/vm/threads.cpp | 43 | ||||
-rw-r--r-- | src/vm/threads.h | 5 |
8 files changed, 0 insertions, 177 deletions
diff --git a/src/vm/appdomain.cpp b/src/vm/appdomain.cpp index e13c7dbe2a..975751e440 100644 --- a/src/vm/appdomain.cpp +++ b/src/vm/appdomain.cpp @@ -9947,9 +9947,6 @@ void AppDomain::ClearGCRoots() // Delete the thread local static store pThread->DeleteThreadStaticData(this); -#ifdef FEATURE_LEAK_CULTURE_INFO - pThread->ResetCultureForDomain(GetId()); -#endif // FEATURE_LEAK_CULTURE_INFO // <TODO>@TODO: A pre-allocated AppDomainUnloaded exception might be better.</TODO> if (m_hHandleTableBucket->Contains(pThread->m_LastThrownObjectHandle)) diff --git a/src/vm/comsynchronizable.cpp b/src/vm/comsynchronizable.cpp index 2c26a547cd..4c05f0eb68 100644 --- a/src/vm/comsynchronizable.cpp +++ b/src/vm/comsynchronizable.cpp @@ -1314,7 +1314,6 @@ void ThreadBaseObject::InitExisting() } -#ifndef FEATURE_LEAK_CULTURE_INFO OBJECTREF ThreadBaseObject::GetManagedThreadCulture(BOOL bUICulture) { CONTRACTL { @@ -1430,7 +1429,6 @@ void ThreadBaseObject::ResetManagedThreadCulture(BOOL bUICulture) } } -#endif // FEATURE_LEAK_CULTURE_INFO FCIMPL1(void, ThreadNative::Finalize, ThreadBaseObject* pThisUNSAFE) @@ -1467,31 +1465,6 @@ FCIMPL1(void, ThreadNative::DisableComObjectEagerCleanup, ThreadBaseObject* pThi FCIMPLEND #endif //FEATURE_COMINTEROP -#ifdef FEATURE_LEAK_CULTURE_INFO -FCIMPL1(FC_BOOL_RET, ThreadNative::SetThreadUILocale, StringObject* localeNameUNSAFE) -{ - FCALL_CONTRACT; - - BOOL result = TRUE; - - STRINGREF name = (STRINGREF) localeNameUNSAFE; - VALIDATEOBJECTREF(name); - - HELPER_METHOD_FRAME_BEGIN_RET_0(); - - LCID lcid=NewApis::LocaleNameToLCID(name->GetBuffer(),0); - if (lcid == 0) - { - ThrowHR(HRESULT_FROM_WIN32(GetLastError())); - } - - - HELPER_METHOD_FRAME_END(); - - FC_RETURN_BOOL(result); -} -FCIMPLEND -#endif // FEATURE_LEAK_CULTURE_INFO FCIMPL0(Object*, ThreadNative::GetDomain) { @@ -1754,31 +1727,7 @@ FCIMPLEND // unloaded and this culture will survive although the type metadata will be unloaded // and GC will crash first time accessing this object after the app domain unload. // -#ifdef FEATURE_LEAK_CULTURE_INFO -FCIMPL4(FC_BOOL_RET, ThreadNative::nativeGetSafeCulture, - ThreadBaseObject* threadUNSAFE, - int appDomainId, - CLR_BOOL isUI, - OBJECTREF* safeCulture) -{ - FCALL_CONTRACT; - - THREADBASEREF thread(threadUNSAFE); - - CULTUREINFOBASEREF pCulture = isUI ? thread->GetCurrentUICulture() : thread->GetCurrentUserCulture(); - if (pCulture != NULL) { - if (pCulture->IsSafeCrossDomain() || pCulture->GetCreatedDomainID() == ADID(appDomainId)) { - SetObjectReference(safeCulture, pCulture, pCulture->GetAppDomain()); - } else { - FC_RETURN_BOOL(FALSE); - } - } - FC_RETURN_BOOL(TRUE); -} -FCIMPLEND -#endif // FEATURE_LEAK_CULTURE_INFO -#ifndef FEATURE_LEAK_CULTURE_INFO void QCALLTYPE ThreadNative::nativeInitCultureAccessors() { QCALL_CONTRACT; @@ -1790,7 +1739,6 @@ void QCALLTYPE ThreadNative::nativeInitCultureAccessors() END_QCALL; } -#endif // FEATURE_LEAK_CULTURE_INFO void QCALLTYPE ThreadNative::InformThreadNameChange(QCall::ThreadHandle thread, LPCWSTR name, INT32 len) diff --git a/src/vm/comsynchronizable.h b/src/vm/comsynchronizable.h index 0f727cb056..61f93fa3d1 100644 --- a/src/vm/comsynchronizable.h +++ b/src/vm/comsynchronizable.h @@ -92,11 +92,7 @@ public: static FCDECL1(Object*, GetContextFromContextID, LPVOID ContextID); static FCDECL6(Object*, InternalCrossContextCallback, ThreadBaseObject* refThis, ContextBaseObject* refContext, LPVOID contextID, INT32 appDomainId, Object* oDelegateUNSAFE, PtrArray* oArgsUNSAFE); #endif -#ifdef FEATURE_LEAK_CULTURE_INFO - static FCDECL4(FC_BOOL_RET, nativeGetSafeCulture, ThreadBaseObject* threadUNSAFE, int appDomainId, CLR_BOOL isUI, OBJECTREF *safeCulture); -#else static void QCALLTYPE nativeInitCultureAccessors(); -#endif static void QCALLTYPE InformThreadNameChange(QCall::ThreadHandle thread, LPCWSTR name, INT32 len); @@ -112,9 +108,6 @@ public: #ifdef FEATURE_COMINTEROP static FCDECL1(void, DisableComObjectEagerCleanup, ThreadBaseObject* pThis); #endif //FEATURE_COMINTEROP -#ifdef FEATURE_LEAK_CULTURE_INFO - static FCDECL1(FC_BOOL_RET,SetThreadUILocale, StringObject* localeNameUNSAFE); -#endif // FEATURE_LEAK_CULTURE_INFO static FCDECL1(FC_BOOL_RET,IsThreadpoolThread, ThreadBaseObject* thread); static FCDECL0(void, FCMemoryBarrier); diff --git a/src/vm/ecalllist.h b/src/vm/ecalllist.h index abf79802b5..a0a714e357 100644 --- a/src/vm/ecalllist.h +++ b/src/vm/ecalllist.h @@ -867,11 +867,7 @@ FCFuncEnd() FCFuncStart(gThreadFuncs) FCDynamic("InternalGetCurrentThread", CORINFO_INTRINSIC_Illegal, ECall::InternalGetCurrentThread) FCFuncElement("StartInternal", ThreadNative::Start) -#ifdef FEATURE_LEAK_CULTURE_INFO - FCFuncElement("nativeGetSafeCulture", ThreadNative::nativeGetSafeCulture) -#else QCFuncElement("nativeInitCultureAccessors", ThreadNative::nativeInitCultureAccessors) -#endif #undef Sleep FCFuncElement("SleepInternal", ThreadNative::Sleep) #define Sleep(a) Dont_Use_Sleep(a) @@ -890,9 +886,6 @@ FCFuncStart(gThreadFuncs) FCIntrinsic("GetCurrentThreadNative", ThreadNative::GetCurrentThread, CORINFO_INTRINSIC_GetCurrentManagedThread) FCIntrinsic("get_ManagedThreadId", ThreadNative::GetManagedThreadId, CORINFO_INTRINSIC_GetManagedThreadId) FCFuncElement("InternalFinalize", ThreadNative::Finalize) -#ifdef FEATURE_LEAK_CULTURE_INFO - FCFuncElement("nativeSetThreadUILocale", ThreadNative::SetThreadUILocale) -#endif #ifdef FEATURE_COMINTEROP_APARTMENT_SUPPORT FCFuncElement("StartupSetApartmentStateInternal", ThreadNative::StartupSetApartmentState) #endif // FEATURE_COMINTEROP_APARTMENT_SUPPORT diff --git a/src/vm/mscorlib.h b/src/vm/mscorlib.h index f466c2f20c..d2c1827e5d 100644 --- a/src/vm/mscorlib.h +++ b/src/vm/mscorlib.h @@ -472,14 +472,8 @@ DEFINE_FIELD_U(m_name, CultureInfoBaseObject, m_name) DEFINE_FIELD_U(m_nonSortName, CultureInfoBaseObject, m_nonSortName) DEFINE_FIELD_U(m_sortName, CultureInfoBaseObject, m_sortName) DEFINE_FIELD_U(m_parent, CultureInfoBaseObject, m_parent) -#ifdef FEATURE_LEAK_CULTURE_INFO -DEFINE_FIELD_U(m_createdDomainID, CultureInfoBaseObject, m_createdDomainID) -#endif // FEATURE_LEAK_CULTURE_INFO DEFINE_FIELD_U(m_isReadOnly, CultureInfoBaseObject, m_isReadOnly) DEFINE_FIELD_U(m_isInherited, CultureInfoBaseObject, m_isInherited) -#ifdef FEATURE_LEAK_CULTURE_INFO -DEFINE_FIELD_U(m_isSafeCrossDomain, CultureInfoBaseObject, m_isSafeCrossDomain) -#endif // FEATURE_LEAK_CULTURE_INFO #ifndef FEATURE_COREFX_GLOBALIZATION DEFINE_FIELD_U(m_useUserOverride, CultureInfoBaseObject, m_useUserOverride) #endif @@ -1243,18 +1237,12 @@ DEFINE_FIELD_U(m_Context, ThreadBaseObject, m_ExposedContext) #endif DEFINE_FIELD_U(m_Name, ThreadBaseObject, m_Name) DEFINE_FIELD_U(m_Delegate, ThreadBaseObject, m_Delegate) -#ifdef FEATURE_LEAK_CULTURE_INFO -DEFINE_FIELD_U(m_CurrentCulture, ThreadBaseObject, m_CurrentUserCulture) -DEFINE_FIELD_U(m_CurrentUICulture, ThreadBaseObject, m_CurrentUICulture) -#endif DEFINE_FIELD_U(m_ThreadStartArg, ThreadBaseObject, m_ThreadStartArg) DEFINE_FIELD_U(DONT_USE_InternalThread, ThreadBaseObject, m_InternalThread) DEFINE_FIELD_U(m_Priority, ThreadBaseObject, m_Priority) DEFINE_CLASS(THREAD, Threading, Thread) -#ifndef FEATURE_LEAK_CULTURE_INFO DEFINE_FIELD(THREAD, CULTURE, m_CurrentCulture) DEFINE_FIELD(THREAD, UI_CULTURE, m_CurrentUICulture) -#endif #ifdef FEATURE_REMOTING DEFINE_STATIC_PROPERTY(THREAD, CURRENT_CONTEXT, CurrentContext, Context) #endif diff --git a/src/vm/object.h b/src/vm/object.h index aa9cc0b7e6..b76d09bb5b 100644 --- a/src/vm/object.h +++ b/src/vm/object.h @@ -1707,14 +1707,8 @@ private: INT32 iDataItem; // NEVER USED, DO NOT USE THIS! (Serialized in Whidbey/Everett) INT32 iCultureID; // NEVER USED, DO NOT USE THIS! (Serialized in Whidbey/Everett) #endif // !FEATURE_COREFX_GLOBALIZATION -#ifdef FEATURE_LEAK_CULTURE_INFO - INT32 m_createdDomainID; -#endif // FEATURE_LEAK_CULTURE_INFO CLR_BOOL m_isReadOnly; CLR_BOOL m_isInherited; -#ifdef FEATURE_LEAK_CULTURE_INFO - CLR_BOOL m_isSafeCrossDomain; -#endif // FEATURE_LEAK_CULTURE_INFO CLR_BOOL m_useUserOverride; public: @@ -1731,17 +1725,6 @@ public: return m_name; }// GetName -#ifdef FEATURE_LEAK_CULTURE_INFO - BOOL IsSafeCrossDomain() - { - return m_isSafeCrossDomain; - }// IsSafeCrossDomain - - ADID GetCreatedDomainID() - { - return ADID(m_createdDomainID); - }// GetCreatedDomain -#endif // FEATURE_LEAK_CULTURE_INFO }; // class CultureInfoBaseObject @@ -1910,10 +1893,6 @@ private: OBJECTREF m_SynchronizationContext; OBJECTREF m_Name; OBJECTREF m_Delegate; -#ifdef FEATURE_LEAK_CULTURE_INFO - CULTUREINFOBASEREF m_CurrentUserCulture; - CULTUREINFOBASEREF m_CurrentUICulture; -#endif #ifdef IO_CANCELLATION_ENABLED OBJECTREF m_CancellationSignals; #endif @@ -1977,14 +1956,12 @@ public: OBJECTREF GetDelegate() { LIMITED_METHOD_CONTRACT; return m_Delegate; } void SetDelegate(OBJECTREF delegate); -#ifndef FEATURE_LEAK_CULTURE_INFO CULTUREINFOBASEREF GetCurrentUserCulture(); CULTUREINFOBASEREF GetCurrentUICulture(); OBJECTREF GetManagedThreadCulture(BOOL bUICulture); void ResetManagedThreadCulture(BOOL bUICulture); void ResetCurrentUserCulture(); void ResetCurrentUICulture(); -#endif #ifdef FEATURE_REMOTING // These expose the remoting context (System\Remoting\Context) @@ -2004,31 +1981,6 @@ public: } #endif -#ifdef FEATURE_LEAK_CULTURE_INFO - CULTUREINFOBASEREF GetCurrentUserCulture() - { - LIMITED_METHOD_CONTRACT; - return m_CurrentUserCulture; - } - - void ResetCurrentUserCulture() - { - WRAPPER_NO_CONTRACT; - ClearObjectReference((OBJECTREF *)&m_CurrentUserCulture); - } - - CULTUREINFOBASEREF GetCurrentUICulture() - { - LIMITED_METHOD_CONTRACT; - return m_CurrentUICulture; - } - - void ResetCurrentUICulture() - { - WRAPPER_NO_CONTRACT; - ClearObjectReference((OBJECTREF *)&m_CurrentUICulture); - } -#endif // FEATURE_LEAK_CULTURE_INFO OBJECTREF GetSynchronizationContext() { diff --git a/src/vm/threads.cpp b/src/vm/threads.cpp index c4a4b3a070..570a56af0d 100644 --- a/src/vm/threads.cpp +++ b/src/vm/threads.cpp @@ -2032,10 +2032,8 @@ Thread::Thread() contextHolder.SuppressRelease(); savedRedirectContextHolder.SuppressRelease(); -#ifndef FEATURE_LEAK_CULTURE_INFO managedThreadCurrentCulture = NULL; managedThreadCurrentUICulture = NULL; -#endif // FEATURE_LEAK_CULTURE_INFO #ifdef FEATURE_APPDOMAIN_RESOURCE_MONITORING m_ullProcessorUsageBaseline = 0; @@ -3508,15 +3506,6 @@ void Thread::OnThreadTerminate(BOOL holdingLock) // Free all structures related to thread statics for this thread DeleteThreadStaticData(); -#ifdef FEATURE_LEAK_CULTURE_INFO - //Clear the references which could create cycles - // This allows the GC to collect them - THREADBASEREF thread = (THREADBASEREF) GetExposedObjectRaw(); - if (thread != NULL) - { - thread->ResetCulture(); - } -#endif } if (GCHeapUtilities::IsGCHeapInitialized()) @@ -10170,38 +10159,7 @@ void Thread::DeleteThreadStaticData(AppDomain *pDomain) } } -#ifdef FEATURE_LEAK_CULTURE_INFO -void Thread::ResetCultureForDomain(ADID id) -{ - CONTRACTL { - NOTHROW; - GC_NOTRIGGER; - MODE_COOPERATIVE; - } - CONTRACTL_END; - - THREADBASEREF thread = (THREADBASEREF) GetExposedObjectRaw(); - - if (thread == NULL) - return; - - CULTUREINFOBASEREF userCulture = thread->GetCurrentUserCulture(); - if (userCulture != NULL) - { - if (!userCulture->IsSafeCrossDomain() && userCulture->GetCreatedDomainID() == id) - thread->ResetCurrentUserCulture(); - } - - CULTUREINFOBASEREF UICulture = thread->GetCurrentUICulture(); - if (UICulture != NULL) - { - if (!UICulture->IsSafeCrossDomain() && UICulture->GetCreatedDomainID() == id) - thread->ResetCurrentUICulture(); - } -} -#endif // FEATURE_LEAK_CULTURE_INFO -#ifndef FEATURE_LEAK_CULTURE_INFO void Thread::InitCultureAccessors() { CONTRACTL { @@ -10225,7 +10183,6 @@ void Thread::InitCultureAccessors() pCurrentCulture = (OBJECTREF*)pThread->GetStaticFieldAddress(managedThreadCurrentUICulture); } } -#endif // FEATURE_LEAK_CULTURE_INFO ARG_SLOT Thread::CallPropertyGet(BinderMethodID id, OBJECTREF pObject) diff --git a/src/vm/threads.h b/src/vm/threads.h index 86847aeeeb..9dfa6ef6fb 100644 --- a/src/vm/threads.h +++ b/src/vm/threads.h @@ -3543,9 +3543,6 @@ public: OBJECTREF GetCulture(BOOL bUICulture); // Release user cultures that can't survive appdomain unload -#ifdef FEATURE_LEAK_CULTURE_INFO - void ResetCultureForDomain(ADID id); -#endif // FEATURE_LEAK_CULTURE_INFO // Functions to set the culture on the thread. void SetCultureId(LCID lcid, BOOL bUICulture); @@ -4487,11 +4484,9 @@ public: public: typedef Holder<Thread *, DoNothing, Thread::LoadingFileRelease> LoadingFileHolder; -#ifndef FEATURE_LEAK_CULTURE_INFO void InitCultureAccessors(); FieldDesc *managedThreadCurrentCulture; FieldDesc *managedThreadCurrentUICulture; -#endif private: // Don't allow a thread to be asynchronously stopped or interrupted (e.g. because // it is performing a <clinit>) |