| Index: runtime/vm/flow_graph_type_propagator.cc
|
| diff --git a/runtime/vm/flow_graph_type_propagator.cc b/runtime/vm/flow_graph_type_propagator.cc
|
| index 2162cfed4e9f175bcd6d3796fc75963cf9353261..d0dd61b37f2dd333fc54cb80eecabf9e6c72fb4c 100644
|
| --- a/runtime/vm/flow_graph_type_propagator.cc
|
| +++ b/runtime/vm/flow_graph_type_propagator.cc
|
| @@ -216,9 +216,8 @@ void FlowGraphTypePropagator::VisitValue(Value* value) {
|
| value->SetReachingType(type);
|
|
|
| if (FLAG_support_il_printer && FLAG_trace_type_propagation) {
|
| - THR_Print("reaching type to v%" Pd " for v%" Pd " is %s\n",
|
| - value->instruction()->IsDefinition() ?
|
| - value->instruction()->AsDefinition()->ssa_temp_index() : -1,
|
| + THR_Print("reaching type to %s for v%" Pd " is %s\n",
|
| + value->instruction()->ToCString(),
|
| value->definition()->ssa_temp_index(),
|
| type->ToCString());
|
| }
|
| @@ -263,6 +262,23 @@ void FlowGraphTypePropagator::VisitCheckClassId(CheckClassIdInstr* check) {
|
| }
|
|
|
|
|
| +void FlowGraphTypePropagator::VisitInstanceCall(InstanceCallInstr* instr) {
|
| + if (instr->has_unique_selector()) {
|
| + SetCid(instr->ArgumentAt(0),
|
| + instr->ic_data()->GetReceiverClassIdAt(0));
|
| + }
|
| +}
|
| +
|
| +
|
| +void FlowGraphTypePropagator::VisitPolymorphicInstanceCall(
|
| + PolymorphicInstanceCallInstr* instr) {
|
| + if (instr->instance_call()->has_unique_selector()) {
|
| + SetCid(instr->ArgumentAt(0),
|
| + instr->ic_data().GetReceiverClassIdAt(0));
|
| + }
|
| +}
|
| +
|
| +
|
| void FlowGraphTypePropagator::VisitGuardFieldClass(
|
| GuardFieldClassInstr* guard) {
|
| const intptr_t cid = guard->field().guarded_cid();
|
|
|