| Index: runtime/vm/simulator_arm64.cc
|
| ===================================================================
|
| --- runtime/vm/simulator_arm64.cc (revision 44732)
|
| +++ runtime/vm/simulator_arm64.cc (working copy)
|
| @@ -1164,13 +1164,13 @@
|
|
|
| // Synchronization primitives support.
|
| void Simulator::SetExclusiveAccess(uword addr) {
|
| - Isolate* isolate = Isolate::Current();
|
| - ASSERT(isolate != NULL);
|
| - DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
|
| + Thread* thread = Thread::Current();
|
| + ASSERT(thread != NULL);
|
| + DEBUG_ASSERT(exclusive_access_lock_->IsOwnedByCurrentThread());
|
| int i = 0;
|
| - // Find an entry for this isolate in the exclusive access state.
|
| + // Find an entry for this thread in the exclusive access state.
|
| while ((i < kNumAddressTags) &&
|
| - (exclusive_access_state_[i].isolate != isolate)) {
|
| + (exclusive_access_state_[i].thread != thread)) {
|
| i++;
|
| }
|
| // Round-robin replacement of previously used entries.
|
| @@ -1179,7 +1179,7 @@
|
| if (++next_address_tag_ == kNumAddressTags) {
|
| next_address_tag_ = 0;
|
| }
|
| - exclusive_access_state_[i].isolate = isolate;
|
| + exclusive_access_state_[i].thread = thread;
|
| }
|
| // Remember the address being reserved.
|
| exclusive_access_state_[i].addr = addr;
|
| @@ -1187,20 +1187,20 @@
|
|
|
|
|
| bool Simulator::HasExclusiveAccessAndOpen(uword addr) {
|
| - Isolate* isolate = Isolate::Current();
|
| - ASSERT(isolate != NULL);
|
| + Thread* thread = Thread::Current();
|
| + ASSERT(thread != NULL);
|
| ASSERT(addr != 0);
|
| - DEBUG_ASSERT(exclusive_access_lock_->Owner() == isolate);
|
| + DEBUG_ASSERT(exclusive_access_lock_->IsOwnedByCurrentThread());
|
| bool result = false;
|
| for (int i = 0; i < kNumAddressTags; i++) {
|
| - if (exclusive_access_state_[i].isolate == isolate) {
|
| - // Check whether the current isolates address reservation matches.
|
| + if (exclusive_access_state_[i].thread == thread) {
|
| + // Check whether the current threads address reservation matches.
|
| if (exclusive_access_state_[i].addr == addr) {
|
| result = true;
|
| }
|
| exclusive_access_state_[i].addr = 0;
|
| } else if (exclusive_access_state_[i].addr == addr) {
|
| - // Other isolates with matching address lose their reservations.
|
| + // Other threads with matching address lose their reservations.
|
| exclusive_access_state_[i].addr = 0;
|
| }
|
| }
|
| @@ -1210,7 +1210,7 @@
|
|
|
| void Simulator::ClearExclusive() {
|
| MutexLocker ml(exclusive_access_lock_);
|
| - // Remove the reservation for this isolate.
|
| + // Remove the reservation for this thread.
|
| SetExclusiveAccess(NULL);
|
| }
|
|
|
| @@ -1238,7 +1238,7 @@
|
| uword new_value) {
|
| MutexLocker ml(exclusive_access_lock_);
|
| // We do not get a reservation as it would be guaranteed to be found when
|
| - // writing below. No other isolate is able to make a reservation while we
|
| + // writing below. No other thread is able to make a reservation while we
|
| // hold the lock.
|
| uword value = *address;
|
| if (value == compare_value) {
|
|
|