diff options
author | 2022-06-24 11:16:35 +0100 | |
---|---|---|
committer | 2022-10-10 09:55:22 +0000 | |
commit | 8efb1a62b67fd1e6866a4b7e465afc11770bb082 (patch) | |
tree | 1f7a9ee46d064b801ce596aaea010f4aafba3aea /compiler/optimizing/builder.h | |
parent | 841a69822d8a8cd04159575957367eeca2fbd1b2 (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.h | 6 |
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. |