OSDN Git Service

* include/jvm.h (_Jv_GetJVMTIEnv): Declare.
authorkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jul 2006 19:30:30 +0000 (19:30 +0000)
committerkseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Jul 2006 19:30:30 +0000 (19:30 +0000)
        * jni.cc (_Jv_JNI_GetEnv): Handle JVMTI requests.
        * jvmti.cc: New file.
        * Makefile.am (libgcj_la_SOURCES): Add jvmti.cc.
        * Makefile.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115629 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/include/jvm.h
libjava/jni.cc
libjava/jvmti.cc [new file with mode: 0644]

index 1b3be0d..0fe6a78 100644 (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-*.
index 05be0fd..52c8ed0 100644 (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)
index 6b11b39..02ad5b7 100644 (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@
index d99443c..8a970c0 100644 (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);
index 67ba8fa..f7d73e5 100644 (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)
diff --git a/libjava/jvmti.cc b/libjava/jvmti.cc
new file mode 100644 (file)
index 0000000..8bebef8
--- /dev/null
@@ -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;
+}