{
int usedNodeMaskBits = g_highestNumaNode + 1;
int nodeMaskLength = (usedNodeMaskBits + sizeof(unsigned long) - 1) / sizeof(unsigned long);
- unsigned long *nodeMask = (unsigned long*)alloca(nodeMaskLength * sizeof(unsigned long));
- memset(nodeMask, 0, nodeMaskLength);
+ unsigned long nodeMask[nodeMaskLength];
+ memset(nodeMask, 0, sizeof(nodeMask));
int index = node / sizeof(unsigned long);
- int mask = ((unsigned long)1) << (node & (sizeof(unsigned long) - 1));
- nodeMask[index] = mask;
+ nodeMask[index] = ((unsigned long)1) << (node & (sizeof(unsigned long) - 1));
int st = mbind(address, size, MPOL_PREFERRED, nodeMask, usedNodeMaskBits, 0);
assert(st == 0);
bool success = false;
// Locate heap_number-th available processor
- uint16_t procNumber;
+ uint16_t procIndex;
size_t cnt = heap_number;
for (uint16_t i = 0; i < GCToOSInterface::GetTotalProcessorCount(); i++)
{
{
if (cnt == 0)
{
- procNumber = i;
+ procIndex = i;
success = true;
break;
}
if (CanEnableGCCPUGroups())
{
- GetGroupForProcessor(procNumber, &gn, &gpn);
+ GetGroupForProcessor(procIndex, &gn, &gpn);
}
else
{
gn = GroupProcNo::NoGroup;
- gpn = procNumber;
+ gpn = procIndex;
}
GroupProcNo groupProcNo(gn, gpn);
else
{
// Get the current processor group
- PROCESSOR_NUMBER procNumber;
GetCurrentProcessorNumberEx(&procNumber);
}
procNumber.Number = (BYTE)gpn;
procNumber.Reserved = 0;
- if (GetNumaProcessorNodeEx(&procNumber, node_no))
+ if (!GetNumaProcessorNodeEx(&procNumber, node_no))
{
*node_no = NUMA_NODE_UNDEFINED;
}
{
int usedNodeMaskBits = g_highestNumaNode + 1;
int nodeMaskLength = (usedNodeMaskBits + sizeof(unsigned long) - 1) / sizeof(unsigned long);
- unsigned long *nodeMask = (unsigned long*)alloca(nodeMaskLength * sizeof(unsigned long));
- memset(nodeMask, 0, nodeMaskLength);
+ unsigned long nodeMask[nodeMaskLength];
+ memset(nodeMask, 0, sizeof(nodeMask));
int index = nndPreferred / sizeof(unsigned long);
- int mask = ((unsigned long)1) << (nndPreferred & (sizeof(unsigned long) - 1));
- nodeMask[index] = mask;
+ nodeMask[index] = ((unsigned long)1) << (nndPreferred & (sizeof(unsigned long) - 1));
int st = mbind(result, dwSize, MPOL_PREFERRED, nodeMask, usedNodeMaskBits, 0);
bool success = false;
// Locate heap_number-th available processor
- uint16_t procNumber;
+ uint16_t procIndex;
size_t cnt = heap_number;
for (uint16_t i = 0; i < GCToOSInterface::GetTotalProcessorCount(); i++)
{
{
if (cnt == 0)
{
- procNumber = i;
+ procIndex = i;
success = true;
break;
}
if (CPUGroupInfo::CanEnableGCCPUGroups())
{
- CPUGroupInfo::GetGroupForProcessor(procNumber, &gn, &gpn);
+ CPUGroupInfo::GetGroupForProcessor(procIndex, &gn, &gpn);
}
else
{
gn = GroupProcNo::NoGroup;
- gpn = procNumber;
+ gpn = procIndex;
}
GroupProcNo groupProcNo(gn, gpn);
else
{
// Get the current processor group
- PROCESSOR_NUMBER procNumber;
GetCurrentProcessorNumberEx(&procNumber);
}
procNumber.Number = (BYTE)gpn;
procNumber.Reserved = 0;
- if (NumaNodeInfo::GetNumaProcessorNodeEx(&procNumber, node_no))
+ if (!NumaNodeInfo::GetNumaProcessorNodeEx(&procNumber, node_no))
{
*node_no = NUMA_NODE_UNDEFINED;
}
*node_no = groupProcNo.GetGroup();
}
#else // !FEATURE_PAL
- *proc_no = procNumber;
- if (!GCToOSInterface::CanEnableGCNumaAware() || !NumaNodeInfo::GetNumaProcessorNodeEx(procNumber, (WORD*)node_no))
+ *proc_no = procIndex;
+ if (!GCToOSInterface::CanEnableGCNumaAware() || !NumaNodeInfo::GetNumaProcessorNodeEx(procIndex, (WORD*)node_no))
{
*node_no = NUMA_NODE_UNDEFINED;
}