diff options
| author | 2017-11-16 14:21:17 +0000 | |
|---|---|---|
| committer | 2017-11-16 14:21:17 +0000 | |
| commit | 2d774be3d229ece40a2ab3fc49355fea876adcf5 (patch) | |
| tree | ff699757aea5d2854227e68c90a553063981812d /compiler/optimizing/block_builder.h | |
| parent | 9a38a69725549b605408ceac5c80dfd951775590 (diff) | |
| parent | 92f7f3ce3b01f7c7df1c15b81c900e087248093f (diff) | |
Merge "Use intrinsic codegen for compiling intrinsic methods."
Diffstat (limited to 'compiler/optimizing/block_builder.h')
| -rw-r--r-- | compiler/optimizing/block_builder.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/compiler/optimizing/block_builder.h b/compiler/optimizing/block_builder.h index 79f7a7bc81..7d0f56db34 100644 --- a/compiler/optimizing/block_builder.h +++ b/compiler/optimizing/block_builder.h @@ -28,14 +28,15 @@ class HBasicBlockBuilder : public ValueObject { public: HBasicBlockBuilder(HGraph* graph, const DexFile* const dex_file, - const DexFile::CodeItem& code_item, + const DexFile::CodeItem* code_item, ScopedArenaAllocator* local_allocator) : allocator_(graph->GetAllocator()), graph_(graph), dex_file_(dex_file), code_item_(code_item), local_allocator_(local_allocator), - branch_targets_(code_item.insns_size_in_code_units_, + branch_targets_(code_item != nullptr ? code_item->insns_size_in_code_units_ + : /* fake dex_pc=0 for intrinsic graph */ 1u, nullptr, local_allocator->Adapter(kArenaAllocGraphBuilder)), throwing_blocks_(kDefaultNumberOfThrowingBlocks, @@ -50,6 +51,9 @@ class HBasicBlockBuilder : public ValueObject { // exits a try block. bool Build(); + // Creates basic blocks in `graph_` for compiling an intrinsic. + void BuildIntrinsic(); + size_t GetNumberOfBranches() const { return number_of_branches_; } HBasicBlock* GetBlockAt(uint32_t dex_pc) const { return branch_targets_[dex_pc]; } @@ -79,7 +83,7 @@ class HBasicBlockBuilder : public ValueObject { HGraph* const graph_; const DexFile* const dex_file_; - const DexFile::CodeItem& code_item_; + const DexFile::CodeItem* const code_item_; // null for intrinsic graph. ScopedArenaAllocator* const local_allocator_; ScopedArenaVector<HBasicBlock*> branch_targets_; |