remove -O force-C++, and also some inadvertently replicated code

This commit is contained in:
Vern Paxson 2021-05-05 19:11:17 -07:00
parent c116b2b8ad
commit 2b0f1c9d6e
5 changed files with 4 additions and 92 deletions

View file

@ -162,7 +162,6 @@ static void set_analysis_option(const char* opt, Options& opts)
fprintf(stderr, " add-C++ generate private C++ for any missing script bodies\n"); fprintf(stderr, " add-C++ generate private C++ for any missing script bodies\n");
fprintf(stderr, " dump-uds dump use-defs to stdout; implies xform\n"); fprintf(stderr, " dump-uds dump use-defs to stdout; implies xform\n");
fprintf(stderr, " dump-xform dump transformed scripts to stdout; implies xform\n"); fprintf(stderr, " dump-xform dump transformed scripts to stdout; implies xform\n");
fprintf(stderr, " force-use-C++ use available C++ script bodies, warning about missing ones\n");
fprintf(stderr, " gen-C++ generate C++ script bodies\n"); fprintf(stderr, " gen-C++ generate C++ script bodies\n");
fprintf(stderr, " gen-standalone-C++ generate \"standalone\" C++ script bodies\n"); fprintf(stderr, " gen-standalone-C++ generate \"standalone\" C++ script bodies\n");
fprintf(stderr, " help print this list\n"); fprintf(stderr, " help print this list\n");
@ -184,8 +183,6 @@ static void set_analysis_option(const char* opt, Options& opts)
a_o.activate = a_o.dump_uds = true; a_o.activate = a_o.dump_uds = true;
else if ( util::streq(opt, "dump-xform") ) else if ( util::streq(opt, "dump-xform") )
a_o.activate = a_o.dump_xform = true; a_o.activate = a_o.dump_xform = true;
else if ( util::streq(opt, "force-use-C++") )
a_o.force_use_CPP = true;
else if ( util::streq(opt, "gen-C++") ) else if ( util::streq(opt, "gen-C++") )
a_o.gen_CPP = true; a_o.gen_CPP = true;
else if ( util::streq(opt, "gen-standalone-C++") ) else if ( util::streq(opt, "gen-standalone-C++") )

View file

@ -63,14 +63,12 @@
// the test suite. // the test suite.
// //
// Zeek invocations specifying "-O use-C++" will activate any code compiled // Zeek invocations specifying "-O use-C++" will activate any code compiled
// into the zeek binary; otherwise, the code lies dormant. "-O force-use-C++" // into the zeek binary; otherwise, the code lies dormant.
// does the same but generates warnings for script functions not found in
// compiled in. This is useful for debugging the compiled code, to ensure
// that it's indeed being run.
// //
// "-O report-C++" reports on which compiled functions will/won't be used // "-O report-C++" reports on which compiled functions will/won't be used
// (including ones that are available but not relevant to the scripts loaded // (including ones that are available but not relevant to the scripts loaded
// on the command line). // on the command line). This can be useful when debugging to make sure
// that you're indeed running compiled code when you expect to be.
// //
// We partition the methods of the compiler into a number of groups, // We partition the methods of the compiler into a number of groups,
// the definitions of each having their own source file: // the definitions of each having their own source file:

View file

@ -80,18 +80,11 @@ event handler pulled in by `target.zeek` replaced with its compiled version.
Instead of the last line above, you can use the following variants: Instead of the last line above, you can use the following variants:
5. `./src/zeek -O force-use-C++ target.zeek`
Same as `use-C++`, but also
warns about any `target.zeek` functions that didn't have corresponding
compiled-to-C++ versions.
Or:
5. `./src/zeek -O report-C++ target.zeek` 5. `./src/zeek -O report-C++ target.zeek`
For each function body in For each function body in
`target.zeek`, reports which ones have compiled-to-C++ bodies available, `target.zeek`, reports which ones have compiled-to-C++ bodies available,
and also any compiled-to-C++ bodies present in the `zeek` binary that and also any compiled-to-C++ bodies present in the `zeek` binary that
`target.zeek` does not use. `target.zeek` does not use. Useful for debugging.
The above workflows require the subsequent `zeek` execution to include The above workflows require the subsequent `zeek` execution to include
the `target.zeek` script. You can avoid this by replacing the first step with: the `target.zeek` script. You can avoid this by replacing the first step with:

View file

@ -219,15 +219,10 @@ void analyze_scripts()
analysis_options.gen_standalone_CPP); analysis_options.gen_standalone_CPP);
check_env_opt("ZEEK_REPORT_CPP", analysis_options.report_CPP); check_env_opt("ZEEK_REPORT_CPP", analysis_options.report_CPP);
check_env_opt("ZEEK_USE_CPP", analysis_options.use_CPP); check_env_opt("ZEEK_USE_CPP", analysis_options.use_CPP);
check_env_opt("ZEEK_FORCE_USE_CPP",
analysis_options.force_use_CPP);
if ( analysis_options.gen_standalone_CPP ) if ( analysis_options.gen_standalone_CPP )
analysis_options.gen_CPP = true; analysis_options.gen_CPP = true;
if ( analysis_options.force_use_CPP )
analysis_options.use_CPP = true;
if ( analysis_options.gen_CPP ) if ( analysis_options.gen_CPP )
{ {
if ( analysis_options.add_CPP ) if ( analysis_options.add_CPP )
@ -372,74 +367,6 @@ void analyze_scripts()
h->SetUsed(); h->SetUsed();
} }
} }
else if ( analysis_options.force_use_CPP )
reporter->Warning("no C++ available for %s", f.Func()->Name());
}
// Now that we've loaded all of the compiled scripts
// relevant for the AST, activate standalone ones.
for ( auto cb : standalone_activations )
(*cb)();
}
if ( generating_CPP )
{
auto hm = std::make_unique<CPPHashManager>(hash_name.c_str(),
analysis_options.add_CPP);
if ( ! analysis_options.gen_CPP )
{
for ( auto& func : funcs )
{
auto hash = func.Profile()->HashVal();
if ( compiled_scripts.count(hash) > 0 ||
hm->HasHash(hash) )
func.SetSkip(true);
}
// Now that we've presumably marked a lot of functions
// as skippable, recompute the global profile.
pfs = std::make_unique<ProfileFuncs>(funcs, is_CPP_compilable, false);
}
CPPCompile cpp(funcs, *pfs, gen_name.c_str(), *hm,
analysis_options.gen_CPP ||
analysis_options.update_CPP,
analysis_options.gen_standalone_CPP);
exit(0);
}
if ( analysis_options.use_CPP )
{
for ( auto& f : funcs )
{
auto hash = f.Profile()->HashVal();
auto s = compiled_scripts.find(hash);
if ( s == compiled_scripts.end() )
{ // Look for script-specific body.
hash = script_specific_hash(f.Body(), hash);
s = compiled_scripts.find(hash);
}
if ( s != compiled_scripts.end() )
{
auto b = s->second.body;
b->SetHash(hash);
f.Func()->ReplaceBody(f.Body(), b);
f.SetBody(b);
for ( auto& e : s->second.events )
{
auto h = event_registry->Register(e);
h->SetUsed();
}
}
else if ( analysis_options.force_use_CPP )
reporter->Warning("no C++ available for %s", f.Func()->Name());
} }
// Now that we've loaded all of the compiled scripts // Now that we've loaded all of the compiled scripts

View file

@ -61,9 +61,6 @@ struct AnalyOpt {
// If true, use C++ bodies if available. // If true, use C++ bodies if available.
bool use_CPP = false; bool use_CPP = false;
// Same, but complain about missing bodies.
bool force_use_CPP = false;
// If true, report on available C++ bodies. // If true, report on available C++ bodies.
bool report_CPP = false; bool report_CPP = false;