summaryrefslogtreecommitdiff
path: root/compiler/optimizing/builder.h
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2022-06-24 11:16:35 +0100
committer Santiago Aboy Solanes <solanes@google.com> 2022-10-10 09:55:22 +0000
commit8efb1a62b67fd1e6866a4b7e465afc11770bb082 (patch)
tree1f7a9ee46d064b801ce596aaea010f4aafba3aea /compiler/optimizing/builder.h
parent841a69822d8a8cd04159575957367eeca2fbd1b2 (diff)
Compiler implementation of try catch inlining
Notable changes: 1) Wiring of the graph now allows for inlinees graph ending in TryBoundary, or Goto in some special cases. 2) Building a graph with try catch for inlining may add an extra Goto block. 3) Oat version bump. 4) Reduced kMaximumNumberOfCumulatedDexRegisters from 32 to 20. Bug: 227283224 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: Ic2fd956de24b72d1de29b4cd3d0b2a1ddab231d8
Diffstat (limited to 'compiler/optimizing/builder.h')
-rw-r--r--compiler/optimizing/builder.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/optimizing/builder.h b/compiler/optimizing/builder.h
index 580769e0f9..a59e78285f 100644
--- a/compiler/optimizing/builder.h
+++ b/compiler/optimizing/builder.h
@@ -46,7 +46,7 @@ class HGraphBuilder : public ValueObject {
const CodeItemDebugInfoAccessor& accessor,
DataType::Type return_type = DataType::Type::kInt32);
- GraphAnalysisResult BuildGraph();
+ GraphAnalysisResult BuildGraph(bool build_for_inline = false);
void BuildIntrinsicGraph(ArtMethod* method);
static constexpr const char* kBuilderPassName = "builder";
@@ -54,6 +54,10 @@ class HGraphBuilder : public ValueObject {
private:
bool SkipCompilation(size_t number_of_branches);
+ // When inlining, we sometimes want to add an extra Goto block before the Exit block. This is done
+ // in the building phase as we do not allow the inlining phase to add new instructions.
+ void MaybeAddExtraGotoBlocks();
+
HGraph* const graph_;
const DexFile* const dex_file_;
const CodeItemDebugInfoAccessor code_item_accessor_; // null for intrinsic graph.