summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2011-08-18 16:49:37 -0700
committer Elliott Hughes <enh@google.com> 2011-08-18 16:49:37 -0700
commitde69d7f8c32be83c405bf5a9c5f15fc655f578fa (patch)
treecb55a919ba3fc9f5ee0e8f70cf22235bd6161532
parent2cfd15d1940c848fd60b454c545a33e2a78d185e (diff)
Clean up mutexes on shutdown.
Change-Id: Ib961f954280c27f8858c4d6fb9010cc833bb28d2
-rw-r--r--src/class_linker.h4
-rw-r--r--src/intern_table.cc4
-rw-r--r--src/intern_table.h1
-rw-r--r--src/jni_internal.cc5
-rw-r--r--src/jni_internal.h1
5 files changed, 14 insertions, 1 deletions
diff --git a/src/class_linker.h b/src/class_linker.h
index 34ad9d7d3a..90ac6780f8 100644
--- a/src/class_linker.h
+++ b/src/class_linker.h
@@ -24,7 +24,9 @@ class ClassLinker {
// Initializes the class linker.
static ClassLinker* Create(const std::vector<DexFile*>& boot_class_path);
- ~ClassLinker() {}
+ ~ClassLinker() {
+ delete classes_lock_;
+ }
// Finds a class by its descriptor name.
// If class_loader is null, searches boot_class_path_.
diff --git a/src/intern_table.cc b/src/intern_table.cc
index 3a0dff8c87..3ef591796e 100644
--- a/src/intern_table.cc
+++ b/src/intern_table.cc
@@ -10,6 +10,10 @@ InternTable::InternTable() {
intern_table_lock_ = Mutex::Create("InternTable::Lock");
}
+InternTable::~InternTable() {
+ delete intern_table_lock_;
+}
+
void InternTable::VisitRoots(Heap::RootVistor* root_visitor, void* arg) {
MutexLock mu(intern_table_lock_);
typedef Table::const_iterator It; // TODO: C++0x auto
diff --git a/src/intern_table.h b/src/intern_table.h
index 61da28b211..0a1554df88 100644
--- a/src/intern_table.h
+++ b/src/intern_table.h
@@ -13,6 +13,7 @@ namespace art {
class InternTable {
public:
InternTable();
+ ~InternTable();
String* Intern(int32_t utf16_length, const char* utf8_data);
void VisitRoots(Heap::RootVistor* root_visitor, void* arg);
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index c53867083c..586b5410c9 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -2583,4 +2583,9 @@ JavaVMExt::JavaVMExt(Runtime* runtime, bool check_jni, bool verbose_jni)
weak_globals(kWeakGlobalsInitial, kWeakGlobalsMax, kWeakGlobal) {
}
+JavaVMExt::~JavaVMExt() {
+ delete globals_lock;
+ delete weak_globals_lock;
+}
+
} // namespace art
diff --git a/src/jni_internal.h b/src/jni_internal.h
index 1a4235d118..a6fce054ee 100644
--- a/src/jni_internal.h
+++ b/src/jni_internal.h
@@ -21,6 +21,7 @@ class Thread;
struct JavaVMExt {
JavaVMExt(Runtime* runtime, bool check_jni, bool verbose_jni);
+ ~JavaVMExt();
/*
* Load native code from the specified absolute pathname. Per the spec,