summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.cc
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2021-09-13 14:40:53 +0100
committer Treehugger Robot <treehugger-gerrit@google.com> 2021-09-14 12:21:30 +0000
commite8a822d2209a644f30fc1b6db3c70ec5faf2b79a (patch)
tree6adac4604b30164f328e5fececc816e263e2cd0e /compiler/optimizing/code_generator.cc
parent76a943abedf97ebfc36a826edd447ee411345aa2 (diff)
Remove entry SuspendCheck for methods which only call on the slow path
We can skip SuspendCheck if the method is e.g. a leaf method with a read barrier call in the slow path. Bug: 135477345 Test: ART tests Change-Id: I6e04f10544ec61b46bb5763a88c28248e88193bf
Diffstat (limited to 'compiler/optimizing/code_generator.cc')
-rw-r--r--compiler/optimizing/code_generator.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc
index a353d0758e..cabf94991d 100644
--- a/compiler/optimizing/code_generator.cc
+++ b/compiler/optimizing/code_generator.cc
@@ -982,6 +982,9 @@ void CodeGenerator::AllocateLocations(HInstruction* instruction) {
if (locations != nullptr) {
if (locations->CanCall()) {
MarkNotLeaf();
+ if (locations->NeedsSuspendCheckEntry()) {
+ MarkNeedsSuspendCheckEntry();
+ }
} else if (locations->Intrinsified() &&
instruction->IsInvokeStaticOrDirect() &&
!instruction->AsInvokeStaticOrDirect()->HasCurrentMethodInput()) {
@@ -1061,6 +1064,7 @@ CodeGenerator::CodeGenerator(HGraph* graph,
current_slow_path_(nullptr),
current_block_index_(0),
is_leaf_(true),
+ needs_suspend_check_entry_(false),
requires_current_method_(false),
code_generation_data_() {
if (GetGraph()->IsCompilingOsr()) {