diff options
author | Jan Kotas <jkotas@microsoft.com> | 2015-12-24 16:35:51 -0800 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2015-12-24 16:35:51 -0800 |
commit | 4be02beac6b35dc675956c55ed0ab7b947fd5c4f (patch) | |
tree | c7772953590f2ca5795701115b85d29ec391a88b | |
parent | 4e6629d817e832c13dc09ce8f034b04d2f38230e (diff) | |
parent | eae3aeb0e63aa76df32437eea0be8c4b194d0d4a (diff) | |
download | coreclr-4be02beac6b35dc675956c55ed0ab7b947fd5c4f.tar.gz coreclr-4be02beac6b35dc675956c55ed0ab7b947fd5c4f.tar.bz2 coreclr-4be02beac6b35dc675956c55ed0ab7b947fd5c4f.zip |
Merge pull request #2469 from dotnet-bot/from-tfs
Merge changes from TFS
-rw-r--r-- | src/gc/env/gcenv.interlocked.inl | 16 | ||||
-rw-r--r-- | src/gc/gc.cpp | 10 | ||||
-rw-r--r-- | src/strongname/api/api.props | 3 | ||||
-rw-r--r-- | src/vm/gcenv.os.cpp | 2 |
4 files changed, 22 insertions, 9 deletions
diff --git a/src/gc/env/gcenv.interlocked.inl b/src/gc/env/gcenv.interlocked.inl index 943bc2ef98..62e171cadf 100644 --- a/src/gc/env/gcenv.interlocked.inl +++ b/src/gc/env/gcenv.interlocked.inl @@ -137,8 +137,12 @@ template <typename T> __forceinline T Interlocked::ExchangePointer(T volatile * destination, T value) { #ifdef _MSC_VER +#ifdef BIT64 return (T)(TADDR)_InterlockedExchangePointer((void* volatile *)destination, value); #else + return (T)(TADDR)_InterlockedExchange((long volatile *)(void* volatile *)destination, (long)(void*)value); +#endif +#else return (T)(TADDR)__sync_swap((void* volatile *)destination, value); #endif } @@ -147,8 +151,12 @@ template <typename T> __forceinline T Interlocked::ExchangePointer(T volatile * destination, std::nullptr_t value) { #ifdef _MSC_VER +#ifdef BIT64 return (T)(TADDR)_InterlockedExchangePointer((void* volatile *)destination, value); #else + return (T)(TADDR)_InterlockedExchange((long volatile *)(void* volatile *)destination, (long)(void*)value); +#endif +#else return (T)(TADDR)__sync_swap((void* volatile *)destination, value); #endif } @@ -165,8 +173,12 @@ template <typename T> __forceinline T Interlocked::CompareExchangePointer(T volatile *destination, T exchange, T comparand) { #ifdef _MSC_VER +#ifdef BIT64 return (T)(TADDR)_InterlockedCompareExchangePointer((void* volatile *)destination, exchange, comparand); #else + return (T)(TADDR)_InterlockedCompareExchange((long volatile *)(void* volatile *)destination, (long)(void*)exchange, (long)(void*)comparand); +#endif +#else return (T)(TADDR)__sync_val_compare_and_swap((void* volatile *)destination, comparand, exchange); #endif } @@ -175,8 +187,12 @@ template <typename T> __forceinline T Interlocked::CompareExchangePointer(T volatile *destination, T exchange, std::nullptr_t comparand) { #ifdef _MSC_VER +#ifdef BIT64 return (T)(TADDR)_InterlockedCompareExchangePointer((void* volatile *)destination, exchange, comparand); #else + return (T)(TADDR)_InterlockedCompareExchange((long volatile *)(void* volatile *)destination, (long)(void*)exchange, (long)(void*)comparand); +#endif +#else return (T)(TADDR)__sync_val_compare_and_swap((void* volatile *)destination, comparand, exchange); #endif } diff --git a/src/gc/gc.cpp b/src/gc/gc.cpp index 4baf08f540..c91d2a6baf 100644 --- a/src/gc/gc.cpp +++ b/src/gc/gc.cpp @@ -5064,9 +5064,8 @@ void set_thread_group_affinity_for_heap(int heap_number, GCThreadAffinity* affin { affinity->Group = GCThreadAffinity::None; affinity->Processor = GCThreadAffinity::None; - GROUP_AFFINITY ga; - uint16_t gn, gpn; + uint16_t gn, gpn; CPUGroupInfo::GetGroupForProcessor((uint16_t)heap_number, &gn, &gpn); int bit_number = 0; @@ -5075,8 +5074,8 @@ void set_thread_group_affinity_for_heap(int heap_number, GCThreadAffinity* affin if (bit_number == gpn) { dprintf(3, ("using processor group %d, mask %x%Ix for heap %d\n", gn, mask, heap_number)); - *affinity->Processor = gpn; - *affinity->Group = gn; + affinity->Processor = gpn; + affinity->Group = gn; heap_select::set_cpu_group_for_heap(heap_number, (uint8_t)gn); heap_select::set_group_proc_for_heap(heap_number, (uint8_t)gpn); if (NumaNodeInfo::CanEnableGCNumaAware()) @@ -5104,8 +5103,8 @@ void set_thread_affinity_mask_for_heap(int heap_number, GCThreadAffinity* affini { affinity->Group = GCThreadAffinity::None; affinity->Processor = GCThreadAffinity::None; - DWORD_PTR pmask, smask; + uintptr_t pmask, smask; if (GCToOSInterface::GetCurrentProcessAffinityMask(&pmask, &smask)) { pmask &= smask; @@ -5119,7 +5118,6 @@ void set_thread_affinity_mask_for_heap(int heap_number, GCThreadAffinity* affini { dprintf (3, ("Using processor %d for heap %d\n", proc_number, heap_number)); affinity->Processor = proc_number; - SetThreadAffinityMask(gc_thread, mask); heap_select::set_proc_no_for_heap(heap_number, proc_number); if (NumaNodeInfo::CanEnableGCNumaAware()) { // have the processor number, find the numa node diff --git a/src/strongname/api/api.props b/src/strongname/api/api.props index cba28116b8..2c4c278a69 100644 --- a/src/strongname/api/api.props +++ b/src/strongname/api/api.props @@ -7,8 +7,7 @@ $(Clrbase)\src\inc; $(Clrbase)\src\md\inc; $(Clrbase)\src\md\compiler; - $(Clrbase)\src\vm; - $(Clrbase)\src\gc\env + $(Clrbase)\src\vm </UserIncludes> <UserIncludes Condition="'$(StrongnameInVm)' == 'true'"> diff --git a/src/vm/gcenv.os.cpp b/src/vm/gcenv.os.cpp index 4fdd34e9a0..6d72cee3bd 100644 --- a/src/vm/gcenv.os.cpp +++ b/src/vm/gcenv.os.cpp @@ -77,7 +77,7 @@ bool GCToOSInterface::SetCurrentThreadIdealAffinity(GCThreadAffinity* affinity) { if (GetThreadIdealProcessorEx(GetCurrentThread(), &proc)) { - proc.Number = affinity->Processor; + proc.Number = (BYTE)affinity->Processor; success = !!SetThreadIdealProcessorEx(GetCurrentThread(), &proc, NULL); } } |