| Index: runtime/vm/flow_graph_inliner.cc | 
| diff --git a/runtime/vm/flow_graph_inliner.cc b/runtime/vm/flow_graph_inliner.cc | 
| index 726f6e82a4a43642376c9f9a7d76d1fa636250c6..05f6579c70831abdd3c1831d916fb192056b578f 100644 | 
| --- a/runtime/vm/flow_graph_inliner.cc | 
| +++ b/runtime/vm/flow_graph_inliner.cc | 
| @@ -2402,6 +2402,34 @@ static bool InlineDoubleOp(FlowGraph* flow_graph, | 
| } | 
|  | 
|  | 
| +static bool InlineDoubleTestOp(FlowGraph* flow_graph, | 
| +                               Instruction* call, | 
| +                               MethodRecognizer::Kind kind, | 
| +                               TargetEntryInstr** entry, | 
| +                               Definition** last) { | 
| +  if (!CanUnboxDouble()) { | 
| +    return false; | 
| +  } | 
| +  Definition* d = call->ArgumentAt(0); | 
| + | 
| +  *entry = new(Z) TargetEntryInstr(flow_graph->allocate_block_id(), | 
| +                                   call->GetBlock()->try_index()); | 
| +  (*entry)->InheritDeoptTarget(Z, call); | 
| +  // Arguments are checked. No need for class check. | 
| + | 
| +  DoubleTestOpInstr* double_test_op = | 
| +      new(Z) DoubleTestOpInstr(kind, | 
| +                               new(Z) Value(d), | 
| +                               call->deopt_id(), | 
| +                               call->token_pos()); | 
| +  flow_graph->AppendTo( | 
| +      *entry, double_test_op, call->env(), FlowGraph::kValue); | 
| +  *last = double_test_op; | 
| + | 
| +  return true; | 
| +} | 
| + | 
| + | 
| static bool InlineSmiBitAndFromSmi(FlowGraph* flow_graph, | 
| Instruction* call, | 
| TargetEntryInstr** entry, | 
| @@ -3649,6 +3677,9 @@ bool FlowGraphInliner::TryInlineRecognizedMethod(FlowGraph* flow_graph, | 
| return InlineDoubleOp(flow_graph, Token::kMUL, call, entry, last); | 
| case MethodRecognizer::kDoubleDiv: | 
| return InlineDoubleOp(flow_graph, Token::kDIV, call, entry, last); | 
| +    case MethodRecognizer::kDouble_getIsNaN: | 
| +    case MethodRecognizer::kDouble_getIsInfinite: | 
| +      return InlineDoubleTestOp(flow_graph, call, kind, entry, last); | 
| case MethodRecognizer::kGrowableArraySetData: | 
| ASSERT(receiver_cid == kGrowableObjectArrayCid); | 
| ASSERT(ic_data.NumberOfChecks() == 1); | 
|  |