aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/Makefile.am2
-rw-r--r--libjava/Makefile.in19
-rw-r--r--libjava/include/jvm.h4
-rw-r--r--libjava/jni.cc8
-rw-r--r--libjava/jvmti.cc184
6 files changed, 215 insertions, 10 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 1b3be0d..0fe6a78 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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-*.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index 05be0fd..52c8ed0 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -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)
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 6b11b39..02ad5b7 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -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@
diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h
index d99443c..8a970c0 100644
--- a/libjava/include/jvm.h
+++ b/libjava/include/jvm.h
@@ -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);
diff --git a/libjava/jni.cc b/libjava/jni.cc
index 67ba8fa..f7d73e5 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -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)
diff --git a/libjava/jvmti.cc b/libjava/jvmti.cc
new file mode 100644
index 0000000..8bebef8
--- /dev/null
+++ b/libjava/jvmti.cc
@@ -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;
+}