mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Remove one indentation level in get_next_move()
Small renaming and fix some comments. No functional and no speed change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
c13b53a514
commit
5ba85ef441
3 changed files with 101 additions and 103 deletions
|
@ -20,6 +20,7 @@
|
||||||
#if !defined(MOVEGEN_H_INCLUDED)
|
#if !defined(MOVEGEN_H_INCLUDED)
|
||||||
#define MOVEGEN_H_INCLUDED
|
#define MOVEGEN_H_INCLUDED
|
||||||
|
|
||||||
|
#include "move.h"
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
|
|
||||||
enum MoveType {
|
enum MoveType {
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "history.h"
|
|
||||||
#include "movegen.h"
|
#include "movegen.h"
|
||||||
#include "movepick.h"
|
#include "movepick.h"
|
||||||
#include "search.h"
|
#include "search.h"
|
||||||
|
@ -41,10 +40,10 @@ namespace {
|
||||||
};
|
};
|
||||||
|
|
||||||
CACHE_LINE_ALIGNMENT
|
CACHE_LINE_ALIGNMENT
|
||||||
const uint8_t MainSearchPhaseTable[] = { PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP};
|
const uint8_t MainSearchTable[] = { PH_TT_MOVES, PH_GOOD_CAPTURES, PH_KILLERS, PH_NONCAPTURES, PH_BAD_CAPTURES, PH_STOP };
|
||||||
const uint8_t EvasionsPhaseTable[] = { PH_TT_MOVES, PH_EVASIONS, PH_STOP};
|
const uint8_t EvasionTable[] = { PH_TT_MOVES, PH_EVASIONS, PH_STOP };
|
||||||
const uint8_t QsearchWithChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_QCHECKS, PH_STOP};
|
const uint8_t QsearchWithChecksTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_QCHECKS, PH_STOP };
|
||||||
const uint8_t QsearchWithoutChecksPhaseTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_STOP};
|
const uint8_t QsearchWithoutChecksTable[] = { PH_TT_MOVES, PH_QCAPTURES, PH_STOP };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +68,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h,
|
||||||
if (p.is_check())
|
if (p.is_check())
|
||||||
{
|
{
|
||||||
ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
|
ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
|
||||||
phasePtr = EvasionsPhaseTable;
|
phasePtr = EvasionTable;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -83,7 +82,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h,
|
||||||
if (ss && ss->eval < beta - PawnValueMidgame && d < 3 * ONE_PLY)
|
if (ss && ss->eval < beta - PawnValueMidgame && d < 3 * ONE_PLY)
|
||||||
badCaptureThreshold = -PawnValueMidgame;
|
badCaptureThreshold = -PawnValueMidgame;
|
||||||
|
|
||||||
phasePtr = MainSearchPhaseTable;
|
phasePtr = MainSearchTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
phasePtr += int(!searchTT) - 1;
|
phasePtr += int(!searchTT) - 1;
|
||||||
|
@ -101,12 +100,12 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h)
|
||||||
pinned = p.pinned_pieces(pos.side_to_move());
|
pinned = p.pinned_pieces(pos.side_to_move());
|
||||||
|
|
||||||
if (p.is_check())
|
if (p.is_check())
|
||||||
phasePtr = EvasionsPhaseTable;
|
phasePtr = EvasionTable;
|
||||||
else if (d >= DEPTH_QS_CHECKS)
|
else if (d >= DEPTH_QS_CHECKS)
|
||||||
phasePtr = QsearchWithChecksPhaseTable;
|
phasePtr = QsearchWithChecksTable;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
phasePtr = QsearchWithoutChecksPhaseTable;
|
phasePtr = QsearchWithoutChecksTable;
|
||||||
|
|
||||||
// Skip TT move if is not a capture or a promotion, this avoids
|
// Skip TT move if is not a capture or a promotion, this avoids
|
||||||
// qsearch tree explosion due to a possible perpetual check or
|
// qsearch tree explosion due to a possible perpetual check or
|
||||||
|
@ -173,7 +172,7 @@ void MovePicker::go_next_phase() {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case PH_STOP:
|
case PH_STOP:
|
||||||
lastMove = curMove + 1; // Avoids another go_next_phase() call
|
lastMove = curMove + 1; // Avoid another go_next_phase() call
|
||||||
return;
|
return;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -259,11 +258,10 @@ void MovePicker::score_evasions() {
|
||||||
|
|
||||||
/// MovePicker::get_next_move() is the most important method of the MovePicker
|
/// MovePicker::get_next_move() is the most important method of the MovePicker
|
||||||
/// class. It returns a new legal move every time it is called, until there
|
/// class. It returns a new legal move every time it is called, until there
|
||||||
/// are no more moves left.
|
/// are no more moves left. It picks the move with the biggest score from a list
|
||||||
/// It picks the move with the biggest score from a list of generated moves taking
|
/// of generated moves taking care not to return the tt move if has already been
|
||||||
/// care not to return the tt move if has already been searched previously.
|
/// searched previously. Note that this function is not thread safe so should be
|
||||||
/// Note that this function is not thread safe so should be lock protected by
|
/// lock protected by caller when accessed through a shared MovePicker object.
|
||||||
/// caller when accessed through a shared MovePicker object.
|
|
||||||
|
|
||||||
Move MovePicker::get_next_move() {
|
Move MovePicker::get_next_move() {
|
||||||
|
|
||||||
|
@ -271,8 +269,9 @@ Move MovePicker::get_next_move() {
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
while (curMove != lastMove)
|
while (curMove == lastMove)
|
||||||
{
|
go_next_phase();
|
||||||
|
|
||||||
switch (phase) {
|
switch (phase) {
|
||||||
|
|
||||||
case PH_TT_MOVES:
|
case PH_TT_MOVES:
|
||||||
|
@ -311,7 +310,6 @@ Move MovePicker::get_next_move() {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PH_NONCAPTURES:
|
case PH_NONCAPTURES:
|
||||||
|
|
||||||
// Sort negative scored moves only when we get there
|
// Sort negative scored moves only when we get there
|
||||||
if (curMove == lastGoodNonCapture)
|
if (curMove == lastGoodNonCapture)
|
||||||
insertion_sort<MoveStack>(lastGoodNonCapture, lastMove);
|
insertion_sort<MoveStack>(lastGoodNonCapture, lastMove);
|
||||||
|
@ -352,6 +350,4 @@ Move MovePicker::get_next_move() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
go_next_phase();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#define MOVEPICK_H_INCLUDED
|
#define MOVEPICK_H_INCLUDED
|
||||||
|
|
||||||
#include "history.h"
|
#include "history.h"
|
||||||
|
#include "move.h"
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
|
@ -29,18 +30,18 @@ struct SearchStack;
|
||||||
/// MovePicker is a class which is used to pick one legal move at a time from
|
/// MovePicker is a class which is used to pick one legal move at a time from
|
||||||
/// the current position. It is initialized with a Position object and a few
|
/// the current position. It is initialized with a Position object and a few
|
||||||
/// moves we have reason to believe are good. The most important method is
|
/// moves we have reason to believe are good. The most important method is
|
||||||
/// MovePicker::pick_next_move(), which returns a new legal move each time it
|
/// MovePicker::get_next_move(), which returns a new legal move each time it
|
||||||
/// is called, until there are no legal moves left, when MOVE_NONE is returned.
|
/// is called, until there are no legal moves left, when MOVE_NONE is returned.
|
||||||
/// In order to improve the efficiency of the alpha beta algorithm, MovePicker
|
/// In order to improve the efficiency of the alpha beta algorithm, MovePicker
|
||||||
/// attempts to return the moves which are most likely to be strongest first.
|
/// attempts to return the moves which are most likely to get a cut-off first.
|
||||||
|
|
||||||
class MovePicker {
|
class MovePicker {
|
||||||
|
|
||||||
MovePicker& operator=(const MovePicker&); // silence a warning under MSVC
|
MovePicker& operator=(const MovePicker&); // Silence a warning under MSVC
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MovePicker(const Position& p, Move ttm, Depth d, const History& h, SearchStack* ss, Value beta);
|
MovePicker(const Position&, Move, Depth, const History&, SearchStack*, Value);
|
||||||
MovePicker(const Position& p, Move ttm, Depth d, const History& h);
|
MovePicker(const Position&, Move, Depth, const History&);
|
||||||
Move get_next_move();
|
Move get_next_move();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Add table
Reference in a new issue