1
0
Fork 0
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:
Marco Costalba 2013-08-15 09:36:26 +02:00
parent a6c0ba2100
commit 4f55ed14d3
2 changed files with 24 additions and 30 deletions

View file

@ -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

View file

@ -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&) {}
// 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,7 +1696,6 @@ void Thread::idle_loop() {
activePosition = &pos;
try {
switch (sp->nodeType) {
case Root:
search<SplitPointRoot>(pos, ss, sp->alpha, sp->beta, sp->depth, sp->cutNode);
@ -1713,10 +1711,6 @@ void Thread::idle_loop() {
}
assert(searching);
}
catch (stop&) {
sp->mutex.lock(); // Exception is thrown out of lock
}
searching = false;
activePosition = NULL;