summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2014-09-11 23:57:49 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-09-11 23:57:49 +0000
commit59dae45a3d1ef83771fb78421fcf8fda838b4d16 (patch)
tree6cccc50847537d9dd807b49347b7bec846e5ec6e
parent02308cf78484bcd125d92ebb27185d890889b92a (diff)
parent2e158932354e5950eb59c79498ab46b0586885fd (diff)
Merge "Delete pin table"
-rw-r--r--runtime/java_vm_ext.cc27
-rw-r--r--runtime/java_vm_ext.h14
-rw-r--r--runtime/jni_internal.cc8
3 files changed, 1 insertions, 48 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc
index 0ac5b88e80..1444d9762a 100644
--- a/runtime/java_vm_ext.cc
+++ b/runtime/java_vm_ext.cc
@@ -36,9 +36,6 @@
namespace art {
-static const size_t kPinTableInitial = 16; // Arbitrary.
-static const size_t kPinTableMax = 1024; // Arbitrary sanity check.
-
static size_t gGlobalsInitial = 512; // Arbitrary.
static size_t gGlobalsMax = 51200; // Arbitrary sanity check. (Must fit in 16 bits.)
@@ -365,8 +362,6 @@ JavaVMExt::JavaVMExt(Runtime* runtime, ParsedOptions* options)
force_copy_(options->force_copy_),
tracing_enabled_(!options->jni_trace_.empty() || VLOG_IS_ON(third_party_jni)),
trace_(options->jni_trace_),
- pins_lock_("JNI pin table lock", kPinTableLock),
- pin_table_("pin table", kPinTableInitial, kPinTableMax),
globals_lock_("JNI global reference table lock"),
globals_(gGlobalsInitial, gGlobalsMax, kGlobal),
libraries_(new Libraries),
@@ -523,10 +518,6 @@ void JavaVMExt::DumpForSigQuit(std::ostream& os) {
}
Thread* self = Thread::Current();
{
- MutexLock mu(self, pins_lock_);
- os << "; pins=" << pin_table_.Size();
- }
- {
ReaderMutexLock mu(self, globals_lock_);
os << "; globals=" << globals_.Capacity();
}
@@ -568,16 +559,6 @@ mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) {
return weak_globals_.Get(ref);
}
-void JavaVMExt::PinPrimitiveArray(Thread* self, mirror::Array* array) {
- MutexLock mu(self, pins_lock_);
- pin_table_.Add(array);
-}
-
-void JavaVMExt::UnpinPrimitiveArray(Thread* self, mirror::Array* array) {
- MutexLock mu(self, pins_lock_);
- pin_table_.Remove(array);
-}
-
void JavaVMExt::DumpReferenceTables(std::ostream& os) {
Thread* self = Thread::Current();
{
@@ -588,10 +569,6 @@ void JavaVMExt::DumpReferenceTables(std::ostream& os) {
MutexLock mu(self, weak_globals_lock_);
weak_globals_.Dump(os);
}
- {
- MutexLock mu(self, pins_lock_);
- pin_table_.Dump(os);
- }
}
bool JavaVMExt::LoadNativeLibrary(JNIEnv* env, const std::string& path, jobject class_loader,
@@ -779,10 +756,6 @@ void JavaVMExt::VisitRoots(RootCallback* callback, void* arg) {
ReaderMutexLock mu(self, globals_lock_);
globals_.VisitRoots(callback, arg, 0, kRootJNIGlobal);
}
- {
- MutexLock mu(self, pins_lock_);
- pin_table_.VisitRoots(callback, arg, 0, kRootVMInternal);
- }
// The weak_globals table is visited by the GC itself (because it mutates the table).
}
diff --git a/runtime/java_vm_ext.h b/runtime/java_vm_ext.h
index da0b8e3257..2957ba3fae 100644
--- a/runtime/java_vm_ext.h
+++ b/runtime/java_vm_ext.h
@@ -95,7 +95,7 @@ class JavaVMExt : public JavaVM {
SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
void DumpForSigQuit(std::ostream& os)
- LOCKS_EXCLUDED(Locks::jni_libraries_lock_, globals_lock_, weak_globals_lock_, pins_lock_);
+ LOCKS_EXCLUDED(Locks::jni_libraries_lock_, globals_lock_, weak_globals_lock_);
void DumpReferenceTables(std::ostream& os)
SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
@@ -127,14 +127,6 @@ class JavaVMExt : public JavaVM {
mirror::Object* DecodeWeakGlobal(Thread* self, IndirectRef ref)
SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
- void PinPrimitiveArray(Thread* self, mirror::Array* array)
- SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
- LOCKS_EXCLUDED(pins_lock_);
-
- void UnpinPrimitiveArray(Thread* self, mirror::Array* array)
- SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
- LOCKS_EXCLUDED(pins_lock_);
-
const JNIInvokeInterface* GetUncheckedFunctions() const {
return unchecked_functions_;
}
@@ -154,10 +146,6 @@ class JavaVMExt : public JavaVM {
// Extra diagnostics.
const std::string trace_;
- // Used to hold references to pinned primitive arrays.
- Mutex pins_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
- ReferenceTable pin_table_ GUARDED_BY(pins_lock_);
-
// JNI global references.
ReaderWriterMutex globals_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER;
// Not guarded by globals_lock since we sometimes use SynchronizedGet in Thread::DecodeJObject.
diff --git a/runtime/jni_internal.cc b/runtime/jni_internal.cc
index 3e9ae09bde..36f01dbf4b 100644
--- a/runtime/jni_internal.cc
+++ b/runtime/jni_internal.cc
@@ -1695,7 +1695,6 @@ class JNI {
ScopedObjectAccess soa(env);
mirror::String* s = soa.Decode<mirror::String*>(java_string);
mirror::CharArray* chars = s->GetCharArray();
- soa.Vm()->PinPrimitiveArray(soa.Self(), chars);
gc::Heap* heap = Runtime::Current()->GetHeap();
if (heap->IsMovableObject(chars)) {
if (is_copy != nullptr) {
@@ -1724,7 +1723,6 @@ class JNI {
if (chars != (s_chars->GetData() + s->GetOffset())) {
delete[] chars;
}
- soa.Vm()->UnpinPrimitiveArray(soa.Self(), s->GetCharArray());
}
static const jchar* GetStringCritical(JNIEnv* env, jstring java_string, jboolean* is_copy) {
@@ -1733,7 +1731,6 @@ class JNI {
mirror::String* s = soa.Decode<mirror::String*>(java_string);
mirror::CharArray* chars = s->GetCharArray();
int32_t offset = s->GetOffset();
- soa.Vm()->PinPrimitiveArray(soa.Self(), chars);
gc::Heap* heap = Runtime::Current()->GetHeap();
if (heap->IsMovableObject(chars)) {
StackHandleScope<1> hs(soa.Self());
@@ -1749,8 +1746,6 @@ class JNI {
static void ReleaseStringCritical(JNIEnv* env, jstring java_string, const jchar* chars) {
CHECK_NON_NULL_ARGUMENT_RETURN_VOID(java_string);
ScopedObjectAccess soa(env);
- soa.Vm()->UnpinPrimitiveArray(soa.Self(),
- soa.Decode<mirror::String*>(java_string)->GetCharArray());
gc::Heap* heap = Runtime::Current()->GetHeap();
mirror::String* s = soa.Decode<mirror::String*>(java_string);
mirror::CharArray* s_chars = s->GetCharArray();
@@ -1906,7 +1901,6 @@ class JNI {
// Re-decode in case the object moved since IncrementDisableGC waits for GC to complete.
array = soa.Decode<mirror::Array*>(java_array);
}
- soa.Vm()->PinPrimitiveArray(soa.Self(), array);
if (is_copy != nullptr) {
*is_copy = JNI_FALSE;
}
@@ -2331,7 +2325,6 @@ class JNI {
if (UNLIKELY(array == nullptr)) {
return nullptr;
}
- soa.Vm()->PinPrimitiveArray(soa.Self(), array);
// Only make a copy if necessary.
if (Runtime::Current()->GetHeap()->IsMovableObject(array)) {
if (is_copy != nullptr) {
@@ -2394,7 +2387,6 @@ class JNI {
// Non copy to a movable object must means that we had disabled the moving GC.
heap->DecrementDisableMovingGC(soa.Self());
}
- soa.Vm()->UnpinPrimitiveArray(soa.Self(), array);
}
}