Ejemplo n.º 1
0
        internal ClassLoaderReference GetMirrorOf(ClassLoaderId classLoader)
        {
            if (classLoader == default(ClassLoaderId))
            {
                return(null);
            }

            return(new ClassLoaderReference(this, classLoader));
        }
 internal ClassLoaderReference(VirtualMachine virtualMachine, ClassLoaderId classLoaderId)
     : base(virtualMachine, classLoaderId, null)
 {
     Contract.Requires(virtualMachine != null);
 }
Ejemplo n.º 3
0
        public Error GetClassLoader(out ClassLoaderId classLoader, ReferenceTypeId referenceType)
        {
            byte[] packet = new byte[HeaderSize + ReferenceTypeIdSize];
            int id = GetMessageId();
            SerializeHeader(packet, id, ReferenceTypeCommand.ClassLoader);
            WriteReferenceTypeId(packet, HeaderSize, referenceType);

            byte[] response = SendPacket(id, packet);
            Error errorCode = ReadErrorCode(response);
            if (errorCode != Error.None)
            {
                classLoader = default(ClassLoaderId);
                return errorCode;
            }

            int offset = HeaderSize;
            classLoader = (ClassLoaderId)ReadObjectId(response, ref offset);
            return Error.None;
        }
Ejemplo n.º 4
0
 public Error GetClassLoaderVisibleClasses(out TaggedReferenceTypeId[] classes, ClassLoaderId classLoaderObject)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 5
0
 internal ClassLoaderReference(VirtualMachine virtualMachine, ClassLoaderId classLoaderId)
     : base(virtualMachine, classLoaderId, null)
 {
     Contract.Requires(virtualMachine != null);
 }
Ejemplo n.º 6
0
        public Error GetClassLoader(ReferenceTypeId referenceType, out ClassLoaderId classLoader)
        {
            classLoader = default(ClassLoaderId);

            JniEnvironment nativeEnvironment;
            JvmtiEnvironment environment;
            jvmtiError error = GetEnvironment(out environment, out nativeEnvironment);
            if (error != jvmtiError.None)
                return GetStandardError(error);

            using (var classHandle = VirtualMachine.GetLocalReferenceForClass(nativeEnvironment, referenceType))
            {
                if (!classHandle.IsAlive)
                    return Error.InvalidClass;

                jobject classLoaderObject;
                error = Environment.GetClassLoader(classHandle.Value, out classLoaderObject);
                if (error != jvmtiError.None)
                    return GetStandardError(error);

                classLoader = (ClassLoaderId)VirtualMachine.TrackLocalObjectReference(classLoaderObject, environment, nativeEnvironment, true);
                return Error.None;
            }
        }
Ejemplo n.º 7
0
        internal ClassLoaderReference GetMirrorOf(ClassLoaderId classLoader)
        {
            if (classLoader == default(ClassLoaderId))
                return null;

            return new ClassLoaderReference(this, classLoader);
        }