summaryrefslogtreecommitdiffstats
path: root/runtime/read_barrier-inl.h
Commit message (Collapse)AuthorAgeFilesLines
* ART: Clean up arm64 kNumberOfXRegisters usage.Vladimir Marko2015-05-261-0/+1
| | | | | | | | | | | | | | | | | | | | | Avoid undefined behavior for arm64 stemming from 1u << 32 in loops with upper bound kNumberOfXRegisters. Create iterators for enumerating bits in an integer either from high to low or from low to high and use them for <arch>Context::FillCalleeSaves() on all architectures. Refactor runtime/utils.{h,cc} by moving all bit-fiddling functions to runtime/base/bit_utils.{h,cc} (together with the new bit iterators) and all time-related functions to runtime/base/time_utils.{h,cc}. Improve test coverage and fix some corner cases for the bit-fiddling functions. Bug: 13925192 (cherry picked from commit 80afd02024d20e60b197d3adfbb43cc303cf29e0) Change-Id: I905257a21de90b5860ebe1e39563758f721eab82
* Refactor and improve GC root handlingMathieu Chartier2015-04-061-0/+42
| | | | | | | | | | | | | | | | | | | | | | Changed GcRoot to use compressed references. Changed root visiting to use virtual functions instead of function pointers. Changed root visting interface to be an array of roots instead of a single root at a time. Added buffered root marking helper to avoid dispatch overhead. Root marking seems a bit faster on EvaluateAndApplyChanges due to batch marking. Pause times unaffected. Mips64 is untested but might work, maybe. Before: MarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us After: MarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us Bug: 19264997 Change-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca
* More of the concurrent copying collector.Hiroshi Yamauchi2015-01-231-7/+111
| | | | | Bug: 12687968 Change-Id: I62f70274d47df6d6cab714df95c518b750ce3105
* Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.Ian Rogers2014-11-031-3/+1
| | | | | | | | | | | Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
* Add read barriers for the class and the intern tables.Hiroshi Yamauchi2014-06-131-2/+2
| | | | | | | | | Add read barriers for the strong roots in the intern table and the (strong) roots in the class table to make possible concurrent scanning of them. Bug: 12687968 Change-Id: If6edc33a37e65a8494e66dc3b144138b1530367f
* Add read barriers to the weak roots in the intern table.Hiroshi Yamauchi2014-05-281-2/+2
| | | | | Bug: 12687968 Change-Id: I424f1df76a7e3d7154fb9f3c951c973d19bd640f
* Add a read barrier for weak roots in monitors.Hiroshi Yamauchi2014-05-211-0/+15
| | | | | | | | | | | | | | A weak root requires a read barrier for the to-space invariant to hold because the object pointed to by a weak root can't be marked/forwarded like the one pointed to by a strong root (GC does not know if it's alive or not at that point) and because, without a read barrier, a mutator could access it and obtain a from-space reference, which would violate the to-space invariant. TODO: do similar for the other types of weak roots. Bug: 12687968 Change-Id: I563a0fa4f875e0c21ac96f57696959454e13b15a
* Replace the bool kDoReadBarrier template parameter with an enum.Hiroshi Yamauchi2014-05-011-3/+4
| | | | | | | | | Fix one kDoReadBarrier/kIsVolatile mixup in an Object::GetFieldObject call. Bug: 12687968 Change-Id: I896b1137b21a20c0504abd2bf3fe6f83805f3300
* Insert an empty read barrier call.Hiroshi Yamauchi2014-04-031-0/+47
Bug: 12687968 Change-Id: Ie1d28658e16e09f6a983cb5c1f0d5b375b7ae069