summaryrefslogtreecommitdiff
path: root/compiler/optimizing/block_builder.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2017-11-16 14:21:17 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-11-16 14:21:17 +0000
commit2d774be3d229ece40a2ab3fc49355fea876adcf5 (patch)
treeff699757aea5d2854227e68c90a553063981812d /compiler/optimizing/block_builder.h
parent9a38a69725549b605408ceac5c80dfd951775590 (diff)
parent92f7f3ce3b01f7c7df1c15b81c900e087248093f (diff)
Merge "Use intrinsic codegen for compiling intrinsic methods."
Diffstat (limited to 'compiler/optimizing/block_builder.h')
-rw-r--r--compiler/optimizing/block_builder.h10
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_;