diff options
author | David Srbecky <dsrbecky@google.com> | 2018-06-23 22:05:49 +0100 |
---|---|---|
committer | David Srbecky <dsrbecky@google.com> | 2018-06-26 16:51:15 +0100 |
commit | f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4 (patch) | |
tree | ac3b776ae3c20fc957949d06dd878ef3ffa6ffb5 /compiler/optimizing/code_generator.cc | |
parent | cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1 (diff) |
Add method frame info to CodeInfo.
The stored information will be used in follow-up CLs.
This temporarily increases .oat file size by 0.7%.
Test: test-art-host-gtest
Change-Id: Ie7d898b06398ae44287bb1e8153861ab112a216c
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
-rw-r--r-- | compiler/optimizing/code_generator.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 2589869859..21b2226dd6 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -393,6 +393,11 @@ void CodeGenerator::Compile(CodeAllocator* allocator) { HGraphVisitor* instruction_visitor = GetInstructionVisitor(); DCHECK_EQ(current_block_index_, 0u); + GetStackMapStream()->BeginMethod(HasEmptyFrame() ? 0 : frame_size_, + core_spill_mask_, + fpu_spill_mask_, + GetGraph()->GetNumberOfVRegs()); + size_t frame_start = GetAssembler()->CodeSize(); GenerateFrameEntry(); DCHECK_EQ(GetAssembler()->cfi().GetCurrentCFAOffset(), static_cast<int>(frame_size_)); @@ -435,6 +440,8 @@ void CodeGenerator::Compile(CodeAllocator* allocator) { // Finalize instructions in assember; Finalize(allocator); + + GetStackMapStream()->EndMethod(); } void CodeGenerator::Finalize(CodeAllocator* allocator) { @@ -1087,7 +1094,7 @@ void CodeGenerator::RecordPcInfo(HInstruction* instruction, if (instruction == nullptr) { // For stack overflow checks and native-debug-info entries without dex register // mapping (i.e. start of basic block or start of slow path). - stack_map_stream->BeginStackMapEntry(dex_pc, native_pc, 0, 0, 0, 0); + stack_map_stream->BeginStackMapEntry(dex_pc, native_pc); stack_map_stream->EndStackMapEntry(); return; } @@ -1135,8 +1142,6 @@ void CodeGenerator::RecordPcInfo(HInstruction* instruction, native_pc, register_mask, locations->GetStackMask(), - outer_environment_size, - inlining_depth, kind); EmitEnvironment(environment, slow_path); // Record invoke info, the common case for the trampoline is super and static invokes. Only @@ -1204,15 +1209,12 @@ void CodeGenerator::RecordCatchBlockInfo() { uint32_t dex_pc = block->GetDexPc(); uint32_t num_vregs = graph_->GetNumberOfVRegs(); - uint32_t inlining_depth = 0; // Inlining of catch blocks is not supported at the moment. uint32_t native_pc = GetAddressOf(block); stack_map_stream->BeginStackMapEntry(dex_pc, native_pc, /* register_mask */ 0, /* stack_mask */ nullptr, - num_vregs, - inlining_depth, StackMap::Kind::Catch); HInstruction* current_phi = block->GetFirstPhi(); |