Revert "Cache line aligned TT"
authorMarco Costalba <mcostalba@gmail.com>
Tue, 30 Apr 2013 06:08:54 +0000 (08:08 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 30 Apr 2013 17:42:21 +0000 (19:42 +0200)
This reverts commit 083fe5812485597e13943b690cc24a8f25c0d140

It seems to break Android build

No functional change.

src/misc.cpp
src/tt.cpp
src/tt.h
src/types.h

index 477fb39..c0c00b0 100644 (file)
@@ -237,8 +237,10 @@ void prefetch(char* addr) {
 
 #  if defined(__INTEL_COMPILER) || defined(_MSC_VER)
   _mm_prefetch(addr, _MM_HINT_T0);
+  _mm_prefetch(addr+64, _MM_HINT_T0); // 64 bytes ahead
 #  else
   __builtin_prefetch(addr);
+  __builtin_prefetch(addr+64);
 #  endif
 }
 
index 998d737..80ea493 100644 (file)
@@ -39,18 +39,18 @@ void TranspositionTable::set_size(size_t mbSize) {
   if (hashMask == size - ClusterSize)
       return;
 
-  free(mem);
-  mem = malloc(size * sizeof(TTEntry) + (CACHE_LINE_SIZE - 1));
-  if (!mem)
+  hashMask = size - ClusterSize;
+  delete [] table;
+  table = new (std::nothrow) TTEntry[size];
+
+  if (!table)
   {
       std::cerr << "Failed to allocate " << mbSize
                 << "MB for transposition table." << std::endl;
       exit(EXIT_FAILURE);
   }
 
-  table = (TTEntry*)((size_t(mem) + CACHE_LINE_SIZE - 1) & ~(CACHE_LINE_SIZE - 1));
-  hashMask = size - ClusterSize;
-  clear(); // Newly allocated block of memory is not initialized
+  clear(); // Operator new is not guaranteed to initialize memory to zero
 }
 
 
index 1caa277..c7c39e9 100644 (file)
--- a/src/tt.h
+++ b/src/tt.h
@@ -85,7 +85,7 @@ class TranspositionTable {
   static const unsigned ClusterSize = 4; // A cluster is 64 Bytes
 
 public:
- ~TranspositionTable() { free(mem); }
+ ~TranspositionTable() { delete [] table; }
   void new_search() { generation++; }
 
   TTEntry* probe(const Key key) const;
@@ -98,7 +98,6 @@ public:
 private:
   uint32_t hashMask;
   TTEntry* table;
-  void* mem;
   uint8_t generation; // Size must be not bigger then TTEntry::generation8
 };
 
index dae86db..1def7d0 100644 (file)
 #   include <xmmintrin.h> // Intel and Microsoft header for _mm_prefetch()
 #  endif
 
-#define CACHE_LINE_SIZE 64
 #if defined(_MSC_VER) || defined(__INTEL_COMPILER)
-#  define CACHE_LINE_ALIGNMENT __declspec(align(CACHE_LINE_SIZE))
+#  define CACHE_LINE_ALIGNMENT __declspec(align(64))
 #else
-#  define CACHE_LINE_ALIGNMENT  __attribute__ ((aligned(CACHE_LINE_SIZE)))
+#  define CACHE_LINE_ALIGNMENT  __attribute__ ((aligned(64)))
 #endif
 
 #if defined(_MSC_VER)