4557b3858a66aa20e42bce937e1f0620aad880a2 |
|
03-Jan-2018 |
Orion Hodson <oth@google.com> |
ART: Rename Atomic::CompareExchange methods Renames Atomic::CompareExchange methods to Atomic::CompareAndSet equivalents. These methods return a boolean and do not get the witness value. This makes space for Atomic::CompareAndExchange methods in a later commit that will return a boolean and get the witness value. This is pre-work for VarHandle accessors which require both forms. Bug: 65872996 Test: art/test.py --host -j32 Change-Id: I9c691250e5556cbfde7811381b06d2920247f1a1
|
cc55e1dcdd2ec669c635420468b3cc4c99740f0a |
|
28-Jul-2017 |
Hans Boehm <hboehm@google.com> |
Don't use fences to implement volatiles Mixing the fence-based implementation with acquire/release instructions on ARMv8 is not just ugly but incorrect. A volatile store; volatile load sequence implemented as a release store followed by ld; dmb does not prevent reordering. This should remove the last places we were using fences to implement volatiles. The HeapReference representation is changed to be an Atomic, thereby avoiding many casts. We no longer inherit from ObjectReference, which was documented to be a value type. HeapReference is not, since it contains an atomic. Disentangle HeapReference and ObjectReference/CompressedReference uses sufficiently to get the code to compile again. They were previously used somewhat interchangably in a few places, in spite of the different intended semantics (value-type vs. a concurrently- updateable field). Further disentanglement might be useful. Flag a strange fence use I haven't yet understood. Test: Booted AOSP. Ran default tests. Some object code inspection. Bug: 31023171 Test: Built AOSP Change-Id: I7b3c3e624f480994541c8e3a79e585071c122a3d
|
65f5f247a367af9d6b9ac63767b69ecf3ab079bc |
|
19-Dec-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Fix race condition btw DelayReferenceRefernent vs Reference.clear(). Rename IsMarkedHeapReference to IsNullOrMarkedHeapReference. Move the null check from the caller of IsMarkedHeapReference into IsNullOrMarkedHeapReference. Make sure that the referent is only loaded once between the null check and the IsMarked call. Use a CAS in ConcurrentCopying::IsNullOrMarkedHeapReference when called from DelayReferenceRefernent. Bug: 33389022 Test: test-art-host without and with CC. Change-Id: I20edab4dac2a4bb02dbb72af0f09de77b55ac08e
|
1a5337fff2cc6cb9d563c8b32aca75f485d23373 |
|
13-Oct-2016 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ObjectArray to ObjPtr Also reduce calls to ObjPtr::Ptr. Bug: 31113334 Test: test-art-host -j32 Change-Id: I73e1b356972bb079b66332f00f7f07451601044e
|
a058fdf0cf7435a13a6e8cae5e3a9bfa1513828d |
|
07-Oct-2016 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::Object setters to ObjPtr Bug: 31113334 Test: test-art-host Change-Id: I2c4c84645e194c3c435a4a6fd670176b0e98671f
|