| Index: runtime/vm/flow_graph_optimizer.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_optimizer.cc (revision 10606)
|
| +++ runtime/vm/flow_graph_optimizer.cc (working copy)
|
| @@ -9,6 +9,7 @@
|
| #include "vm/object_store.h"
|
| #include "vm/parser.h"
|
| #include "vm/scopes.h"
|
| +#include "vm/symbols.h"
|
|
|
| namespace dart {
|
|
|
| @@ -591,6 +592,26 @@
|
| }
|
|
|
|
|
| +void FlowGraphTypePropagator::VisitAssertBoolean(AssertBooleanComp* comp,
|
| + BindInstr* instr) {
|
| + if (FLAG_eliminate_type_checks &&
|
| + !comp->IsEliminated() &&
|
| + comp->value()->CompileTypeIsMoreSpecificThan(
|
| + Type::Handle(Type::BoolInterface()))) {
|
| + comp->Eliminate();
|
| + if (FLAG_trace_type_check_elimination) {
|
| + const String& name = String::Handle(Symbols::New("boolean expression"));
|
| + FlowGraphPrinter::PrintTypeCheck(parsed_function(),
|
| + comp->token_pos(),
|
| + comp->value(),
|
| + Type::Handle(Type::BoolInterface()),
|
| + name,
|
| + comp->IsEliminated());
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| void FlowGraphTypePropagator::VisitGraphEntry(GraphEntryInstr* graph_entry) {
|
| if (graph_entry->start_env() == NULL) {
|
| return;
|
|
|