[vm] Grab read program lock when querying Class functions.

Fixes https://github.com/dart-lang/sdk/issues/61734
TEST=tsan ci

Change-Id: Id0c905109ad88f9a0e4abc302b7ad90b8239a86a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/457140
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Alexander Aprelev
2025-10-27 09:57:36 -07:00
committed by Commit Queue
parent 542a11bf3b
commit 2532cf395a
@@ -2013,6 +2013,7 @@ bool FlowGraphCompiler::LookupMethodFor(int class_id,
Class& cls = Class::Handle(zone, raw_class);
if (cls.IsNull()) return false;
if (!cls.is_finalized()) return false;
SafepointReadRwLocker ml(thread, thread->isolate_group()->program_lock());
if (Array::Handle(cls.current_functions()).IsNull()) return false;
if (class_is_abstract_return != nullptr) {