mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33: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
|
||||
|
||||
### 3.2 General compiler settings
|
||||
CXXFLAGS = -Wall -Wcast-qual -fno-rtti $(EXTRACXXFLAGS)
|
||||
CXXFLAGS = -Wall -Wcast-qual -fno-exceptions -fno-rtti $(EXTRACXXFLAGS)
|
||||
|
||||
ifeq ($(comp),gcc)
|
||||
CXXFLAGS += -ansi -pedantic -Wno-long-long -Wextra -Wshadow
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
|
@ -105,8 +104,6 @@ namespace {
|
|||
bool refutes(const Position& pos, Move first, Move second);
|
||||
string uci_pv(const Position& pos, int depth, Value alpha, Value beta);
|
||||
|
||||
class stop : public std::exception {};
|
||||
|
||||
struct Skill {
|
||||
Skill(int l) : level(l), best(MOVE_NONE) {}
|
||||
~Skill() {
|
||||
|
@ -359,9 +356,7 @@ namespace {
|
|||
// research with bigger window until not failing high/low anymore.
|
||||
while (true)
|
||||
{
|
||||
try {
|
||||
bestValue = search<Root>(pos, ss, alpha, beta, depth * ONE_PLY, false);
|
||||
} catch (stop&) {}
|
||||
bestValue = search<Root>(pos, ss, alpha, beta, depth * ONE_PLY, false);
|
||||
|
||||
// Bring to front the best move. It is critical that sorting is
|
||||
// done with a stable algorithm because all the values but the first
|
||||
|
@ -546,13 +541,10 @@ namespace {
|
|||
if (PvNode && thisThread->maxPly < ss->ply)
|
||||
thisThread->maxPly = ss->ply;
|
||||
|
||||
if (Signals.stop || thisThread->cutoff_occurred())
|
||||
throw stop();
|
||||
|
||||
if (!RootNode)
|
||||
{
|
||||
// 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()];
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// 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)
|
||||
{
|
||||
RootMove& rm = *std::find(RootMoves.begin(), RootMoves.end(), move);
|
||||
|
@ -1697,26 +1696,21 @@ void Thread::idle_loop() {
|
|||
|
||||
activePosition = &pos;
|
||||
|
||||
try {
|
||||
switch (sp->nodeType) {
|
||||
case Root:
|
||||
search<SplitPointRoot>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
case PV:
|
||||
search<SplitPointPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
case NonPV:
|
||||
search<SplitPointNonPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
switch (sp->nodeType) {
|
||||
case Root:
|
||||
search<SplitPointRoot>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
case PV:
|
||||
search<SplitPointPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
case NonPV:
|
||||
search<SplitPointNonPV>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
|
||||
assert(searching);
|
||||
}
|
||||
catch (stop&) {
|
||||
sp->mutex.lock(); // Exception is thrown out of lock
|
||||
}
|
||||
assert(searching);
|
||||
|
||||
searching = false;
|
||||
activePosition = NULL;
|
||||
|
|
Loading…
Add table
Reference in a new issue