mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Revert using exceptions
Due to crashes. It will be reapplied once we understand what's happening. No functional change.
This commit is contained in:
parent
a6c0ba2100
commit
4f55ed14d3
2 changed files with 24 additions and 30 deletions
|
@ -232,7 +232,7 @@ ifeq ($(COMP),clang)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
### 3.2 General compiler settings
|
### 3.2 General compiler settings
|
||||||
CXXFLAGS = -Wall -Wcast-qual -fno-rtti $(EXTRACXXFLAGS)
|
CXXFLAGS = -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS)
|
||||||
|
|
||||||
ifeq ($(comp),gcc)
|
ifeq ($(comp),gcc)
|
||||||
CXXFLAGS += -ansi -pedantic -Wno-long-long -Wextra -Wshadow
|
CXXFLAGS += -ansi -pedantic -Wno-long-long -Wextra -Wshadow
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <exception>
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
@ -105,8 +104,6 @@ namespace {
|
||||||
bool refutes(const Position& pos, Move first, Move second);
|
bool refutes(const Position& pos, Move first, Move second);
|
||||||
string uci_pv(const Position& pos, int depth, Value alpha, Value beta);
|
string uci_pv(const Position& pos, int depth, Value alpha, Value beta);
|
||||||
|
|
||||||
class stop : public std::exception {};
|
|
||||||
|
|
||||||
struct Skill {
|
struct Skill {
|
||||||
Skill(int l) : level(l), best(MOVE_NONE) {}
|
Skill(int l) : level(l), best(MOVE_NONE) {}
|
||||||
~Skill() {
|
~Skill() {
|
||||||
|
@ -359,9 +356,7 @@ namespace {
|
||||||
// research with bigger window until not failing high/low anymore.
|
// research with bigger window until not failing high/low anymore.
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
try {
|
bestValue = search<Root>(pos, ss, alpha, beta, depth * ONE_PLY, false);
|
||||||
bestValue = search<Root>(pos, ss, alpha, beta, depth * ONE_PLY, false);
|
|
||||||
} catch (stop&) {}
|
|
||||||
|
|
||||||
// Bring to front the best move. It is critical that sorting is
|
// Bring to front the best move. It is critical that sorting is
|
||||||
// done with a stable algorithm because all the values but the first
|
// done with a stable algorithm because all the values but the first
|
||||||
|
@ -546,13 +541,10 @@ namespace {
|
||||||
if (PvNode && thisThread->maxPly < ss->ply)
|
if (PvNode && thisThread->maxPly < ss->ply)
|
||||||
thisThread->maxPly = ss->ply;
|
thisThread->maxPly = ss->ply;
|
||||||
|
|
||||||
if (Signals.stop || thisThread->cutoff_occurred())
|
|
||||||
throw stop();
|
|
||||||
|
|
||||||
if (!RootNode)
|
if (!RootNode)
|
||||||
{
|
{
|
||||||
// Step 2. Check for aborted search and immediate draw
|
// Step 2. Check for aborted search and immediate draw
|
||||||
if (pos.is_draw() || ss->ply > MAX_PLY)
|
if (Signals.stop || pos.is_draw() || ss->ply > MAX_PLY)
|
||||||
return DrawValue[pos.side_to_move()];
|
return DrawValue[pos.side_to_move()];
|
||||||
|
|
||||||
// Step 3. Mate distance pruning. Even if we mate at the next move our score
|
// Step 3. Mate distance pruning. Even if we mate at the next move our score
|
||||||
|
@ -1007,6 +999,13 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
alpha = splitPoint->alpha;
|
alpha = splitPoint->alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finished searching the move. If Signals.stop is true, the search
|
||||||
|
// was aborted because the user interrupted the search or because we
|
||||||
|
// ran out of time. In this case, the return value of the search cannot
|
||||||
|
// be trusted, and we don't update the best move and/or PV.
|
||||||
|
if (Signals.stop || thisThread->cutoff_occurred())
|
||||||
|
return value; // To avoid returning VALUE_INFINITE
|
||||||
|
|
||||||
if (RootNode)
|
if (RootNode)
|
||||||
{
|
{
|
||||||
RootMove& rm = *std::find(RootMoves.begin(), RootMoves.end(), move);
|
RootMove& rm = *std::find(RootMoves.begin(), RootMoves.end(), move);
|
||||||
|
@ -1697,26 +1696,21 @@ void Thread::idle_loop() {
|
||||||
|
|
||||||
activePosition = &pos;
|
activePosition = &pos;
|
||||||
|
|
||||||
try {
|
switch (sp->nodeType) {
|
||||||
switch (sp->nodeType) {
|
case Root:
|
||||||
case Root:
|
search<SplitPointRoot>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||||
search<SplitPointRoot>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
break;
|
||||||
break;
|
case PV:
|
||||||
case PV:
|
search<SplitPointPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||||
search<SplitPointPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
break;
|
||||||
break;
|
case NonPV:
|
||||||
case NonPV:
|
search<SplitPointNonPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||||
search<SplitPointNonPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
break;
|
||||||
break;
|
default:
|
||||||
default:
|
assert(false);
|
||||||
assert(false);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
assert(searching);
|
assert(searching);
|
||||||
}
|
|
||||||
catch (stop&) {
|
|
||||||
sp->mutex.lock(); // Exception is thrown out of lock
|
|
||||||
}
|
|
||||||
|
|
||||||
searching = false;
|
searching = false;
|
||||||
activePosition = NULL;
|
activePosition = NULL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue