summaryrefslogtreecommitdiffstats
path: root/vm/alloc/MarkSweep.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Dalvik is dead, long live Dalvik!Brian Carlstrom2014-08-051-942/+0
| | | | | | | | | | | | | | | | | | | | | | | croot cd dalvik repo start dalvik-is-dead-long-live-dalvik . repo sync -c . git rm -r README.txt git rm -r dexopt git rm -r tools/deadcode.py git rm -r tools/dex-preopt git rm -r tools/dexcheck git rm -r tools/gdbjithelper git rm -r unit-tests git rm -r vm git checkout HEAD vm/Common.h (needed by libdex) git checkout HEAD vm/DalvikVersion.h (needed by libdex) git checkout HEAD vm/Profile.h (needed by dmtracedump) git add Android.mk (after removing vm, dexopt, and unit-tests references) git commit -a -m 'Dalvik is dead, long live Dalvik!' Bug: 14298175 Change-Id: I9dd13053677629d13496d4238af4374452cda415
* Dalvik: Better compatibility with different compilersBernhard Rosenkränzer2013-12-121-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes building with clang 3.4, and possibly future versions of gcc: - Don't error out on unused functions generated by gen-mterp.py even when we're using -Werror - Eliminate some dead code (Word/kWordSize definition) clang warns about In order to avoid the need for -Wno-error=unused-function, gen-mterp.py would have to be a lot smarter than it currently is. Currently, it copies all code from header.cpp and then adds CPU specific routines. The code in header.cpp defines all sorts of functions that may or may not be used by the CPU specific routines, depending on whether or not the CPU specific bits have a better implementation available. To fix this without -Wno-error=unused-functions, gen-mterp.py would have to actually read the CPU specific bits and based on that throw out parts of header.cpp that aren't needed. This seems to be too much effort to just avoid having a couple of unused functions in the code that can be thrown out at compile time anyway, especially since this is in dalvik which will likely not see another major revision. Change-Id: I2874c6f05186721636518e422b0f39a3d8e731cd Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
* Fix broken card table asserts.Mathieu Chartier2013-08-081-2/+3
| | | | | | | | | | | | | | | | | | We had an off by one error due to getting the card for the heap source limit. This is not a valid card when the heap is at maximum size, but doesn't need to be since we do less than comparison on it. Fixed another error where we didn't take into account the biased begin in an assert. Did a bit of refactoring by removing useless if statement. Fixes 061-out-of-memory, 080-oom-throw. Bug: https://code.google.com/p/android/issues/detail?id=42868 (cherry picked from commit ee903e174872edd0ecc6f1940c7412892cd49123) Change-Id: If677c93e46fe1ee5729eec1820b1bd9682b4f924
* Allow max free size of heap to be configured.Ian Rogers2012-09-241-2/+0
| | | | | | | | | This allows the max free to be larger on devices with more memory and thereby avoid GCs (that may be more frequent due to larger bitmaps). b/6606849 Change-Id: I4063a303ea4be3c1f227259d699fb238a806451f
* Revert "Revert "Trim pre-Zygote fork, fix under-estimate of heap limit.""Ian Rogers2012-08-281-1/+1
| | | | This reverts commit 4c7e27186d87ccd40646fd4f514dc982ff5b40b1.
* Revert "Trim pre-Zygote fork, fix under-estimate of heap limit."Ian Rogers2012-08-241-1/+1
| | | | This reverts commit 2f8d5e11f735e9ee8e235c31b3f113f6c90ad63c.
* Trim pre-Zygote fork, fix under-estimate of heap limit.Ian Rogers2012-08-221-1/+1
| | | | | | | | | | | | | | | | | | | Card scanning uses dvmHeapSourceGetValue to scan from the heap base to the total foot print of the heap. Trimming the Zygote may lower the footprint of the heap by creating a hole in the middle. This hole is unaccounted for in the card scanning leading to missed dirty cards. This was a regression introduced by: https://android-review.googlesource.com/#/c/41728/ as it didn't #define MORECORE_CANNOT_TRIM 1 that was previously defined here: https://android-review.googlesource.com/#/c/41731/4/libcutils/mspace.c Introduce a notion of dvmHeapSourceGetLimit so that card scanning doesn't rely on footprint. Trim the heap before forking the Zygote. This change continues to enable morecore trimming of mspaces. Change-Id: I3f0b12371097f50a1f920cac25846ca08685e7ed
* Revert "Use the card table to scan the immune region of the heap."Ben Cheng2011-10-101-208/+96
| | | | | | | | | | | | | | | | | This reverts commit 6c355e53332502314c3d82a7afcf898d66118f27. Conflicts are resolved in: vm/alloc/CardTable.cpp vm/alloc/HeapBitmap.cpp vm/alloc/HeapInternal.h vm/alloc/HeapSource.cpp vm/alloc/MarkSweep.cpp Tested with overnight monkey runs + Delaunay. Bug: 5037417 Change-Id: I400eff8542d0bddd865ce570a479f7750c1ba484
* Fix the jweak implementation.Elliott Hughes2011-07-111-8/+8
| | | | | | | | | | | | | We need to distinguish between "cleared weak global" and "deleted weak global". Previously we used NULL for both. Now we add a magic value for cleared weak globals. I've also switched the GC over to using iterators, so IndirectRefTable itself becomes responsible for not showing bad pointers to the GC. I've also improved the reference table dumping to cope with the new scheme and to be a bit easier to read (through extra indentation). Bug: 4260055 Change-Id: I26af301fb2b46d014c6f6b0915a8f8a7fb6d7c5b
* Clean up IndirectRefTable a bit.Elliott Hughes2011-06-211-1/+1
| | | | | | | The main purpose here was to have slightly less unclear warnings for JNI local reference abuse. Change-Id: I2c6378dd0a94d8afb96a8e409f7460205e3cd315
* Favor Object* over void* for the heap bitmap interfaces.Carl Shapiro2011-06-071-5/+4
| | | | Change-Id: I615dbff3e81a1128dc3ba43d6d426c370ae3abcf
* Establish a subclass relationships among the field types.Carl Shapiro2011-05-061-5/+5
| | | | Change-Id: Id349b359489bb6b1bbb4ab78d29d85c0e6b33799
* Use C++ linkage in GC headers and remove unneeded typedefs.Carl Shapiro2011-04-271-4/+4
| | | | | | | | Some interfaces in Alloc.h had to be left with C linkage as they are referenced by the interpreter assembler code. That dependency will be addressed in a future commit. Change-Id: I6b2097a2139ddf6b4b13e592710e241442e08488
* Remove unneeded void argument list declarations.Carl Shapiro2011-04-201-4/+4
| | | | Change-Id: Ica749f6defa890363ec531b29e25bc415dc2cbb9
* Add a class flag CLASS_ISCLASS.Dan Bornstein2011-04-131-2/+2
| | | | | | | | | | | | This flag is only turned on for the unique class Class, and it is meant to make it possible to quickly test objects for "classiness" as well as trivially figure out if one is looking at the class Class itself. Bonus: Made a few places that directly set class->accessFlags use the prescribed macro for doing same. Change-Id: I89fce708c407b597f28ce610b778123f5dcaecf6
* Add additional asserts and combine declarations with definitions.Carl Shapiro2011-04-111-63/+38
| | | | Change-Id: Ibdc37f3d7eb6385da1059d5525727b090626ec4c
* Fix for loops and eliminate some other undesirable idioms.Carl Shapiro2011-04-081-20/+11
| | | | | | | | | | Previously, we were using a non-standard C dialect which did not permit the nicer variable scoping in loops. Now that we are using C++ in the collector we can guarantee that feature is available. This change also rearranges some of the surrounding code to take advantage of the more flexible scoping rules. Change-Id: I9be35794cc12bcbc0d5299fe387d4bc406481075
* Compile the garbage collector and heap profiler as C++.Carl Shapiro2011-04-081-0/+1093
Change-Id: I25d8fa821987a3dd6d7109d07fd42dbf2fe0e589