mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-19 08:36:33 +08:00
Don't copy Position in pretty_pv()
Also let do_setup_move() don't reuse same StateInfo so that we can remove the check about different StateInfo objects before memcpy() in do_move. Functional change due to harmless additionals do_move() / undo_move() steps. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
17
src/move.cpp
17
src/move.cpp
@@ -30,6 +30,7 @@
|
||||
|
||||
#include "move.h"
|
||||
#include "movegen.h"
|
||||
#include "search.h"
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -178,7 +179,7 @@ const string move_to_san(Position& pos, Move m) {
|
||||
/// It is used to write search information to the log file (which is created
|
||||
/// when the UCI parameter "Use Search Log" is "true").
|
||||
|
||||
const string pretty_pv(const Position& pos, int time, int depth,
|
||||
const string pretty_pv(Position& pos, int time, int depth,
|
||||
Value score, ValueType type, Move pv[]) {
|
||||
|
||||
const int64_t K = 1000;
|
||||
@@ -187,13 +188,12 @@ const string pretty_pv(const Position& pos, int time, int depth,
|
||||
const size_t maxLength = 80 - startColumn;
|
||||
const string lf = string("\n") + string(startColumn, ' ');
|
||||
|
||||
StateInfo st;
|
||||
StateInfo state[PLY_MAX_PLUS_2], *st = state;
|
||||
Move* m = pv;
|
||||
std::stringstream s;
|
||||
string san;
|
||||
size_t length = 0;
|
||||
|
||||
Position p(pos, pos.thread());
|
||||
|
||||
// First print depth, score, time and searched nodes...
|
||||
s << std::setw(2) << depth
|
||||
<< (type == VALUE_TYPE_LOWER ? " >" : type == VALUE_TYPE_UPPER ? " <" : " ")
|
||||
@@ -208,9 +208,9 @@ const string pretty_pv(const Position& pos, int time, int depth,
|
||||
s << std::setw(7) << pos.nodes_searched() / M << " M ";
|
||||
|
||||
// ...then print the full PV line in short algebraic notation
|
||||
for (Move* m = pv; *m != MOVE_NONE; m++)
|
||||
while (*m != MOVE_NONE)
|
||||
{
|
||||
san = move_to_san(p, *m);
|
||||
san = move_to_san(pos, *m);
|
||||
length += san.length() + 1;
|
||||
|
||||
if (length > maxLength)
|
||||
@@ -220,9 +220,12 @@ const string pretty_pv(const Position& pos, int time, int depth,
|
||||
}
|
||||
s << san << ' ';
|
||||
|
||||
p.do_move(*m, st);
|
||||
pos.do_move(*m++, *st++);
|
||||
}
|
||||
|
||||
// Restore original position before to leave
|
||||
while (m != pv) pos.undo_move(*--m);
|
||||
|
||||
return s.str();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user