equal
deleted
inserted
replaced
1484 // we don't want the current thread to continue until all our prior memory |
1484 // we don't want the current thread to continue until all our prior memory |
1485 // accesses (including the new thread state) are visible to other threads. |
1485 // accesses (including the new thread state) are visible to other threads. |
1486 __ li(R0/*thread_state*/, _thread_in_native_trans); |
1486 __ li(R0/*thread_state*/, _thread_in_native_trans); |
1487 __ release(); |
1487 __ release(); |
1488 __ stw(R0/*thread_state*/, thread_(thread_state)); |
1488 __ stw(R0/*thread_state*/, thread_(thread_state)); |
1489 if (UseMembar) { |
1489 __ fence(); |
1490 __ fence(); |
|
1491 } |
|
1492 // Write serialization page so that the VM thread can do a pseudo remote |
|
1493 // membar. We use the current thread pointer to calculate a thread |
|
1494 // specific offset to write to within the page. This minimizes bus |
|
1495 // traffic due to cache line collision. |
|
1496 else { |
|
1497 __ serialize_memory(R16_thread, R11_scratch1, R12_scratch2); |
|
1498 } |
|
1499 |
1490 |
1500 // Now before we return to java we must look for a current safepoint |
1491 // Now before we return to java we must look for a current safepoint |
1501 // (a new safepoint can not start since we entered native_trans). |
1492 // (a new safepoint can not start since we entered native_trans). |
1502 // We must check here because a current safepoint could be modifying |
1493 // We must check here because a current safepoint could be modifying |
1503 // the callers registers right this moment. |
1494 // the callers registers right this moment. |