Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_compiler.cc (revision 31125) |
| +++ runtime/vm/flow_graph_compiler.cc (working copy) |
| @@ -131,7 +131,9 @@ |
| if ((ic_data != NULL) && (ic_data->NumberOfChecks() == 0)) { |
| may_reoptimize_ = true; |
| } |
| - if (is_leaf && !current->IsCheckStackOverflow()) { |
| + if (is_leaf && |
| + !current->IsCheckStackOverflow() && |
| + !current->IsParallelMove()) { |
| // Note that we do not care if the code contains instructions that |
| // can deoptimize. |
| LocationSummary* locs = current->locs(); |
| @@ -267,7 +269,6 @@ |
| if (instr->IsParallelMove()) { |
| parallel_move_resolver_.EmitNativeCode(instr->AsParallelMove()); |
| } else { |
| - ASSERT(instr->locs() != NULL); |
| EmitInstructionPrologue(instr); |
| ASSERT(pending_deoptimization_env_ == NULL); |
| pending_deoptimization_env_ = instr->env(); |
| @@ -636,7 +637,9 @@ |
| ASSERT(return_node.value()->IsLoadInstanceFieldNode()); |
| const LoadInstanceFieldNode& load_node = |
| *return_node.value()->AsLoadInstanceFieldNode(); |
| - GenerateInlinedGetter(load_node.field().Offset()); |
| + if (load_node.field().guarded_cid() == kDynamicCid) { |
|
srdjan
2013/12/13 18:13:17
Please add comment why.
Florian Schneider
2013/12/16 13:08:09
Done.
|
| + GenerateInlinedGetter(load_node.field().Offset()); |
| + } |
| return; |
| } |
| if (parsed_function().function().kind() == RawFunction::kImplicitSetter) { |
| @@ -819,6 +822,7 @@ |
| void FlowGraphCompiler::AllocateRegistersLocally(Instruction* instr) { |
| ASSERT(!is_optimizing()); |
| + instr->InitializeLocationSummary(false); // Not optimizing. |
| LocationSummary* locs = instr->locs(); |
| bool blocked_registers[kNumberOfCpuRegisters]; |