| Index: runtime/vm/flow_graph_compiler_ia32.cc
|
| diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
|
| index 3146ac174af12e16d0f8722ec6fc301c0fe9d5ae..9854bb0590826fe9b603b77c4f599dd44c73e440 100644
|
| --- a/runtime/vm/flow_graph_compiler_ia32.cc
|
| +++ b/runtime/vm/flow_graph_compiler_ia32.cc
|
| @@ -95,10 +95,21 @@ void FlowGraphCompiler::GenerateInlinedMathSqrt(Label* done) {
|
| }
|
|
|
|
|
| +void FlowGraphCompiler::GenerateCall(intptr_t token_index,
|
| + intptr_t try_index,
|
| + const ExternalLabel* label,
|
| + PcDescriptors::Kind kind) {
|
| + ASSERT(frame_register_allocator()->IsSpilled());
|
| + __ call(label);
|
| + AddCurrentDescriptor(kind, AstNode::kNoId, token_index, try_index);
|
| +}
|
| +
|
| +
|
| void FlowGraphCompiler::GenerateCallRuntime(intptr_t cid,
|
| intptr_t token_index,
|
| intptr_t try_index,
|
| const RuntimeEntry& entry) {
|
| + ASSERT(frame_register_allocator()->IsSpilled());
|
| __ CallRuntime(entry);
|
| AddCurrentDescriptor(PcDescriptors::kOther, cid, token_index, try_index);
|
| }
|
| @@ -414,15 +425,6 @@ intptr_t FlowGraphCompiler::EmitStaticCall(const Function& function,
|
| }
|
|
|
|
|
| -void FlowGraphCompiler::GenerateCall(intptr_t token_index,
|
| - intptr_t try_index,
|
| - const ExternalLabel* label,
|
| - PcDescriptors::Kind kind) {
|
| - __ call(label);
|
| - AddCurrentDescriptor(kind, AstNode::kNoId, token_index, try_index);
|
| -}
|
| -
|
| -
|
| // Fall through if bool_register contains null.
|
| void FlowGraphCompiler::GenerateBoolToJump(Register bool_register,
|
| Label* is_true,
|
| @@ -971,14 +973,13 @@ void FlowGraphCompiler::EmitInstructionPrologue(Instruction* instr) {
|
| LocationSummary* locs = instr->locs();
|
| ASSERT(locs != NULL);
|
|
|
| - locs->AllocateRegisters();
|
| + frame_register_allocator()->AllocateRegisters(instr);
|
|
|
| - // Load instruction inputs into allocated registers.
|
| - for (intptr_t i = locs->input_count() - 1; i >= 0; i--) {
|
| - Location loc = locs->in(i);
|
| - ASSERT(loc.kind() == Location::kRegister);
|
| - __ popl(loc.reg());
|
| - }
|
| + // TODO(vegorov): adjust assertion when we start removing comparison from the
|
| + // graph when it is merged with a branch.
|
| + ASSERT(locs->is_call() ||
|
| + (instr->IsBranch() && instr->AsBranch()->is_fused_with_comparison()) ||
|
| + (locs->input_count() == instr->InputCount()));
|
| }
|
|
|
|
|
|
|