Move transaction creation to runtime
Move the transaction creation to runtime instead of passing a pointer to
runtime when EnterTransactionMode. Because later there will be more
places to create transaction so this makes the code cleaner and more
compact.
Test: make test-art-host -j64
Change-Id: I971edf3110eb6634b6e0f7f56256be04517a5281
diff --git a/runtime/interpreter/unstarted_runtime_test.cc b/runtime/interpreter/unstarted_runtime_test.cc
index 3461a65..87fa8be 100644
--- a/runtime/interpreter/unstarted_runtime_test.cc
+++ b/runtime/interpreter/unstarted_runtime_test.cc
@@ -780,44 +780,40 @@
{
JValue result;
tmp->SetVReg(0, static_cast<int32_t>(i));
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedCharacterToLowerCase(self, tmp, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
}
{
JValue result;
tmp->SetVReg(0, static_cast<int32_t>(i));
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedCharacterToUpperCase(self, tmp, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
}
}
for (uint64_t i = 256; i <= std::numeric_limits<uint32_t>::max(); i <<= 1) {
{
JValue result;
tmp->SetVReg(0, static_cast<int32_t>(i));
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedCharacterToLowerCase(self, tmp, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
}
{
JValue result;
tmp->SetVReg(0, static_cast<int32_t>(i));
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedCharacterToUpperCase(self, tmp, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
}
}
@@ -996,12 +992,11 @@
ShadowFrame* caller_frame = ShadowFrame::CreateDeoptimizedFrame(10, nullptr, caller_method, 0);
shadow_frame->SetLink(caller_frame);
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedThreadLocalGet(self, shadow_frame, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
self->ClearException();
ShadowFrame::DeleteDeoptimizedFrame(caller_frame);
@@ -1066,12 +1061,11 @@
PrepareForAborts();
{
- Transaction transaction;
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
UnstartedThreadCurrentThread(self, shadow_frame, &result, 0);
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
Runtime::Current()->ExitTransactionMode();
ASSERT_TRUE(self->IsExceptionPending());
- ASSERT_TRUE(transaction.IsAborted());
self->ClearException();
}
@@ -1138,28 +1132,27 @@
mirror::String* name_string = mirror::String::AllocFromModifiedUtf8(self, name);
CHECK(name_string != nullptr);
- Transaction transaction;
if (in_transaction) {
- Runtime::Current()->EnterTransactionMode(&transaction);
+ Runtime::Current()->EnterTransactionMode();
}
CHECK(!self->IsExceptionPending());
runner(self, shadow_frame, name_string, &result);
- if (in_transaction) {
- Runtime::Current()->ExitTransactionMode();
- }
-
if (should_succeed) {
CHECK(!self->IsExceptionPending()) << name << " " << self->GetException()->Dump();
CHECK(result.GetL() != nullptr) << name;
} else {
CHECK(self->IsExceptionPending()) << name;
if (in_transaction) {
- ASSERT_TRUE(transaction.IsAborted());
+ ASSERT_TRUE(Runtime::Current()->IsTransactionAborted());
}
self->ClearException();
}
+
+ if (in_transaction) {
+ Runtime::Current()->ExitTransactionMode();
+ }
}
ShadowFrame::DeleteDeoptimizedFrame(shadow_frame);