コード例 #1
0
        public JvmAccessModifiers GetMethodModifiers(JvmMethod method)
        {
            JvmAccessModifiers modifiers;

            ThrowOnFailure(_rawInterface.GetMethodModifiers(_env, (jmethodID)method, out modifiers));
            return(modifiers);
        }
コード例 #2
0
        public void GetMethodName(JvmMethod method, out string name, out string signature, out string generic)
        {
            IntPtr namePtr;
            IntPtr signaturePtr;
            IntPtr genericPtr;

            ThrowOnFailure(_rawInterface.GetMethodName(_env, (jmethodID)method, out namePtr, out signaturePtr, out genericPtr));
            try
            {
                name      = null;
                signature = null;
                generic   = null;
                unsafe
                {
                    if (namePtr != IntPtr.Zero)
                    {
                        name = ModifiedUTF8Encoding.GetString((byte *)namePtr);
                    }
                    if (signaturePtr != IntPtr.Zero)
                    {
                        signature = ModifiedUTF8Encoding.GetString((byte *)signaturePtr);
                    }
                    if (genericPtr != IntPtr.Zero)
                    {
                        generic = ModifiedUTF8Encoding.GetString((byte *)genericPtr);
                    }
                }
            }
            finally
            {
                Deallocate(namePtr);
                Deallocate(signaturePtr);
                Deallocate(genericPtr);
            }
        }
コード例 #3
0
        public int GetArgumentsSize(JvmMethod method)
        {
            int argumentsSize;

            ThrowOnFailure(_rawInterface.GetArgumentsSize(_env, (jmethodID)method, out argumentsSize));
            return(argumentsSize);
        }
コード例 #4
0
        public int GetMaxLocals(JvmMethod method)
        {
            int maxLocals;

            ThrowOnFailure(_rawInterface.GetMaxLocals(_env, (jmethodID)method, out maxLocals));
            return(maxLocals);
        }
コード例 #5
0
        public bool IsMethodNative(JvmMethod method)
        {
            byte isNative;

            ThrowOnFailure(_rawInterface.IsMethodNative(_env, (jmethodID)method, out isNative));
            return(isNative != 0);
        }
コード例 #6
0
        public bool IsMethodSynthetic(JvmMethod method)
        {
            byte isSynthetic;

            ThrowOnFailure(_rawInterface.IsMethodSynthetic(_env, (jmethodID)method, out isSynthetic));
            return(isSynthetic != 0);
        }
コード例 #7
0
        public bool IsMethodObsolete(JvmMethod method)
        {
            byte isObsolete;

            ThrowOnFailure(_rawInterface.IsMethodObsolete(_env, (jmethodID)method, out isObsolete));
            return(isObsolete != 0);
        }
コード例 #8
0
        private void HandleCompiledMethodUnload(jvmtiEnvHandle env, jmethodID methodId, IntPtr codeAddress)
        {
            JvmEnvironment environment = JvmEnvironment.GetEnvironment(env);
            JvmMethod      method      = new JvmMethod(environment, methodId);

            foreach (var processor in _processors)
            {
                processor.HandleCompiledMethodUnload(environment, method, codeAddress);
            }
        }
コード例 #9
0
        private void HandleMethodExit(jvmtiEnvHandle env, JNIEnvHandle jniEnv, jthread threadHandle, jmethodID methodId, bool wasPoppedByException, jvalue returnValue)
        {
            JvmEnvironment     environment = JvmEnvironment.GetEnvironment(env);
            JvmThreadReference thread      = JvmThreadReference.FromHandle(environment, jniEnv, threadHandle, true);
            JvmMethod          method      = new JvmMethod(environment, methodId);

            foreach (var processor in _processors)
            {
                processor.HandleMethodExit(environment, thread, method, wasPoppedByException, returnValue);
            }
        }
コード例 #10
0
        private void HandleMethodEntry(jvmtiEnvHandle env, JNIEnvHandle jniEnv, jthread threadHandle, jmethodID methodId)
        {
            JvmEnvironment     environment = JvmEnvironment.GetEnvironment(env);
            JvmThreadReference thread      = JvmThreadReference.FromHandle(environment, jniEnv, threadHandle, true);
            JvmMethod          method      = new JvmMethod(environment, methodId);

            foreach (var processor in _processors)
            {
                processor.HandleMethodEntry(environment, thread, method);
            }
        }
コード例 #11
0
        private void HandleNativeMethodBind(jvmtiEnvHandle env, JNIEnvHandle jniEnv, jthread threadHandle, jmethodID methodId, IntPtr address, ref IntPtr newAddressPtr)
        {
            JvmEnvironment     environment = JvmEnvironment.GetEnvironment(env);
            JvmThreadReference thread      = JvmThreadReference.FromHandle(environment, jniEnv, threadHandle, true);
            JvmMethod          method      = new JvmMethod(environment, methodId);

            foreach (var processor in _processors)
            {
                IntPtr?newAddress = null;
                processor.HandleNativeMethodBind(environment, thread, method, address, ref newAddress);
            }
        }
コード例 #12
0
 public virtual void HandleCompiledMethodUnload(JvmEnvironment environment, JvmMethod method, IntPtr codeAddress)
 {
 }
コード例 #13
0
 public virtual void HandleFramePop(JvmEnvironment environment, JvmThreadReference thread, JvmMethod method, bool wasPoppedByException)
 {
 }
コード例 #14
0
 public virtual void HandleMethodEntry(JvmEnvironment environment, JvmThreadReference thread, JvmMethod method)
 {
 }
コード例 #15
0
 public virtual void HandleMethodExit(JvmEnvironment environment, JvmThreadReference thread, JvmMethod method, bool wasPoppedByException, jvalue returnValue)
 {
 }
コード例 #16
0
 public virtual void HandleNativeMethodBind(JvmEnvironment environment, JvmThreadReference thread, JvmMethod method, IntPtr address, ref IntPtr?newAddress)
 {
 }
コード例 #17
0
 public JvmClassReference GetMethodDeclaringClass(JvmMethod method)
 {
     throw new NotImplementedException();
 }
コード例 #18
0
 public virtual void HandleCompiledMethodLoad(JvmEnvironment environment, JvmMethod method, int codeSize, IntPtr codeAddress, JvmAddressLocationMap[] map, IntPtr compileInfo)
 {
 }