Exemplo n.º 1
0
        public jvmtiError GetSourceFileName(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out string sourceName)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            string     sourceNameResult = null;
            jvmtiError result           = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;

                IntPtr sourceNamePtr = IntPtr.Zero;
                try
                {
                    result = rawInterface.GetSourceFileName(environment.Handle, @class, out sourceNamePtr);

                    unsafe
                    {
                        if (sourceNamePtr != IntPtr.Zero)
                        {
                            sourceNameResult = ModifiedUTF8Encoding.GetString((byte *)sourceNamePtr);
                        }
                    }
                }
                finally
                {
                    rawInterface.Deallocate(environment.Handle, sourceNamePtr);
                }
            });

            sourceName = sourceNameResult;
            return(result);
        }
Exemplo n.º 2
0
        public jvmtiError GetThreadInfo(JvmVirtualMachineRemoteHandle virtualMachine, JvmThreadRemoteHandle thread, out JvmThreadRemoteInfo info)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jvmtiThreadInfo threadInfo = default(jvmtiThreadInfo);
            jvmtiError      result     = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.GetThreadInfo(environment.Handle, thread, out threadInfo);
            });

            info = new JvmThreadRemoteInfo()
            {
                Name               = threadInfo.Name,
                Priority           = threadInfo._priority,
                IsDaemon           = threadInfo._isDaemon != 0,
                ContextClassLoader = new JvmObjectRemoteHandle(threadInfo._contextClassLoader),
                ThreadGroup        = new JvmThreadGroupRemoteHandle(threadInfo._threadGroup)
            };

            return(result);
        }
Exemplo n.º 3
0
        public jvmtiError Deallocate(JvmVirtualMachineRemoteHandle virtualMachine, long address)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jvmtiError result = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.Deallocate(environment.Handle, (IntPtr)address);
            });

            return(result);
        }
Exemplo n.º 4
0
        public jvmtiError SetTag(JvmVirtualMachineRemoteHandle virtualMachine, JvmObjectRemoteHandle @object, long tag)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jvmtiError result = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.SetTag(environment.Handle, @object, tag);
            });

            return(result);
        }
Exemplo n.º 5
0
        public jvmtiError GetThreadState(JvmVirtualMachineRemoteHandle virtualMachine, JvmThreadRemoteHandle thread, out jvmtiThreadState threadState)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jvmtiThreadState threadStateResult = jvmtiThreadState.None;
            jvmtiError       result            = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.GetThreadState(environment.Handle, thread, out threadStateResult);
            });

            threadState = threadStateResult;
            return(result);
        }
Exemplo n.º 6
0
        public jvmtiError GetObjectHashCode(JvmVirtualMachineRemoteHandle virtualMachine, JvmObjectRemoteHandle @object, out int hashCode)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            int        hashCodeResult = 0;
            jvmtiError result         = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.GetObjectHashCode(environment.Handle, @object, out hashCodeResult);
            });

            hashCode = hashCodeResult;
            return(result);
        }
Exemplo n.º 7
0
        public jvmtiError Allocate(JvmVirtualMachineRemoteHandle virtualMachine, long size, out long address)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jvmtiError result = jvmtiError.Internal;
            IntPtr     memory = IntPtr.Zero;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.Allocate(environment.Handle, size, out memory);
            });

            address = memory.ToInt64();
            return(result);
        }
Exemplo n.º 8
0
        public jvmtiError GetCurrentThread(JvmVirtualMachineRemoteHandle virtualMachine, out JvmThreadRemoteHandle threadHandle)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            jthread    thread = jthread.Null;
            jvmtiError result = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;
                result = rawInterface.GetCurrentThread(environment.Handle, out thread);
            });

            threadHandle = new JvmThreadRemoteHandle(thread);
            return(result);
        }
Exemplo n.º 9
0
        public jvmtiError GetClassSignature(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out string signature, out string generic)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            string     signatureResult = null;
            string     genericResult   = null;
            jvmtiError result          = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;

                IntPtr signaturePtr = IntPtr.Zero;
                IntPtr genericPtr   = IntPtr.Zero;
                try
                {
                    result = rawInterface.GetClassSignature(environment.Handle, @class, out signaturePtr, out genericPtr);

                    unsafe
                    {
                        if (signaturePtr != IntPtr.Zero)
                        {
                            signatureResult = ModifiedUTF8Encoding.GetString((byte *)signaturePtr);
                        }
                        if (genericPtr != IntPtr.Zero)
                        {
                            genericResult = ModifiedUTF8Encoding.GetString((byte *)genericPtr);
                        }
                    }
                }
                finally
                {
                    rawInterface.Deallocate(environment.Handle, signaturePtr);
                    rawInterface.Deallocate(environment.Handle, genericPtr);
                }
            });

            signature = signatureResult;
            generic   = genericResult;
            return(result);
        }
Exemplo n.º 10
0
        public jvmtiError GetClassMethods(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out JvmMethodRemoteHandle[] methods)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            List <JvmMethodRemoteHandle> methodsList = new List <JvmMethodRemoteHandle>();
            jvmtiError result = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;

                IntPtr methodsPtr = IntPtr.Zero;
                try
                {
                    int methodCount;
                    result = rawInterface.GetClassMethods(environment.Handle, @class, out methodCount, out methodsPtr);

                    unsafe
                    {
                        jmethodID *rawMethods = (jmethodID *)methodsPtr;
                        for (int i = 0; i < methodCount; i++)
                        {
                            methodsList.Add(new JvmMethodRemoteHandle(rawMethods[i]));
                        }
                    }
                }
                finally
                {
                    rawInterface.Deallocate(environment.Handle, methodsPtr);
                }
            });

            methods = methodsList.ToArray();
            return(result);
        }
Exemplo n.º 11
0
        public jvmtiError GetLineNumberTable(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out JvmLineNumberEntry[] lineNumbers)
        {
            JavaVM machine = JavaVM.GetInstance(virtualMachine);

            List <JvmLineNumberEntry> lineNumbersList = new List <JvmLineNumberEntry>();
            jvmtiError result = jvmtiError.Internal;

            machine.InvokeOnJvmThread(
                (environment) =>
            {
                jvmtiInterface rawInterface = environment.RawInterface;

                IntPtr lineNumbersPtr = IntPtr.Zero;
                try
                {
                    int entryCount;
                    result = rawInterface.GetLineNumberTable(environment.Handle, (jmethodID)method, out entryCount, out lineNumbersPtr);

                    unsafe
                    {
                        jvmtiLineNumberEntry *rawLineNumbers = (jvmtiLineNumberEntry *)lineNumbersPtr;
                        for (int i = 0; i < entryCount; i++)
                        {
                            lineNumbersList.Add(new JvmLineNumberEntry(method, rawLineNumbers[i]));
                        }
                    }
                }
                finally
                {
                    rawInterface.Deallocate(environment.Handle, lineNumbersPtr);
                }
            });

            lineNumbers = lineNumbersList.ToArray();
            return(result);
        }
Exemplo n.º 12
0
 public jvmtiError GetLocalVariableTable(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out JvmLocalVariableEntry[] localVariables)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 13
0
 public jvmtiError GetMethodLocation(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out JvmRemoteLocation startLocation, out JvmRemoteLocation endLocation)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
 public jvmtiError GetMaxLocals(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out int maxLocals)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 15
0
 public jvmtiError GetArgumentsSize(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out int size)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 16
0
 public jvmtiError GetConstantPool(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out byte[] constantPool)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 17
0
 public jvmtiError IsInterface(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out bool isInterface)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 18
0
 public jvmtiError GetBytecodes(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out byte[] bytecode)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 19
0
 public jvmtiError IsMethodObsolete(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out bool isObsolete)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 20
0
 public jvmtiError SuspendThreads(JvmVirtualMachineRemoteHandle virtualMachine, JvmThreadRemoteHandle[] threads)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 21
0
 public jvmtiError RetransformClasses(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle[] classes)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 22
0
 public jvmtiError GetSourceDebugExtension(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out string sourceDebugExtension)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 23
0
 public jvmtiError GetClassLoader(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out JvmObjectRemoteHandle classLoader)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 24
0
 public jvmtiError IsModifiableClass(JvmVirtualMachineRemoteHandle virtualMachine, JvmClassRemoteHandle @class, out bool isModifiableClass)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 25
0
 public jvmtiError IsMethodSynthetic(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out bool isSynthetic)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 26
0
 public jvmtiError GetMethodDeclaringClass(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out JvmClassRemoteHandle declaringClass)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 27
0
 public jvmtiError SetNativeMethodPrefixes(JvmVirtualMachineRemoteHandle virtualMachine, string[] prefixes)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 28
0
 public jvmtiError GetMethodModifiers(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out JvmAccessModifiers modifiers)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 29
0
 public jvmtiError ResumeThread(JvmVirtualMachineRemoteHandle virtualMachine, JvmThreadRemoteHandle thread)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 30
0
 public jvmtiError GetMethodName(JvmVirtualMachineRemoteHandle virtualMachine, JvmMethodRemoteHandle method, out string name, out string signature, out string generic)
 {
     throw new NotImplementedException();
 }