| 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..f2379df98766b7946d7046945dd8e3fd420be34c 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()) {
|
| + code.set_var_descriptors(LocalVarDescriptors::Handle());
|
| + } else {
|
| + const LocalVarDescriptors& var_descs = LocalVarDescriptors::Handle(
|
| + parsed_function_.node_sequence()->scope()->GetVarDescriptors(
|
| + parsed_function_.function()));
|
| + code.set_var_descriptors(var_descs);
|
| + }
|
| }
|
|
|
|
|
|
|