diff options
| author | 2014-09-11 23:57:49 +0000 | |
|---|---|---|
| committer | 2014-09-11 23:57:49 +0000 | |
| commit | 59dae45a3d1ef83771fb78421fcf8fda838b4d16 (patch) | |
| tree | 6cccc50847537d9dd807b49347b7bec846e5ec6e | |
| parent | 02308cf78484bcd125d92ebb27185d890889b92a (diff) | |
| parent | 2e158932354e5950eb59c79498ab46b0586885fd (diff) | |
Merge "Delete pin table"
| -rw-r--r-- | runtime/java_vm_ext.cc | 27 | ||||
| -rw-r--r-- | runtime/java_vm_ext.h | 14 | ||||
| -rw-r--r-- | runtime/jni_internal.cc | 8 |
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); } } |