jvm.h (_Jv_GetJVMTIEnv): Declare.

* include/jvm.h (_Jv_GetJVMTIEnv): Declare.
        * jni.cc (_Jv_JNI_GetEnv): Handle JVMTI requests.
        * jvmti.cc: New file.
        * Makefile.am (libgcj_la_SOURCES): Add jvmti.cc.
        * Makefile.in: Regenerate.

From-SVN: r115629
This commit is contained in:
Keith Seitz 2006-07-20 19:30:30 +00:00 committed by Keith Seitz
parent 6b1fd291b5
commit 94f473ee2c
6 changed files with 215 additions and 10 deletions

View File

@ -1,3 +1,11 @@
2006-07-20 Keith Seitz <keiths@redhat.com>
* include/jvm.h (_Jv_GetJVMTIEnv): Declare.
* jni.cc (_Jv_JNI_GetEnv): Handle JVMTI requests.
* jvmti.cc: New file.
* Makefile.am (libgcj_la_SOURCES): Add jvmti.cc.
* Makefile.in: Regenerate.
2006-07-20 David Daney <ddaney@avtrex.com>
* configure.host: Enable the interpreter for mipsel-* and mips-*.

View File

@ -177,7 +177,7 @@ libgij_la_LIBADD = -L$(here)/.libs libgcj.la
libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC)
libgcj_la_SOURCES = prims.cc jni.cc exception.cc stacktrace.cc \
libgcj_la_SOURCES = prims.cc jni.cc jvmti.cc exception.cc stacktrace.cc \
link.cc defineclass.cc interpret.cc verify.cc \
java/lang/Class.java java/lang/Object.java \
$(nat_source_files)

View File

@ -249,7 +249,7 @@ am__DEPENDENCIES_2 = gnu-CORBA.lo gnu-java-awt-peer-gtk.lo \
am__DEPENDENCIES_3 = $(patsubst classpath/resource/%,%,$(addsuffix \
.lo,$(property_files)))
am__DEPENDENCIES_4 =
am__libgcj_la_SOURCES_DIST = prims.cc jni.cc exception.cc \
am__libgcj_la_SOURCES_DIST = prims.cc jni.cc jvmti.cc exception.cc \
stacktrace.cc link.cc defineclass.cc interpret.cc verify.cc \
java/lang/Class.java java/lang/Object.java \
gnu/classpath/natSystemProperties.cc gnu/gcj/natCore.cc \
@ -340,8 +340,8 @@ am__objects_2 = gnu/classpath/natSystemProperties.lo \
@USING_POSIX_THREADS_TRUE@am__objects_8 = posix-threads.lo
@USING_WIN32_THREADS_TRUE@am__objects_9 = win32-threads.lo
@USING_NO_THREADS_TRUE@am__objects_10 = no-threads.lo
am_libgcj_la_OBJECTS = prims.lo jni.lo exception.lo stacktrace.lo \
link.lo defineclass.lo interpret.lo verify.lo \
am_libgcj_la_OBJECTS = prims.lo jni.lo jvmti.lo exception.lo \
stacktrace.lo link.lo defineclass.lo interpret.lo verify.lo \
java/lang/Class.lo java/lang/Object.lo $(am__objects_2) \
$(am__objects_3) $(am__objects_4) $(am__objects_5) \
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
@ -756,12 +756,12 @@ libgij_la_LIBADD = -L$(here)/.libs libgcj.la
libgij_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC)
libgcj_la_SOURCES = prims.cc jni.cc exception.cc stacktrace.cc link.cc \
defineclass.cc interpret.cc verify.cc java/lang/Class.java \
java/lang/Object.java $(nat_source_files) $(am__append_5) \
$(am__append_6) $(am__append_7) $(am__append_8) \
$(am__append_9) $(am__append_10) $(am__append_11) \
$(am__append_12)
libgcj_la_SOURCES = prims.cc jni.cc jvmti.cc exception.cc \
stacktrace.cc link.cc defineclass.cc interpret.cc verify.cc \
java/lang/Class.java java/lang/Object.java $(nat_source_files) \
$(am__append_5) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_9) $(am__append_10) \
$(am__append_11) $(am__append_12)
nat_files = $(nat_source_files:.cc=.lo)
xlib_nat_files = $(xlib_nat_source_files:.cc=.lo)
@ -7950,6 +7950,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpret.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jni-libjvm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jni.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jvmti.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/no-threads.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nogc.Plo@am__quote@

View File

@ -573,6 +573,10 @@ void _Jv_FreeJNIEnv (_Jv_JNIEnv *);
struct _Jv_JavaVM;
_Jv_JavaVM *_Jv_GetJavaVM ();
/* Get the JVMTI environment */
struct _Jv_JVMTIEnv;
_Jv_JVMTIEnv *_Jv_GetJVMTIEnv (void);
// Some verification functions from defineclass.cc.
bool _Jv_VerifyFieldSignature (_Jv_Utf8Const*sig);
bool _Jv_VerifyMethodSignature (_Jv_Utf8Const*sig);

View File

@ -22,6 +22,7 @@ details. */
#ifdef ENABLE_JVMPI
#include <jvmpi.h>
#endif
#include <jvmti.h>
#include <java/lang/Class.h>
#include <java/lang/ClassLoader.h>
@ -2495,6 +2496,13 @@ _Jv_JNI_GetEnv (JavaVM *, void **penv, jint version)
}
#endif
// Handle JVMTI requests
if (version == JVMTI_VERSION_1_0)
{
*penv = (void *) _Jv_GetJVMTIEnv ();
return 0;
}
// FIXME: do we really want to support 1.1?
if (version != JNI_VERSION_1_4 && version != JNI_VERSION_1_2
&& version != JNI_VERSION_1_1)

184
libjava/jvmti.cc Normal file
View File

@ -0,0 +1,184 @@
// jvmti.cc - JVMTI implementation
/* Copyright (C) 2006 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
#include <config.h>
#include <jvm.h>
#include <jvmti.h>
#define RESERVED NULL
#define UNIMPLEMENTED NULL
struct _Jv_jvmtiEnv _Jv_JVMTI_Interface =
{
RESERVED, // reserved1
UNIMPLEMENTED, // SetEventNotification
RESERVED, // reserved3
UNIMPLEMENTED, // GetAllThreads
UNIMPLEMENTED, // SuspendThread
UNIMPLEMENTED, // ResumeThread
UNIMPLEMENTED, // StopThread
UNIMPLEMENTED, // InterruptThread
UNIMPLEMENTED, // GetThreadInfo
UNIMPLEMENTED, // GetOwnedMonitorInfo
UNIMPLEMENTED, // GetCurrentContendedMonitor
UNIMPLEMENTED, // RunAgentThread
UNIMPLEMENTED, // GetTopThreadGroups
UNIMPLEMENTED, // GetThreadGroupInfo
UNIMPLEMENTED, // GetThreadGroupChildren
UNIMPLEMENTED, // GetFrameCount
UNIMPLEMENTED, // GetThreadState
RESERVED, // reserved18
UNIMPLEMENTED, // GetFrameLocation
UNIMPLEMENTED, // NotifyPopFrame
UNIMPLEMENTED, // GetLocalObject
UNIMPLEMENTED, // GetLocalInt
UNIMPLEMENTED, // GetLocalLong
UNIMPLEMENTED, // GetLocalFloat
UNIMPLEMENTED, // GetLocalDouble
UNIMPLEMENTED, // SetLocalObject
UNIMPLEMENTED, // SetLocalInt
UNIMPLEMENTED, // SetLocalLong
UNIMPLEMENTED, // SetLocalFloat
UNIMPLEMENTED, // SetLocalDouble
UNIMPLEMENTED, // CreateRawMonitor
UNIMPLEMENTED, // DestroyRawMonitor
UNIMPLEMENTED, // RawMonitorEnter
UNIMPLEMENTED, // RawMonitorExit
UNIMPLEMENTED, // RawMonitorWait
UNIMPLEMENTED, // RawMonitorNotify
UNIMPLEMENTED, // RawMonitorNotifyAll
UNIMPLEMENTED, // SetBreakpoint
UNIMPLEMENTED, // CleareBreakpoint
RESERVED, // reserved40
UNIMPLEMENTED, // SetFieldAccessWatch
UNIMPLEMENTED, // ClearFieldAccessWatch
UNIMPLEMENTED, // SetFieldModificationWatch
UNIMPLEMENTED, // ClearFieldModificationWatch
RESERVED, // reserved45
UNIMPLEMENTED, // Allocate
UNIMPLEMENTED, // Deallocate
UNIMPLEMENTED, // GetClassSignature
UNIMPLEMENTED, // GetClassStatus
UNIMPLEMENTED, // GetSourceFileName
UNIMPLEMENTED, // GetClassModifiers
UNIMPLEMENTED, // GetClassMethods
UNIMPLEMENTED, // GetClassFields
UNIMPLEMENTED, // GetImplementedInterfaces
UNIMPLEMENTED, // IsInterface
UNIMPLEMENTED, // IsArrayClass
UNIMPLEMENTED, // GetClassLoader
UNIMPLEMENTED, // GetObjectHashCode
UNIMPLEMENTED, // GetObjectMonitorUsage
UNIMPLEMENTED, // GetFieldName
UNIMPLEMENTED, // GetFieldDeclaringClass
UNIMPLEMENTED, // GetFieldModifiers
UNIMPLEMENTED, // IsFieldSynthetic
UNIMPLEMENTED, // GetMethodName
UNIMPLEMENTED, // GetMethodDeclaringClass
UNIMPLEMENTED, // GetMethodModiifers
RESERVED, // reserved67
UNIMPLEMENTED, // GetMaxLocals
UNIMPLEMENTED, // GetArgumentsSize
UNIMPLEMENTED, // GetLineNumberTable
UNIMPLEMENTED, // GetMethodLocation
UNIMPLEMENTED, // GetLocalVariableTable
RESERVED, // reserved73
RESERVED, // reserved74
UNIMPLEMENTED, // GetBytecodes
UNIMPLEMENTED, // IsMethodNative
UNIMPLEMENTED, // IsMethodSynthetic
UNIMPLEMENTED, // GetLoadedClasses
UNIMPLEMENTED, // GetClassLoaderClasses
UNIMPLEMENTED, // PopFrame
RESERVED, // reserved81
RESERVED, // reserved82
RESERVED, // reserved83
RESERVED, // reserved84
RESERVED, // reserved85
RESERVED, // reserved86
UNIMPLEMENTED, // RedefineClasses
UNIMPLEMENTED, // GetVersionNumber
UNIMPLEMENTED, // GetCapabilities
UNIMPLEMENTED, // GetSourceDebugExtension
UNIMPLEMENTED, // IsMethodObsolete
UNIMPLEMENTED, // SuspendThreadList
UNIMPLEMENTED, // ResumeThreadList
RESERVED, // reserved94
RESERVED, // reserved95
RESERVED, // reserved96
RESERVED, // reserved97
RESERVED, // reserved98
RESERVED, // reserved99
UNIMPLEMENTED, // GetAllStackTraces
UNIMPLEMENTED, // GetThreadListStackTraces
UNIMPLEMENTED, // GetThreadLocalStorage
UNIMPLEMENTED, // SetThreadLocalStorage
UNIMPLEMENTED, // GetStackTrace
RESERVED, // reserved105
UNIMPLEMENTED, // GetTag
UNIMPLEMENTED, // SetTag
UNIMPLEMENTED, // ForceGarbageCollection
UNIMPLEMENTED, // IterateOverObjectsReachable
UNIMPLEMENTED, // IterateOverReachableObjects
UNIMPLEMENTED, // IterateOverHeap
UNIMPLEMENTED, // IterateOverInstanceOfClass
RESERVED, // reserved113
UNIMPLEMENTED, // GetObjectsWithTags
RESERVED, // reserved115
RESERVED, // reserved116
RESERVED, // reserved117
RESERVED, // reserved118
RESERVED, // reserved119
UNIMPLEMENTED, // SetJNIFunctionTable
UNIMPLEMENTED, // GetJNIFunctionTable
UNIMPLEMENTED, // SetEventCallbacks
UNIMPLEMENTED, // GenerateEvents
UNIMPLEMENTED, // GetExtensionFunctions
UNIMPLEMENTED, // GetExtensionEvents
UNIMPLEMENTED, // SetExtensionEventCallback
UNIMPLEMENTED, // DisposeEnvironment
UNIMPLEMENTED, // GetErrorName
UNIMPLEMENTED, // GetJLocationFormat
UNIMPLEMENTED, // GetSystemProperties
UNIMPLEMENTED, // GetSystemProperty
UNIMPLEMENTED, // SetSystemProperty
UNIMPLEMENTED, // GetPhase
UNIMPLEMENTED, // GetCurrentThreadCpuTimerInfo
UNIMPLEMENTED, // GetCurrentThreadCpuTime
UNIMPLEMENTED, // GetThreadCpuTimerInfo
UNIMPLEMENTED, // GetThreadCpuTime
UNIMPLEMENTED, // GetTimerInfo
UNIMPLEMENTED, // GetTime
UNIMPLEMENTED, // GetPotentialCapabilities
RESERVED, // reserved141
UNIMPLEMENTED, // AddCapabilities
UNIMPLEMENTED, // RelinquishCapabilities
UNIMPLEMENTED, // GetAvailableProcessors
RESERVED, // reserved145
RESERVED, // reserved146
UNIMPLEMENTED, // GetEnvironmentLocalStorage
UNIMPLEMENTED, // SetEnvironmentLocalStorage
UNIMPLEMENTED, // AddToBootstrapClassLoaderSearch
UNIMPLEMENTED, // SetVerboseFlag
RESERVED, // reserved151
RESERVED, // reserved152
RESERVED, // reserved153
UNIMPLEMENTED // GetObjectSize
};
_Jv_JVMTIEnv *
_Jv_GetJVMTIEnv (void)
{
_Jv_JVMTIEnv *env
= (_Jv_JVMTIEnv *) _Jv_MallocUnchecked (sizeof (_Jv_JVMTIEnv));
env->p = &_Jv_JVMTI_Interface;
return env;
}