Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler.cc |
| diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
| index 74694403ed3662e6c7b18918e60f985193fd8c32..8b6b130e756349c589008313cd9bc519726561bd 100644 |
| --- a/runtime/vm/flow_graph_compiler.cc |
| +++ b/runtime/vm/flow_graph_compiler.cc |
| @@ -227,7 +227,8 @@ bool FlowGraphCompiler::ForceSlowPathForStackOverflow() const { |
| static bool IsEmptyBlock(BlockEntryInstr* block) { |
| return !block->HasParallelMove() && |
| block->next()->IsGoto() && |
| - !block->next()->AsGoto()->HasParallelMove(); |
| + !block->next()->AsGoto()->HasParallelMove() && |
| + !block->IsIndirectEntry(); |
| } |
| @@ -354,6 +355,7 @@ void FlowGraphCompiler::VisitBlocks() { |
| LoopInfoComment(assembler(), *entry, *loop_headers); |
| + entry->set_offset(assembler()->CodeSize()); |
| entry->EmitNativeCode(this); |
| // Compile all successors until an exit, branch, or a block entry. |
| for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) { |
| @@ -805,10 +807,14 @@ void FlowGraphCompiler::FinalizeStackmaps(const Code& code) { |
| void FlowGraphCompiler::FinalizeVarDescriptors(const Code& code) { |
| - const LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle( |
| - parsed_function_.node_sequence()->scope()->GetVarDescriptors( |
| - parsed_function_.function())); |
| - code.set_var_descriptors(var_descs); |
| + if (flow_graph().IsIrregexpFunction()) { |
|
Florian Schneider
2014/10/01 17:04:14
if (flow_graph().IsIrregexpFunction()) return;
jgruber1
2014/10/03 18:59:53
Done.
|
| + // Nothing to do, irregexp functions do not have a node sequence. |
| + } else { |
| + const LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle( |
| + parsed_function_.node_sequence()->scope()->GetVarDescriptors( |
| + parsed_function_.function())); |
| + code.set_var_descriptors(var_descs); |
| + } |
| } |