summaryrefslogtreecommitdiffstats
path: root/src/mirror/array.cc
diff options
context:
space:
mode:
authorIan Rogers <irogers@google.com>2013-05-02 21:10:01 -0700
committerIan Rogers <irogers@google.com>2013-06-21 11:10:42 -0700
commit1d54e73444e017d3a65234e0f193846f3e27472b (patch)
tree1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7 /src/mirror/array.cc
parent4c22e7eabef3f815841dfc6e0d5bbead96150752 (diff)
downloadart-1d54e73444e017d3a65234e0f193846f3e27472b.zip
art-1d54e73444e017d3a65234e0f193846f3e27472b.tar.gz
art-1d54e73444e017d3a65234e0f193846f3e27472b.tar.bz2
GC clean up.
Greater use of directories and namespaces. Fix bugs that cause verify options to fail. Address numerous other issues: GC barrier wait occurring holding locks: GC barrier waits occur when we wait for threads to run the check point function on themselves. This is happening with the heap bitmap and mutator lock held meaning that a thread that tries to take either lock exclusively will block waiting on a thread that is waiting. If this thread is the thread we're waiting to run the check point then the VM will deadlock. This deadlock occurred unnoticed as the call to check for wait safety was removed in: https://googleplex-android-review.googlesource.com/#/c/249423/1. NewTimingLogger: Existing timing log states when a split ends but not when it begins. This isn't good for systrace, in the context of GC it means that races between mutators and the GC are hard to discover what phase the GC is in, we know what phase it just finished and derive but that's not ideal. Support for only 1 discontinuous space: Code special cases continuous and large object space, rather than assuming we can have a collection of both. Sorted atomic stacks: Used to improve verification performance. Simplify their use and add extra checks. Simplify mod-union table abstractions. Reduce use of std::strings and their associated overhead in hot code. Make time units of fields explicit. Reduce confusion that IsAllocSpace is really IsDlMallocSpace. Make GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik) rather than the max memory footprint. Change-Id: Ie87067140fa4499b15edab691fe6565d79599812
Diffstat (limited to 'src/mirror/array.cc')
-rw-r--r--src/mirror/array.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mirror/array.cc b/src/mirror/array.cc
index 84c2dc6..e2e63a6 100644
--- a/src/mirror/array.cc
+++ b/src/mirror/array.cc
@@ -20,7 +20,7 @@
#include "class-inl.h"
#include "common_throws.h"
#include "dex_file-inl.h"
-#include "gc/card_table-inl.h"
+#include "gc/accounting/card_table-inl.h"
#include "object-inl.h"
#include "object_array.h"
#include "object_array-inl.h"
@@ -51,7 +51,7 @@ Array* Array::Alloc(Thread* self, Class* array_class, int32_t component_count,
return NULL;
}
- Heap* heap = Runtime::Current()->GetHeap();
+ gc::Heap* heap = Runtime::Current()->GetHeap();
Array* array = down_cast<Array*>(heap->AllocObject(self, array_class, size));
if (array != NULL) {
DCHECK(array->IsArrayInstance());