summaryrefslogtreecommitdiff
path: root/compiler/optimizing/code_generator.h
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.h
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.h')
-rw-r--r--compiler/optimizing/code_generator.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h
index 99de61ddce..cf59be86bf 100644
--- a/compiler/optimizing/code_generator.h
+++ b/compiler/optimizing/code_generator.h
@@ -403,6 +403,14 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {
requires_current_method_ = true;
}
+ bool NeedsSuspendCheckEntry() const {
+ return needs_suspend_check_entry_;
+ }
+
+ void MarkNeedsSuspendCheckEntry() {
+ needs_suspend_check_entry_ = true;
+ }
+
void SetRequiresCurrentMethod() {
requires_current_method_ = true;
}
@@ -855,6 +863,9 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {
// Whether the method is a leaf method.
bool is_leaf_;
+ // Whether the method has to emit a SuspendCheck at entry.
+ bool needs_suspend_check_entry_;
+
// Whether an instruction in the graph accesses the current method.
// TODO: Rename: this actually indicates that some instruction in the method
// needs the environment including a valid stack frame.