From 382f0db56cb95d0f1062ce46c73bc21705c87cef Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Tue, 14 May 2024 16:46:15 +0200 Subject: Move transaction records from `Runtime` to `AotClassLinker`. Keep a simple flag for active transaction in `Runtime` but move all other transaction data to `AotClassLinker`. Make `IsActiveTransaction()` a pre-requisite for calling `IsTransactionAborted()`. Eliminate `AbortTransactionAndThrowAbortError()` by inlining into `AbortTransactionV()` and rewriting other callers to use `AbortTransactionF()` instead. Separate transaction-related test code to its own files. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ie6ee421fcfed1599049ab50ca692f19c71f395ce --- runtime/mirror/array-inl.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'runtime/mirror/array-inl.h') diff --git a/runtime/mirror/array-inl.h b/runtime/mirror/array-inl.h index 579b1536a3..830a7e5fb6 100644 --- a/runtime/mirror/array-inl.h +++ b/runtime/mirror/array-inl.h @@ -24,6 +24,7 @@ #include "base/bit_utils.h" #include "base/casts.h" #include "class.h" +#include "class_linker.h" #include "obj_ptr-inl.h" #include "runtime.h" #include "thread-current-inl.h" @@ -99,7 +100,7 @@ inline void PrimitiveArray::SetWithoutChecks(int32_t i, T value) { DCHECK_EQ(kTransactionActive, Runtime::Current()->IsActiveTransaction()); } if (kTransactionActive) { - Runtime::Current()->RecordWriteArray(this, i, GetWithoutChecks(i)); + Runtime::Current()->GetClassLinker()->RecordWriteArray(this, i, GetWithoutChecks(i)); } DCHECK(CheckIsValidIndex(i)) << i << " " << GetLength(); GetData()[i] = value; -- cgit v1.2.3-59-g8ed1b