summaryrefslogtreecommitdiff
path: root/compiler/optimizing/builder.h
diff options
context:
space:
mode:
author David Brazdil <dbrazdil@google.com> 2015-07-01 15:16:14 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-07-01 15:16:15 +0000
commit8941d5e0755e8cd3f1e35e3efcbe8eeaf3b616fa (patch)
tree5a318a6fc2009bfe49d7073af6d660ed1d4fed67 /compiler/optimizing/builder.h
parent8922e0b575742aaabbb4168b8703f7c1a4cb346c (diff)
parent49bace1ccbec6f12b5b475ccc2ce76e0b666b500 (diff)
Merge "Address additional comments on try-catch CL"
Diffstat (limited to 'compiler/optimizing/builder.h')
-rw-r--r--compiler/optimizing/builder.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h
index 9744a55687..cae762b49f 100644
--- a/compiler/optimizing/builder.h
+++ b/compiler/optimizing/builder.h
@@ -98,9 +98,19 @@ class HGraphBuilder : public ValueObject {
HBasicBlock* FindBlockStartingAt(int32_t dex_pc) const;
HBasicBlock* FindOrCreateBlockStartingAt(int32_t dex_pc);
+ // Returns whether the dex_pc of `block` lies within the given range.
bool IsBlockInPcRange(HBasicBlock* block, uint32_t dex_pc_start, uint32_t dex_pc_end);
+
+ // Adds new blocks to `branch_targets_` starting at the limits of TryItems and
+ // their exception handlers.
void CreateBlocksForTryCatch(const DexFile::CodeItem& code_item);
+
+ // Splits edges which cross the boundaries of TryItems, inserts TryBoundary
+ // instructions and links them to the corresponding catch blocks.
void InsertTryBoundaryBlocks(const DexFile::CodeItem& code_item);
+
+ // Splits a single edge, inserting a TryBoundary of given `kind` and linking
+ // it to exception handlers of `try_item`.
void SplitTryBoundaryEdge(HBasicBlock* predecessor,
HBasicBlock* successor,
HTryBoundary::BoundaryKind kind,