Commit 63cde592 authored by dcarney's avatar dcarney Committed by Commit bot

[turbofan] add flag for register allocation verification

BUG=

Review URL: https://codereview.chromium.org/798873008

Cr-Commit-Position: refs/heads/master@{#26074}
parent 3706a504
...@@ -247,15 +247,6 @@ class PipelineData { ...@@ -247,15 +247,6 @@ class PipelineData {
}; };
static inline bool VerifyGraphs() {
#ifdef DEBUG
return true;
#else
return FLAG_turbo_verify;
#endif
}
struct TurboCfgFile : public std::ofstream { struct TurboCfgFile : public std::ofstream {
explicit TurboCfgFile(Isolate* isolate) explicit TurboCfgFile(Isolate* isolate)
: std::ofstream(isolate->GetTurboCfgFileName().c_str(), : std::ofstream(isolate->GetTurboCfgFileName().c_str(),
...@@ -534,7 +525,7 @@ struct ComputeSchedulePhase { ...@@ -534,7 +525,7 @@ struct ComputeSchedulePhase {
void Run(PipelineData* data, Zone* temp_zone) { void Run(PipelineData* data, Zone* temp_zone) {
Schedule* schedule = Scheduler::ComputeSchedule(temp_zone, data->graph()); Schedule* schedule = Scheduler::ComputeSchedule(temp_zone, data->graph());
TraceSchedule(schedule); TraceSchedule(schedule);
if (VerifyGraphs()) ScheduleVerifier::Run(schedule); if (FLAG_turbo_verify) ScheduleVerifier::Run(schedule);
data->set_schedule(schedule); data->set_schedule(schedule);
} }
}; };
...@@ -753,7 +744,7 @@ void Pipeline::RunPrintAndVerify(const char* phase, bool untyped) { ...@@ -753,7 +744,7 @@ void Pipeline::RunPrintAndVerify(const char* phase, bool untyped) {
if (FLAG_trace_turbo) { if (FLAG_trace_turbo) {
Run<PrintGraphPhase>(phase); Run<PrintGraphPhase>(phase);
} }
if (VerifyGraphs()) { if (FLAG_turbo_verify) {
Run<VerifyGraphPhase>(untyped); Run<VerifyGraphPhase>(untyped);
} }
} }
...@@ -990,10 +981,7 @@ void Pipeline::GenerateCode(Linkage* linkage) { ...@@ -990,10 +981,7 @@ void Pipeline::GenerateCode(Linkage* linkage) {
BeginPhaseKind("register allocation"); BeginPhaseKind("register allocation");
bool run_verifier = false; bool run_verifier = FLAG_turbo_verify_allocation;
#ifdef DEBUG
run_verifier = true;
#endif
// Allocate registers. // Allocate registers.
AllocateRegisters(RegisterConfiguration::ArchDefault(), run_verifier); AllocateRegisters(RegisterConfiguration::ArchDefault(), run_verifier);
if (data->compilation_failed()) { if (data->compilation_failed()) {
......
...@@ -114,6 +114,11 @@ struct MaybeBoolFlag { ...@@ -114,6 +114,11 @@ struct MaybeBoolFlag {
}; };
#endif #endif
#ifdef DEBUG
#define DEBUG_BOOL true
#else
#define DEBUG_BOOL false
#endif
#if (defined CAN_USE_VFP3_INSTRUCTIONS) || !(defined ARM_TEST_NO_FEATURE_PROBE) #if (defined CAN_USE_VFP3_INSTRUCTIONS) || !(defined ARM_TEST_NO_FEATURE_PROBE)
#define ENABLE_VFP3_DEFAULT true #define ENABLE_VFP3_DEFAULT true
#else #else
...@@ -384,7 +389,7 @@ DEFINE_BOOL(trace_turbo_scheduler, false, "trace TurboFan's scheduler") ...@@ -384,7 +389,7 @@ DEFINE_BOOL(trace_turbo_scheduler, false, "trace TurboFan's scheduler")
DEFINE_BOOL(trace_turbo_reduction, false, "trace TurboFan's various reducers") DEFINE_BOOL(trace_turbo_reduction, false, "trace TurboFan's various reducers")
DEFINE_BOOL(trace_turbo_jt, false, "trace TurboFan's jump threading") DEFINE_BOOL(trace_turbo_jt, false, "trace TurboFan's jump threading")
DEFINE_BOOL(turbo_asm, true, "enable TurboFan for asm.js code") DEFINE_BOOL(turbo_asm, true, "enable TurboFan for asm.js code")
DEFINE_BOOL(turbo_verify, false, "verify TurboFan graphs at each phase") DEFINE_BOOL(turbo_verify, DEBUG_BOOL, "verify TurboFan graphs at each phase")
DEFINE_BOOL(turbo_stats, false, "print TurboFan statistics") DEFINE_BOOL(turbo_stats, false, "print TurboFan statistics")
DEFINE_BOOL(turbo_types, true, "use typed lowering in TurboFan") DEFINE_BOOL(turbo_types, true, "use typed lowering in TurboFan")
DEFINE_BOOL(turbo_source_positions, false, DEFINE_BOOL(turbo_source_positions, false,
...@@ -403,7 +408,8 @@ DEFINE_BOOL(turbo_profiling, false, "enable profiling in TurboFan") ...@@ -403,7 +408,8 @@ DEFINE_BOOL(turbo_profiling, false, "enable profiling in TurboFan")
// TODO(dcarney): this is just for experimentation, remove when default. // TODO(dcarney): this is just for experimentation, remove when default.
DEFINE_BOOL(turbo_delay_ssa_decon, false, DEFINE_BOOL(turbo_delay_ssa_decon, false,
"delay ssa deconstruction in TurboFan register allocator") "delay ssa deconstruction in TurboFan register allocator")
// TODO(dcarney): this is just for debugging, remove eventually. DEFINE_BOOL(turbo_verify_allocation, DEBUG_BOOL,
"verify register allocation in TurboFan")
DEFINE_BOOL(turbo_move_optimization, true, "optimize gap moves in TurboFan") DEFINE_BOOL(turbo_move_optimization, true, "optimize gap moves in TurboFan")
DEFINE_BOOL(turbo_jt, true, "enable jump threading in TurboFan") DEFINE_BOOL(turbo_jt, true, "enable jump threading in TurboFan")
DEFINE_BOOL(turbo_osr, false, "enable OSR in TurboFan") DEFINE_BOOL(turbo_osr, false, "enable OSR in TurboFan")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment