History log of /art/runtime/gc/allocator/rosalloc.h
Revision Date Author Comments
b62f2e6f3f8d66b3231ecec14ea9365733371b39 23-Mar-2016 Hiroshi Yamauchi <yamauchi@google.com> Add RosAlloc stats dump.

For better understanding of the RosAlloc space.

(cherrypick commit 565c2d9bce43c430d4267c82f5702160d971e712)

Bug: 27744947
Bug: 9986565

Change-Id: I8309761a68fbc143bbcd8458a9194085aace7c3e
565c2d9bce43c430d4267c82f5702160d971e712 23-Mar-2016 Hiroshi Yamauchi <yamauchi@google.com> Add RosAlloc stats dump.

For better understanding of the RosAlloc space.

Bug: 27744947
Bug: 9986565
Change-Id: I02a8028b9728f6862e5e78588a368b8029bb5c1a
b5e31f3dd5f792ff60225a4daa048a57d261cdd0 19-Feb-2016 Hiroshi Yamauchi <yamauchi@google.com> Fix rosalloc issues with valgrind.

The issue was that the MemoryToolMallocSpace constructor was
explicitly undefining the tail of the mem map, and when RosAlloc
expanded the space beyond the initial size, it gets errors from using
the zero but undefined (due to the above undefining) memory
content. RosAlloc zeroes memory on free (as opposed to zeroes on
allocation) and relied on the zero-initialized (hence defined in terms
of valgrind) mem map at the initialization time.

Change RosAlloc so that it does explicitly zeroes the entire mem map at
the initialization time and it does not rely on the zero-initialized of
the mem map.

Also, avoid explicitly changing the valgrind state in the
MemoryToolMallocSpace constructor, which happens after the allocator is
initialized because that may interfere with the allocator internal
initialization.

Bug: 27156726
Bug: 9986565

Change-Id: I3b36d2d987c25ce9ff5213278109c425f480b0d9
7ed9c561048d79083b6d0576c71a986a3123bca6 03-Feb-2016 Hiroshi Yamauchi <yamauchi@google.com> Use 8-byte increment bracket sizes for rosalloc thread local runs.

Very small space savings (< 1%) after device boot and up to 10%
allocation speedup.

Some minor cleanup.

Bug: 9986565

Change-Id: I51d791c4674d6944fe9a7ee78537ac3490c1a02c
dc412b6f49a65774b7af654f65cbff619cb7d85a 15-Oct-2015 Hiroshi Yamauchi <yamauchi@google.com> Revert "Revert "Implement rosalloc fast path in assembly for 32 bit arm.""

With a heap poisoning fix.

This reverts commit cf91c7d973f3b2f491abc61d47c141782c96d46e.

Bug: 9986565
Change-Id: Ia72edbde65ef6119e1931a77cc4c595a0b80ce31
cf91c7d973f3b2f491abc61d47c141782c96d46e 15-Oct-2015 Nicolas Geoffray <ngeoffray@google.com> Revert "Implement rosalloc fast path in assembly for 32 bit arm."

Tentative. Looks like heap poisoning breaks with this change.

bug: 9986565

This reverts commit e6316940db61faead36f9642cce137d41fc8f606.

Change-Id: I5c63758221464fe319315f40ae79c656048faed0
e6316940db61faead36f9642cce137d41fc8f606 08-Oct-2015 Hiroshi Yamauchi <yamauchi@google.com> Implement rosalloc fast path in assembly for 32 bit arm.

Measurements (N5, ms)
BinaryTrees: 1702 -> 987 (-42%)
MemAllocTest: 2480 -> 2270 (-8%)

Bug: 9986565

Change-Id: I460af3626ad724078463d27cf74a94b7ff7468c5
31bf42c48c4d00f0677c31264bba8d21618dae67 24-Sep-2015 Hiroshi Yamauchi <yamauchi@google.com> Use free lists instead of bitmaps within rosalloc runs.

Speedups (CMS GC/N5)
BinaryTrees: 2008 -> 1694 ms (-16%)
MemAllocTest: 2303 -> 2076 ms (-10%)

TODO: Add assembly fast path code.

Bug: 9986565

Change-Id: I9dd7cbfd8e1ae083a399e70abaf2064a959f24fa
90443477f9a0061581c420775ce3b7eeae7468bc 17-Jul-2015 Mathieu Chartier <mathieuc@google.com> Move to newer clang annotations

Also enable -Wthread-safety-negative.

Changes:
Switch to capabilities and negative capabilities.

Future work:
Use capabilities to implement uninterruptible annotations to work
with AssertNoThreadSuspension.

Bug: 20072211

Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
1e13374baf7dfaf442ffbf9809c37c131d681eaf 20-May-2015 Evgenii Stepanov <eugenis@google.com> Generalize Valgrind annotations in ART to support ASan.

Also add redzones around non-fixed mem_map(s).
Also extend -Wframe-larger-than limit to enable arm64 ASan build.

Change-Id: Ie572481a25fead59fc8978d2c317a33ac418516c
41b175aba41c9365a1c53b8a1afbd17129c87c14 19-May-2015 Vladimir Marko <vmarko@google.com> ART: Clean up arm64 kNumberOfXRegisters usage.

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
80afd02024d20e60b197d3adfbb43cc303cf29e0 19-May-2015 Vladimir Marko <vmarko@google.com> ART: Clean up arm64 kNumberOfXRegisters usage.

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
Change-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7
3481ba2c4e4f3aa80d8c6d50a9f85dacb56b508b 13-Apr-2015 Vladimir Marko <vmarko@google.com> ART: Clean up includes.

Reduce dependencies to improve incremental build times.
Break up circular dependency involving class_linker-inl.h.

Change-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db
4460a84be92b5a94ecfb5c650aef4945ab849c93 09-Mar-2015 Hiroshi Yamauchi <yamauchi@google.com> Rosalloc thread local allocation path without a cas.

Speedup on N4:
MemAllocTest 3044 -> 2396 (~21% reduction)
BinaryTrees 4101 -> 2929 (~26% reduction)

Bug: 9986565
Change-Id: Ia1d1a37b9e001f903c3c056e8ec68fc8c623a78b
3f3c6c030db14e47d3022f00403f46240623f339 20-Nov-2014 Hiroshi Yamauchi <yamauchi@google.com> Tune rosalloc buffer sizes.

We now use one-page buffers for size brackets 4-7, instead of two-page
buffers, and the first 8 size brackets for thread-local allocations,
instead of 11.

No slowdown observed with MemAllocTest, EvaluateAndApplyChanges, and
BinaryTrees.

(cherrypick commit c4cd95fa37b7138a0fa26d07c235aa409542aecd)

Bug: 18377775
Change-Id: I311f3adf9cab660d258833b17df7e6d905f73c72
c4cd95fa37b7138a0fa26d07c235aa409542aecd 20-Nov-2014 Hiroshi Yamauchi <yamauchi@google.com> Tune rosalloc buffer sizes.

We now use one-page buffers for size brackets 4-7, instead of two-page
buffers, and the first 8 size brackets for thread-local allocations,
instead of 11.

No slowdown observed with MemAllocTest, EvaluateAndApplyChanges, and
BinaryTrees.

Bug: 18377775

Change-Id: Ie1bb46bcf5d3729197e48e26a27da4cc39dd807e
d7576328811e5103e99d31f834a857522cc1463f 25-Oct-2014 Andreas Gampe <agampe@google.com> ART: Fix valgrind

Allow ValgrindMallocSpace wrapper for RosAlloc.Requires refactoring,
as ValgrindMallocSpace was bound to the signature of DlMallocSpace.

Also turn of native stack dumping when running under Valgrind to
work around b/18119146.

Ritzperf before and after
Mean 3190.725 3082.475
Standard Error 11.68407 10.37911
Mode 3069 2980
Median 3182.5 3051.5
Variance 16382.117 12927.125
Standard Deviation 127.99264 113.69751
Kurtosis 1.1065632 0.3657799
Skewness 0.9013805 0.9117792
Range 644 528
Minimum 2991 2928
Maximum 3635 3456
Count 120 120

Bug: 18119146
Change-Id: I25558ea7cb578406011dede9d3d0bdbfee4ff4d5
277ccbd200ea43590dfc06a93ae184a765327ad0 04-Nov-2014 Andreas Gampe <agampe@google.com> ART: More warnings

Enable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,
and -Wunused-but-set-parameter for GCC builds.

Change-Id: I81bbdd762213444673c65d85edae594a523836e5
6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f 31-Oct-2014 Ian Rogers <irogers@google.com> Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.

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
59c07060a6fbb93e455b44f00098cafb8e7e26cc 10-Oct-2014 Ian Rogers <irogers@google.com> Work around ICE bugs with MIPS GCC and O1.

Also, work around GCC warning bugs where array accesses with explicit
bounds checks are flagged as being out-of-bounds. Significantly, clean-up
the HandleScope so the array accesses don't appear out-of-bounds at compile
time.

Change-Id: I5d66567559cc1f97cd0aa02c0df8575ebadbfe3d
13735955f39b3b304c37d2b2840663c131262c18 08-Oct-2014 Ian Rogers <irogers@google.com> stdint types all the way!

Change-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08
58553c7fd89ce69857017322444265469bb6af62 17-Sep-2014 Mathieu Chartier <mathieuc@google.com> Add allocation tracking allocators to ROSAlloc

Used to monitor native memory usage, results are approximately
12-100KB memory per app.

Change-Id: If5a46cd8d543851948a8cb69487f3044965b44ce
e63db27db913f1a88e2095a1ee8239b2bb9124e8 16-Jul-2014 Ian Rogers <irogers@google.com> Break apart header files.

Create libart-gtest for common runtime and compiler gtest routines.
Rename CompilerCallbacksImpl that is quick compiler specific.
Rename trace clock source constants to not use the overloaded profiler term.

Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
f37a88b8e6db6c587fa449a12e40cb46be1689fc 10-Jul-2014 Zuo Wang <zuo.wang@intel.com> ART: Compacting ROS/DlMalloc spaces with semispace copy GC

Current semispace copy GC is mainly associated with bump pointer
spaces. Though it squeezes fragmentation most aggressively, an extra
copy is required to re-establish the data in the ROS/DlMalloc space to allow
CMS GCs to happen afterwards. As semispace copy GC is still stop-the-world,
this not only introduces unnecessary overheads but also longer response time.
Response time indicates the time duration between the start of transition
request and the start of transition animation, which may impact the user
experience.

Using semispace copy GC to compact the data in a ROS space to another ROS(or
DlMalloc space to another DlMalloc) space solves this problem. Although it
squeezes less fragmentation, CMS GCs can run immediately after the compaction.

We apply this algorithm in two cases:
1) Right before throwing an OOM if -XX:EnableHSpaceCompactForOOM is passed in
as true.
2) When app is switched to background if the -XX:BackgroundGC option has value
HSpaceCompact.

For case 1), OOMs are significantly delayed in the harmony GC stress test,
with compaction ratio up to 0.87. For case 2), compaction ratio around 0.5 is
observed in both built-in SMS and browser. Similar results have been obtained
on other apps as well.

Change-Id: Iad9eabc6d046659fda3535ae20f21bc31f89ded3
Signed-off-by: Wang, Zuo <zuo.wang@intel.com>
Signed-off-by: Chang, Yang <yang.chang@intel.com>
Signed-off-by: Lei Li <lei.l.li@intel.com>
Signed-off-by: Lin Zang <lin.zang@intel.com>
654dd48e2230e16bfaa225decce72b52642e2f78 09-Jul-2014 Hiroshi Yamauchi <yamauchi@google.com> Improve the OOME fragmentation message.

Change-Id: I390d3622f8d572ec7e34ea6dff9e1e0936e81ac1
a5b5c55c8585b7ce915f0c7e1f66d121a7f7a078 24-Jun-2014 Mathieu Chartier <mathieuc@google.com> Add notion of released vs empty pages to ROSAlloc.

A notion of released vs empty pages helps get a more accurate view of
how much memory was released during heap trimming. Otherwise we get
that the same pages possibly get madvised multiple times without
getting dirtied.

Also enabled heap trimming of rosalloc spaces even when we care about
jank. This is safe to do since the trimming process only acquires
locks for short periods of time.

Dalvik PSS reduces from ~52M to ~50M after boot on N4.

Bug: 9969166

Change-Id: I4012e0a2554f413d18efe1a0371fe18d1edabaa9
a1c1c71e24c93a720bbf13de129c75a9a0bde37a 24-Jun-2014 Mathieu Chartier <mathieuc@google.com> Use reader lock of bulk free lock when not freeing.

Should help reduce contention observed in systrace.

Change-Id: Iadb81728d4ba797c3a68acea795b15d7f212e89b
c5f17732d8144491c642776b6b48c85dfadf4b52 06-Jun-2014 Ian Rogers <irogers@google.com> Remove deprecated WITH_HOST_DALVIK.

Bug: 13751317
Fix the Mac build:
- disable x86 selector removal that causes OS/X 10.9 kernel panics,
- madvise don't need does zero memory on the Mac, factor into MemMap
routine,
- switch to the elf.h in elfutils to avoid Linux kernel dependencies,
- we can't rely on exclusive_owner_ being available from other pthread
libraries so maintain our own when futexes aren't available (we
can't rely on the OS/X 10.8 hack any more),
- fix symbol naming in assembly code,
- work around C library differences,
- disable backtrace in DumpNativeStack to avoid a broken libbacktrace
dependency,
- disable main thread signal handling logic,
- align the stack in stub_test,
- use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables.

Not all host tests are passing on the Mac with this change. dex2oat
works as does running HelloWorld.
Change-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3
700a402244a1a423da4f3ba8032459f4b65fa18f 20-May-2014 Ian Rogers <irogers@google.com> Now we have a proper C++ library, use std::unique_ptr.

Also remove the Android.libcxx.mk and other bits of stlport compatibility
mechanics.

Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61
507dfdd147c97bfbadebfd63584d094b6a4e7b47 16-May-2014 Ian Rogers <irogers@google.com> Compatibility layer to transition from UniquePtr to std::unique_ptr.

Use ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,
for the host switch to std::unique_ptr. For now the type remains called
UniquePtr.
Make dalvik compile with clang on the host, move its build to C++11.

Change-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12
5fcfa7d9d97246f7eb48a74356cb00ec2cbc0181 15-May-2014 Ian Rogers <irogers@google.com> Move RoS allocator to use unordered_set.

Work-around existing stlport issues for the target. This will go away when the
target is using libc++.

Change-Id: I8f213ecd9dc7d93d17f4a0d7e84182c12af6ca1b
0651d41e41341fb2e9ef3ee41dc1f1bfc832dbbb 29-Apr-2014 Mathieu Chartier <mathieuc@google.com> Add thread unsafe allocation methods to spaces.

Used by SS/GSS collectors since these run with mutators suspended and
only allocate from a single thread. Added AllocThreadUnsafe to
BumpPointerSpace and RosAllocSpace. Added AllocThreadUnsafe which uses
current runs as thread local runs for a thread unsafe allocation.
Added code to revoke current runs which are the same idx as thread
local runs.

Changed:
The number of thread local runs in each thread is now the the number
of thread local runs in RosAlloc instead of the number of size
brackets.

Total GC time / time on EvaluateAndApplyChanges.
TLAB SS:
Before: 36.7s / 7254
After: 16.1s / 4837

TLAB GSS:
Before: 6.9s / 3973
After: 5.7s / 3778

Bug: 8981901

Change-Id: Id1d264ade3799f431bf7ebbdcca6146aefbeb632
59e676038383cbbf5997601bc16b04b8d1cdca68 26-Apr-2014 Andreas Gampe <agampe@google.com> Rosalloc: fix signature for 64b

Change-Id: I56df1df0118a0aa1584e51fb574902f7eb88cd80
73d1e17b3afc7d5e56184f90bf819dc64956448a 12-Apr-2014 Mathieu Chartier <mathieuc@google.com> Enable reading page map without lock in RosAlloc::BulkFree

Enabling this flag greatly reduces how much time was spent in the GC.
It was not done previously since it was regressing MemAllocTest. With
these RosAlloc changes, the benchmark score no longer regresses after
we enable the flag.

Changed Run::AllocSlot to only have one mode of allocation. The new
mode is finding the first free bit in the bitmap. This was
previously the slow path but is now the fast path. Some optimizations
which enabled this include always having the alloc bitmap bits which
correspond to invalid slots be set to 1. This prevents us from needing
a bound check since we will never end up allocating there.

Changed revoking thread local buffer to point to an invalid run. The
invalid run is just a run which always has all the allocation bits set
to 1. When a thread attempts to do a thread local allocation from here
it will always fail and go slow path. This eliminates the need for a
null check for revoked runs.

Changed zeroing of memory to happen during free, AllocPages should
always return zeroed memory. Added prefetching which happens when we
allocate a run.

Some refactoring to reduce duplicated code.

Ergonomics changes: Changed kStickyGcThroughputAdjustment to 1.0,
this helps reduce GC time.

Measurements (3 samples per benchmark):
Before: MemAllocTest scores: 3463, 3445, 3431
EvaluateAndApplyChanges score | total GC time
Iter 1: 3485, 23.602436s
Iter 2: 3434, 22.499882s
Iter 3: 3483, 23.253274s

After: MemAllocTest scores: 3495, 3417, 3409
EvaluateAndApplyChanges score | total GC time:
Iter 1: 3375, 17.463462s
Iter 2: 3358, 16.185188s
Iter 3: 3367, 15.822312s

Bug: 8788501
Bug: 11790317
Bug: 9986565
Change-Id: Ifd273a054824028dabed27c07c081dde1816f93c
8585bad7be19ee4901333f7d02d1d4d3f04877d4 12-Apr-2014 Mathieu Chartier <mathieuc@google.com> Return bytes freed from RosAlloc.

There was a problem with how RosAlloc space sweeping worked caused by
using the object size in the FreeList call, this won't work well with
class unloading since the object's class may be freed before the
object.

Bug: 13989231
Change-Id: I3df439c312310720fd34249334dec85030166fe9
d9a88de76de4c81ad75340b824df64a68c739351 07-Apr-2014 Hiroshi Yamauchi <yamauchi@google.com> Implement rosalloc page trimming without suspending threads.

Also, making it more efficient by not going through the chunks smaller
than the page size by not using InspectAll().

Change-Id: I79ceb0374cb8aba5f6b8dde1afbace9af98b6cff
3c79a30cc6eeed11b80e61119595b7a586b36435 03-Feb-2014 Hiroshi Yamauchi <yamauchi@google.com> Fix a race condition in RosAlloc.

Fix a race condition in RosAlloc between RosAlloc::BulkFree() and
RosAlloc::RevokeThreadLocalRuns() with regard to bulk_free_bit_map.

(Cherry-pick commit 70f60042558e0a766e98f2aaefbf80596ace4d53)

Bug: 13192845
Bug: 12592026
Change-Id: I21afe8f9f3ad4166762d2bbfa0a6ae9484d8b12b
c93c530efc175954160c3834c93961a1a946a35a 21-Mar-2014 Hiroshi Yamauchi <yamauchi@google.com> Revoke rosalloc thread-local buffers at the checkpoint.

In the mark sweep collector, rosalloc thread-local buffers were
revoked during the pause. Now, they are revoked at the thread
checkpoint, as opposed to during the pause, which appears to help
reduce the pause time.

In Ritz MemAllocTest, the average sticky pause time went down ~20%
(925 us -> 724 us).

Bug: 13394464
Bug: 9986565
Change-Id: I104992a11b46d59264c0b9aa2db82b1ccf2826bc
661974a5561e5ccdfbac8cb5d8df8b7e6f3483b8 09-Jan-2014 Mathieu Chartier <mathieuc@google.com> Fix valgrind gtests and memory leaks.

All tests pass other than image_test which passes if some bad reads
are disabled (buzbee working on this).

Change-Id: Ifd6b6e3aed0bc867703b6e818353a9f296609422
26d69ffc0ebc98fbc5f316d8cd3ee6ba5b2001ac 27-Feb-2014 Hiroshi Yamauchi <yamauchi@google.com> Decrease lock uses in RosAlloc::BulkFree().

Read rosalloc page map entries without a lock.

Disabled for now.

This change speeds up Ritz MemAllocTest by ~25% on host and reduces
the GC sweep time, but somehow slows it down by ~5% on N4, which is
why it's disabled for now. TODO: look into the slowdown on N4 more.

Bug: 8262791
Bug: 11790317
Change-Id: I936bbee9cfbd389e70d6343503bf0923865d2a2c
b48b9eb6d181a1f52e2e605cf26a21505f1d46ed 01-Mar-2014 Ian Rogers <irogers@google.com> Fix clang to compile and run host tests.

Don't use the computed goto interpreter with clang 3.4 as it causes compilation
to hang.
Avoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it
sets clang incompatible cflags.
Most fixes are self-evident, for the quick dex file method inliner the enums
were being used with ostreams, so fix the enums and operator out python script
to allow this.
Note this change effects portable but this is untestable as portable was broken
by ELF file and mc linker changes.

Change-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903
6fac447555dc94a935b78198479cce645c837b89 26-Feb-2014 Ian Rogers <irogers@google.com> Make allocations report usable size.

Work-in-progress to allow arrays to fill usable size. Bug: 13028925.
Use C++11's override keyword on GCC >= 2.7 to ensure that we override GC and
allocator methods.
Move initial mirror::Class set up into a Functor so that all allocated objects
have non-zero sizes. Use this property to assert that all objects are never
larger than their usable size.
Other bits of GC related clean-up, missing initialization, missing use of
const, hot methods in .cc files, "unimplemented" functions that fail at
runtime in header files, reducing header file includes, move valgrind's space
into its own files, reduce number of array allocation routines.

Change-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa
a4adbfd44032d70e166e6f18096bbbed05a990ba 05-Feb-2014 Hiroshi Yamauchi <yamauchi@google.com> RosAlloc verification.

If enabled, RosAlloc verification checks the allocator internal
metadata and invariants to detect bugs, heap corruptions, and race
conditions. Added runtime options for enabling and disabling
it. Enable it for the debug build.

Bug: 9986565
Bug: 12592026
Change-Id: I923742b87805ae839f1549d78d0d492733da6a58
70f60042558e0a766e98f2aaefbf80596ace4d53 03-Feb-2014 Hiroshi Yamauchi <yamauchi@google.com> Fix a race condition in RosAlloc.

Fix a race condition in RosAlloc between RosAlloc::BulkFree() and
RosAlloc::RevokeThreadLocalRuns() with regard to bulk_free_bit_map.

Change-Id: I128917d5bdfe2dab604174ca4cbe228282578b8a
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
Bug: 12592026
573f7d2d68e1838a0485e6b40d90c967526e00c2 17-Dec-2013 Hiroshi Yamauchi <yamauchi@google.com> Fix an array copy benchmark regression.

Add different page release modes to rosalloc.

Bug: 12064551
Change-Id: Ib837bbd1a2757741a4e2743e0a1272bf46a30252
3c2856e939f3daa7a95a1f8cb70f47e7a621db3c 22-Nov-2013 Hiroshi Yamauchi <yamauchi@google.com> Inline RosAlloc::Alloc().

Bug: 9986565
Change-Id: I9bc411b8ae39379f9d730f40974857a585405fde
e5eedcb4a634246d1f912992853441f715d705cc 18-Nov-2013 Hiroshi Yamauchi <yamauchi@google.com> Fix cpplint errors.

Change-Id: I21f7423ebe69a77d456b0d318de73448489d2df4
cf58d4adf461eb9b8e84baa8019054c88cd8acc6 26-Sep-2013 Hiroshi Yamauchi <yamauchi@google.com> A custom 'runs-of-slots' memory allocator.

Bug: 9986565
Change-Id: I0eb73b9458752113f519483616536d219d5f798b