internal jvmtiError GetObject(ObjectId objectId, out jobject @object) { @object = jobject.Null; lock (_objects) { jweak weak; if (!_objects.TryGetValue(objectId, out weak)) { jthread thread; if (!_threads.TryGetValue((ThreadId)objectId, out thread)) { jclass @class; if (!_classes.TryGetValue((ReferenceTypeId)objectId, out @class)) { return(jvmtiError.InvalidObject); } @object = @class; return(jvmtiError.None); } @object = thread; return(jvmtiError.None); } @object = new jobject(weak.Handle); return(jvmtiError.None); } }
internal LocalObjectReferenceHolder GetLocalReferenceForObject(JniEnvironment nativeEnvironment, ObjectId objectId) { LocalObjectReferenceHolder thread; jvmtiError error = GetLocalReferenceForObject(nativeEnvironment, objectId, out thread); if (error != jvmtiError.None) { return(new LocalObjectReferenceHolder()); } return(thread); }
internal jvmtiError GetLocalReferenceForObject(JniEnvironment nativeEnvironment, ObjectId objectId, out LocalObjectReferenceHolder thread) { thread = default(LocalObjectReferenceHolder); jobject threadHandle; jvmtiError error = GetObject(objectId, out threadHandle); if (error != jvmtiError.None) { return(error); } thread = new LocalObjectReferenceHolder(nativeEnvironment, threadHandle); return(jvmtiError.None); }