summaryrefslogtreecommitdiffstats
path: root/runtime/runtime.cc
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-02-07 12:18:39 -0800
committerMathieu Chartier <mathieuc@google.com>2014-02-08 15:23:36 -0800
commit412c7fced915fc8d4d5e4166e977d55c809168a6 (patch)
treeb8efee7f46a440f3e89765b1e9b2aa6454839c87 /runtime/runtime.cc
parent109e2b34799a377a0407781fc32ec1ec607d6c41 (diff)
downloadart-412c7fced915fc8d4d5e4166e977d55c809168a6.zip
art-412c7fced915fc8d4d5e4166e977d55c809168a6.tar.gz
art-412c7fced915fc8d4d5e4166e977d55c809168a6.tar.bz2
Make debugger / jdwp compaction safe.
Fixed GetInstances, GetReferringObjects, CountInstances to use VisitObjects instead of the live bitmap. We now treat the object registry as system weaks and update the objects when/if they move. Also added the recent_allocation_records_ as roots. Bug: 12936165 Change-Id: I615c289efbf2977ceab5c4ffa73d216d799e6e33
Diffstat (limited to 'runtime/runtime.cc')
-rw-r--r--runtime/runtime.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 17afb43..09d05d1 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -379,6 +379,7 @@ void Runtime::SweepSystemWeaks(RootVisitor* visitor, void* arg) {
GetInternTable()->SweepInternTableWeaks(visitor, arg);
GetMonitorList()->SweepMonitorList(visitor, arg);
GetJavaVM()->SweepJniWeakGlobals(visitor, arg);
+ Dbg::UpdateObjectPointers(visitor, arg);
}
static gc::CollectorType ParseCollectorType(const std::string& option) {
@@ -1495,12 +1496,14 @@ void Runtime::DisallowNewSystemWeaks() {
monitor_list_->DisallowNewMonitors();
intern_table_->DisallowNewInterns();
java_vm_->DisallowNewWeakGlobals();
+ Dbg::DisallowNewObjectRegistryObjects();
}
void Runtime::AllowNewSystemWeaks() {
monitor_list_->AllowNewMonitors();
intern_table_->AllowNewInterns();
java_vm_->AllowNewWeakGlobals();
+ Dbg::AllowNewObjectRegistryObjects();
}
void Runtime::SetCalleeSaveMethod(mirror::ArtMethod* method, CalleeSaveType type) {