Index: runtime/vm/flow_graph_compiler.cc |
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc |
index d3258f98b9d11c36a6e0f21420fb38afc0882a71..e7e6398a28e8882afb38bd3fb41ae7573f992ca4 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->HasNonRedundantParallelMove() && |
block->next()->IsGoto() && |
- !block->next()->AsGoto()->HasNonRedundantParallelMove(); |
+ !block->next()->AsGoto()->HasNonRedundantParallelMove() && |
+ !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()) { |
@@ -826,6 +828,11 @@ void FlowGraphCompiler::FinalizeStackmaps(const Code& code) { |
void FlowGraphCompiler::FinalizeVarDescriptors(const Code& code) { |
+ if (parsed_function().node_sequence() == NULL) { |
+ ASSERT(flow_graph().IsIrregexpFunction()); |
+ return; |
+ } |
+ |
const LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle( |
parsed_function_.node_sequence()->scope()->GetVarDescriptors( |
parsed_function_.function())); |