init: Initialize globals with kernel::Context's life

...instead of explicitly calling init::{Set,Unset}Globals.

Cool thing about this is that in both the testing and bitcoin-chainstate
codepaths, we no longer need to explicitly unset globals. The
kernel::Context goes out of scope and the globals are unset
"automatically".

Also construct kernel::Context outside of AppInitSanityChecks()
This commit is contained in:
Carl Dong
2022-05-25 14:31:54 -04:00
parent 7d03feef81
commit fed085a1a4
13 changed files with 69 additions and 35 deletions

View File

@@ -11,6 +11,8 @@
//
// It is part of the libbitcoinkernel project.
#include <kernel/context.h>
#include <chainparams.h>
#include <consensus/validation.h>
#include <core_io.h>
@@ -49,7 +51,7 @@ int main(int argc, char* argv[])
SelectParams(CBaseChainParams::MAIN);
const CChainParams& chainparams = Params();
init::SetGlobals(); // ECC_Start, etc.
kernel::Context kernel_context{};
// Necessary for CheckInputScripts (eventually called by ProcessNewBlock),
// which will try the script cache first and fall back to actually
@@ -254,6 +256,4 @@ epilogue:
}
}
GetMainSignals().UnregisterBackgroundSignalScheduler();
init::UnsetGlobals();
}