]> git.sesse.net Git - stockfish/blobdiff - src/tt.h
Micro-optimize perft
[stockfish] / src / tt.h
index 2db19c89aab0e13610fd21f3fc27b21bc7b40b0b..5f34957c95e5e4414ecc8e7490f9ed249815ef53 100644 (file)
--- a/src/tt.h
+++ b/src/tt.h
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad
+  Copyright (C) 2008-2013 Marco Costalba, Joona Kiiski, Tord Romstad
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
 #include "misc.h"
 #include "types.h"
 
-/// The TTEntry is the class of transposition table entries
+/// The TTEntry is the 128 bit transposition table entry, defined as below:
 ///
-/// A TTEntry needs 128 bits to be stored
-///
-/// bit  0-31: key
-/// bit 32-63: data
-/// bit 64-79: value
-/// bit 80-95: depth
-/// bit 96-111: static value
-/// bit 112-127: margin of static value
-///
-/// the 32 bits of the data field are so defined
-///
-/// bit  0-15: move
-/// bit 16-20: not used
-/// bit 21-22: value type
-/// bit 23-31: generation
+/// key: 32 bit
+/// move: 16 bit
+/// bound type: 8 bit
+/// generation: 8 bit
+/// value: 16 bit
+/// depth: 16 bit
+/// static value: 16 bit
+/// static margin: 16 bit
 
 class TTEntry {
 
@@ -85,7 +78,7 @@ class TranspositionTable {
   static const unsigned ClusterSize = 4; // A cluster is 64 Bytes
 
 public:
- ~TranspositionTable() { delete [] table; }
+ ~TranspositionTable() { free(mem); }
   void new_search() { generation++; }
 
   TTEntry* probe(const Key key) const;
@@ -98,6 +91,7 @@ public:
 private:
   uint32_t hashMask;
   TTEntry* table;
+  void* mem;
   uint8_t generation; // Size must be not bigger then TTEntry::generation8
 };