From: Marco Costalba Date: Sat, 16 Oct 2010 10:54:44 +0000 (+0100) Subject: Revert "Pass evalMargin through SearchStack as eval" X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=3b7bf34b0255cc3f66c37b187ca9db398f34ef69 Revert "Pass evalMargin through SearchStack as eval" Restore full no functional change also in Faked Split mode. Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 29d022ad..13a0175a 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -700,7 +700,7 @@ namespace { int64_t nodes; Move move; Depth depth, ext, newDepth; - Value value, alpha, beta; + Value value, evalMargin, alpha, beta; bool isCheck, moveIsCheck, captureOrPromotion, dangerous; int researchCountFH, researchCountFL; @@ -719,8 +719,7 @@ namespace { // Step 5. Evaluate the position statically // At root we do this only to get reference value for child nodes - ss->evalMargin = VALUE_NONE; - ss->eval = isCheck ? VALUE_NONE : evaluate(pos, ss->evalMargin); + ss->eval = isCheck ? VALUE_NONE : evaluate(pos, evalMargin); // Step 6. Razoring (omitted at root) // Step 7. Static null move pruning (omitted at root) @@ -966,7 +965,7 @@ namespace { Key posKey; Move ttMove, move, excludedMove, threatMove; Depth ext, newDepth; - Value bestValue, value, oldAlpha; + Value bestValue, value, evalMargin, oldAlpha; Value refinedValue, nullValue, futilityBase, futilityValueScaled; // Non-PV specific bool isCheck, singleEvasion, singularExtensionNode, moveIsCheck, captureOrPromotion, dangerous; bool mateThreat = false; @@ -981,6 +980,7 @@ namespace { { sp = ss->sp; tte = NULL; + evalMargin = VALUE_ZERO; ttMove = excludedMove = MOVE_NONE; threatMove = sp->threatMove; mateThreat = sp->mateThreat; @@ -1041,19 +1041,19 @@ namespace { // Step 5. Evaluate the position statically and // update gain statistics of parent move. if (isCheck) - ss->eval = ss->evalMargin = VALUE_NONE; + ss->eval = evalMargin = VALUE_NONE; else if (tte) { assert(tte->static_value() != VALUE_NONE); ss->eval = tte->static_value(); - ss->evalMargin = tte->static_value_margin(); + evalMargin = tte->static_value_margin(); refinedValue = refine_eval(tte, ss->eval, ply); } else { - refinedValue = ss->eval = evaluate(pos, ss->evalMargin); - TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, ss->evalMargin); + refinedValue = ss->eval = evaluate(pos, evalMargin); + TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, evalMargin); } // Save gain for the parent non-capture move @@ -1179,7 +1179,7 @@ split_point_start: // At split points actual search starts from here CheckInfo ci(pos); ss->bestMove = MOVE_NONE; singleEvasion = !SpNode && isCheck && mp.number_of_evasions() == 1; - futilityBase = ss->eval + ss->evalMargin; + futilityBase = ss->eval + evalMargin; singularExtensionNode = !SpNode && depth >= SingularExtensionDepth[PvNode] && tte @@ -1421,7 +1421,7 @@ split_point_start: // At split points actual search starts from here ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT); move = (bestValue <= oldAlpha ? MOVE_NONE : ss->bestMove); - TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, ss->evalMargin); + TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, evalMargin); // Update killers and history only for non capture moves that fails high if ( bestValue >= beta @@ -2576,7 +2576,7 @@ split_point_start: // At split points actual search starts from here // Initialize search stack init_ss_array(ss, PLY_MAX_PLUS_2); - ss[0].eval = ss[0].evalMargin = VALUE_NONE; + ss[0].eval = VALUE_NONE; count = 0; // Generate all legal moves diff --git a/src/search.h b/src/search.h index 4bb8b0ad..5c635478 100644 --- a/src/search.h +++ b/src/search.h @@ -57,7 +57,6 @@ struct SearchStack { Move killers[2]; Depth reduction; Value eval; - Value evalMargin; bool skipNullMove; SplitPoint* sp; };