diff -r 6ecaa8f42f36 -r 40bef246bc7a src/mem/ruby/common/Set.hh --- a/src/mem/ruby/common/Set.hh Mon Apr 27 10:36:05 2015 -0500 +++ b/src/mem/ruby/common/Set.hh Mon Apr 27 14:18:37 2015 -0500 @@ -62,10 +62,11 @@ // 64 bits if the -m64 parameter is passed to g++, which it is // for an AMD opteron under our configuration - long *m_p_nArray; // an word array to hold the bits in the set - long m_p_nArray_Static[NUMBER_WORDS_PER_SET]; + // an word array to hold the bits in the set + unsigned long *m_p_nArray; + unsigned long m_p_nArray_Static[NUMBER_WORDS_PER_SET]; - static const int LONG_BITS = std::numeric_limits::digits + 1; + static const int LONG_BITS = std::numeric_limits::digits + 1; static const int INDEX_SHIFT = LONG_BITS == 64 ? 6 : 5; static const int INDEX_MASK = (1 << INDEX_SHIFT) - 1; diff -r 6ecaa8f42f36 -r 40bef246bc7a src/mem/ruby/common/Set.cc --- a/src/mem/ruby/common/Set.cc Mon Apr 27 10:36:05 2015 -0500 +++ b/src/mem/ruby/common/Set.cc Mon Apr 27 14:18:37 2015 -0500 @@ -73,9 +73,9 @@ { // now just ensure that no bits over the maximum size were set #ifdef _LP64 - long mask = 0x7FFFFFFFFFFFFFFF; + unsigned long mask = 0x7FFFFFFFFFFFFFFF; #else - long mask = 0x7FFFFFFF; + unsigned long mask = 0x7FFFFFFF; #endif // the number of populated spaces in the higest-order array slot @@ -132,10 +132,9 @@ Set::count() const { int counter = 0; - long mask; for (int i = 0; i < m_nArrayLen; i++) { - mask = (long)0x01; + unsigned long mask = 0x01; for (int j = 0; j < LONG_BITS; j++) { // FIXME - significant performance loss when array @@ -172,14 +171,13 @@ Set::smallestElement() const { assert(count() > 0); - long x; for (int i = 0; i < m_nArrayLen; i++) { if (m_p_nArray[i] != 0) { // the least-set bit must be in here - x = m_p_nArray[i]; + unsigned long x = m_p_nArray[i]; for (int j = 0; j < LONG_BITS; j++) { - if (x & (unsigned long)1) { + if (x & 1) { return LONG_BITS * i + j; } @@ -212,7 +210,7 @@ } // now check the last word, which may not be fully loaded - long mask = 1; + unsigned long mask = 1; for (int j = 0; j < (m_nSize % LONG_BITS); j++) { if ((mask & m_p_nArray[m_nArrayLen-1]) == 0) { return false; @@ -306,7 +304,7 @@ if (m_p_nArray && m_p_nArray != &m_p_nArray_Static[0]) delete [] m_p_nArray; - m_p_nArray = new long[m_nArrayLen]; + m_p_nArray = new unsigned long[m_nArrayLen]; } clear();