X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fapplication.cpp;h=2d7a10bb01fd737407ed9942f08b7bacca08b0ff;hp=8a7bf85ba21ffa45d6b17f6434d9d4c088db9fa0;hb=74db0f0f4068ac9520acb16465e328436127bd4f;hpb=5c81602d14539f8259a715477315e28b5de7cb54 diff --git a/src/application.cpp b/src/application.cpp index 8a7bf85b..2d7a10bb 100644 --- a/src/application.cpp +++ b/src/application.cpp @@ -1,7 +1,7 @@ /* Stockfish, a UCI chess playing engine derived from Glaurung 2.1 Copyright (C) 2004-2008 Tord Romstad (Glaurung author) - Copyright (C) 2008-2009 Marco Costalba + Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,9 +47,9 @@ Application::Application() { init_uci_options(); Position::init_zobrist(); Position::init_piece_square_tables(); - MovePicker::init_phase_table(); init_eval(1); init_bitbases(); + init_search(); init_threads(); // Make random number generation less deterministic, for book moves @@ -57,24 +57,22 @@ Application::Application() { genrand_int32(); } -Application::~Application() { - - stop_threads(); - quit_eval(); -} - void Application::initialize() { - instance(); + // A static Application object is allocated + // once only when this function is called. + static Application singleton; } -Application& Application::instance() { +void Application::free_resources() { - static Application singleton; - return singleton; + // Warning, following functions reference global objects that + // must be still alive when free_resources() is called. + exit_threads(); + quit_eval(); } void Application::exit_with_failure() { - exit(EXIT_FAILURE); // d'tor will be called automatically + exit(EXIT_FAILURE); }