From bf778f0cc4d91b93ebd877db0a3f4187d482be4b Mon Sep 17 00:00:00 2001 From: Santiago Aboy Solanes Date: Thu, 15 Dec 2022 14:58:21 +0000 Subject: Set HasMonitorOperations in the outer graph when inlining If the callee graph has monitor operations, the outer graph will have them too when inlining. If we don't do this, e.g. we will skip adding the needed vreg info https://cs.android.com/android/platform/superproject/+/master:art/compiler/optimizing/code_generator.cc;l=1193;drc=434d968b4af0bc8af9889170250bee3e08839bea. Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: I97817ea93c12727bb7d198fb5abea21c32d181c9 --- compiler/optimizing/graph_checker.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'compiler/optimizing/graph_checker.cc') diff --git a/compiler/optimizing/graph_checker.cc b/compiler/optimizing/graph_checker.cc index 3d80de0e04..ec89022491 100644 --- a/compiler/optimizing/graph_checker.cc +++ b/compiler/optimizing/graph_checker.cc @@ -375,6 +375,19 @@ void GraphChecker::VisitLoadException(HLoadException* load) { } } +void GraphChecker::VisitMonitorOperation(HMonitorOperation* monitor_op) { + if (!GetGraph()->HasMonitorOperations()) { + AddError( + StringPrintf("The graph doesn't have the HasMonitorOperations bit set but we saw " + "%s:%d in block %d.", + monitor_op->DebugName(), + monitor_op->GetId(), + monitor_op->GetBlock()->GetBlockId())); + } + + VisitInstruction(monitor_op); +} + void GraphChecker::VisitInstruction(HInstruction* instruction) { if (seen_ids_.IsBitSet(instruction->GetId())) { AddError(StringPrintf("Instruction id %d is duplicate in graph.", -- cgit v1.2.3-59-g8ed1b