* src/native/vm/gnu_java_lang_management_VMThreadMXBeanImpl.c: New file.
authortwisti <none@none>
Mon, 31 Jul 2006 15:26:10 +0000 (15:26 +0000)
committertwisti <none@none>
Mon, 31 Jul 2006 15:26:10 +0000 (15:26 +0000)
* src/native/vm/Makefile.am (libnativevm_la_SOURCES): Added
gnu_java_lang_management_VMThreadMXBeanImpl.c.

* src/native/include/Makefile.am
(ADDITIONAL_IMPLEMENTED_VM_CLASSES_HEADERS): Added
gnu_java_lang_management_VMThreadMXBeanImpl.h and
java_lang_management_ThreadInfo.h.
(VM_ZIP): Removed.

* src/native/jni.h (_Jv_JavaVM): Added total_started_thread_count.

* src/threads/native/threads.c (threads_startup_thread): Count
total_started_thread_count.

* src/cacao/cacao.c (main): Likewise.

* src/cacaoh/headers.c (_Jv_jvm): Added.

src/cacao/cacao.c
src/cacaoh/headers.c
src/native/include/Makefile.am
src/native/jni.h
src/native/vm/Makefile.am
src/native/vm/gnu_java_lang_management_VMThreadMXBeanImpl.c [new file with mode: 0644]
src/threads/native/threads.c

index 19bfeccdfdc7f7d8016cadb0ad5e3f9aededb20d..7bc89224e296c21080b614ce4890c7a5d8b4d7f6 100644 (file)
@@ -31,7 +31,7 @@
             Philipp Tomsich
             Christian Thalinger
 
-   $Id: cacao.c 4954 2006-05-25 21:59:49Z motse $
+   $Id: cacao.c 5195 2006-07-31 15:26:10Z twisti $
 
 */
 
@@ -311,6 +311,12 @@ int main(int argc, char **argv)
                jvmti_set_phase(JVMTI_PHASE_LIVE);
 #endif
 
+               /* increase total started thread count */
+
+               _Jv_jvm->total_started_thread_count++;
+
+               /* start the main thread */
+
                (void) vm_call_method(m, NULL, oa);
 
                /* exception occurred? */
index 7325ff3a52d6d23d0ccbfc48532704e30772c1f3..75753fa45e276e8cfdf2e7662daf5c1301a73b68 100644 (file)
@@ -31,7 +31,7 @@
             Christian Thalinger
                        Edwin Steiner
 
-   $Id: headers.c 5166 2006-07-21 10:09:33Z twisti $
+   $Id: headers.c 5195 2006-07-31 15:26:10Z twisti $
 
 */
 
 #include "vm/jit/asmpart.h"
 
 
+/* Invocation API variables ***************************************************/
+
+_Jv_JavaVM *_Jv_jvm;                    /* denotes a Java VM                  */
+
+
 #if defined(ENABLE_INTRP)
 /* dummy interpreter stack to keep the compiler happy */
 
index 96a5c6cde54f36217ba6d1d97f1d0f147b67d565..2faa29f1a79831e4dc7d3feea26653ee0e957b4f 100644 (file)
@@ -28,7 +28,7 @@
 ##
 ## Changes:
 ##
-## $Id: Makefile.am 5193 2006-07-31 14:35:41Z twisti $
+## $Id: Makefile.am 5195 2006-07-31 15:26:10Z twisti $
 
 ## Process this file with automake to produce Makefile.in
 
@@ -87,12 +87,14 @@ ADDITIONAL_IMPLEMENTED_VM_CLASSES_HEADER_FILES = \
        gnu_java_lang_management_VMClassLoadingMXBeanImpl.h \
        gnu_java_lang_management_VMMemoryMXBeanImpl.h \
        gnu_java_lang_management_VMRuntimeMXBeanImpl.h \
+       gnu_java_lang_management_VMThreadMXBeanImpl.h \
        java_lang_VMClass.h \
        java_lang_VMClassLoader.h \
        java_lang_VMRuntime.h \
        java_lang_VMString.h \
        java_lang_VMSystem.h \
        java_lang_management_MemoryUsage.h \
+       java_lang_management_ThreadInfo.h \
        java_lang_reflect_VMProxy.h \
        java_security_VMAccessController.h
 
@@ -137,7 +139,6 @@ endif
 CACAOH = $(top_builddir)/src/cacaoh/cacaoh
 
 CLASSPATH = $(top_builddir)/src/lib/classes/:$(CLASSPATH_GLIBJ_ZIP)
-VM_ZIP = $(top_builddir)/src/lib/vm.zip
 
 noinst_DATA = $(DO_HEADER_FILES)
 
@@ -148,7 +149,7 @@ $(NO_GEN_HEADER_FILES):
        echo "$(CACAOH) -bootclasspath $(CLASSPATH) -d . $$class"; \
        $(CACAOH) -bootclasspath $(CLASSPATH) -d . $$class
 
-$(DO_HEADER_FILES): $(VM_ZIP) $(CLASSPATH_GLIBJ_ZIP)
+$(DO_HEADER_FILES): $(CACAOH) $(CACAO_VM_ZIP) $(CLASSPATH_GLIBJ_ZIP)
        @class=`echo $@ | sed -e 's/\.h$$//' -e 's/_/\./g'`; \
        echo "$(CACAOH) -bootclasspath $(CLASSPATH) -d . $$class"; \
        $(CACAOH) -bootclasspath $(CLASSPATH) -d . $$class
index da602a441deb6f85e74589b65278359ed12f124a..e5e74376d4f54aba32991ef8583e9ada42ca50b3 100644 (file)
@@ -29,7 +29,7 @@
 
    Changes: Christian Thalinger
 
-   $Id: jni.h 5193 2006-07-31 14:35:41Z twisti $
+   $Id: jni.h 5195 2006-07-31 15:26:10Z twisti $
 
 */
 
@@ -68,6 +68,7 @@ struct _Jv_JavaVM {
        /* JVM instance-specific variables */
 
        s8 starttime;                       /* VM startup time                    */
+       s8 total_started_thread_count;
 
        s4 Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_verbose;
        s4 Java_gnu_java_lang_management_VMMemoryMXBeanImpl_verbose;
index 507dd2c0ce90a46cece150e0f80f706583b18f7d..3f36dfc4236959c853121e9651efecdb36cb28ab 100644 (file)
@@ -28,7 +28,7 @@
 ##
 ## Changes:
 ##
-## $Id: Makefile.am 5193 2006-07-31 14:35:41Z twisti $
+## $Id: Makefile.am 5195 2006-07-31 15:26:10Z twisti $
 
 ## Process this file with automake to produce Makefile.in
 
@@ -50,6 +50,7 @@ libnativevm_la_SOURCES = \
        gnu_java_lang_management_VMClassLoadingMXBeanImpl.c \
        gnu_java_lang_management_VMMemoryMXBeanImpl.c \
        gnu_java_lang_management_VMRuntimeMXBeanImpl.c \
+       gnu_java_lang_management_VMThreadMXBeanImpl.c \
        java_lang_VMClass.c \
        java_lang_VMClassLoader.c \
        java_lang_VMObject.c \
diff --git a/src/native/vm/gnu_java_lang_management_VMThreadMXBeanImpl.c b/src/native/vm/gnu_java_lang_management_VMThreadMXBeanImpl.c
new file mode 100644 (file)
index 0000000..b67a45f
--- /dev/null
@@ -0,0 +1,174 @@
+/* src/native/vm/gnu_java_lang_management_VMThreadMXBeanImpl.c
+
+   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
+   E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
+   J. Wenninger, Institut f. Computersprachen - TU Wien
+
+   This file is part of CACAO.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2, or (at
+   your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Contact: cacao@cacaojvm.org
+
+   Authors: Christian Thalinger
+
+   Changes:
+
+   $Id: VMFrame.c 4996 2006-05-31 13:53:16Z motse $
+
+*/
+
+
+#include "config.h"
+#include "vm/types.h"
+
+#include "mm/boehm.h"
+
+#include "native/jni.h"
+#include "native/include/java_lang_management_ThreadInfo.h"
+
+#include "toolbox/logging.h"
+#include "vm/classcache.h"
+#include "vm/vm.h"
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    findMonitorDeadlockedThreads
+ * Signature: ()[J
+ */
+JNIEXPORT java_longarray* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads(JNIEnv *env, jclass clazz)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads: IMPLEMENT ME!");
+
+       return NULL;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getCurrentThreadCpuTime
+ * Signature: ()J
+ */
+JNIEXPORT s8 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getCurrentThreadCpuTime(JNIEnv *env, jclass clazz)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getCurrentThreadCpuTime: IMPLEMENT ME!");
+
+       return 0;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getCurrentThreadUserTime
+ * Signature: ()J
+ */
+JNIEXPORT s8 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getCurrentThreadUserTime(JNIEnv *env, jclass clazz)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getCurrentThreadUserTime: IMPLEMENT ME!");
+
+       return 0;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getPeakThreadCount
+ * Signature: ()I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getPeakThreadCount(JNIEnv *env, jclass clazz)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getPeakThreadCount: IMPLEMENT ME!");
+
+       return 0;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getThreadCpuTime
+ * Signature: (J)J
+ */
+JNIEXPORT s8 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadCpuTime(JNIEnv *env, jclass clazz, s8 id)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadCpuTime: IMPLEMENT ME!");
+
+       return 0;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getThreadInfoForId
+ * Signature: (JI)Ljava/lang/management/ThreadInfo;
+ */
+JNIEXPORT java_lang_management_ThreadInfo* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadInfoForId(JNIEnv *env, jclass clazz, s8 id, s4 maxDepth)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadInfoForId: IMPLEMENT ME!");
+
+       return NULL;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getThreadUserTime
+ * Signature: (J)J
+ */
+JNIEXPORT s8 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadUserTime(JNIEnv *env, jclass clazz, s8 par1)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_getThreadUserTime: IMPLEMENT ME!");
+
+       return 0;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    getTotalStartedThreadCount
+ * Signature: ()J
+ */
+JNIEXPORT s8 JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_getTotalStartedThreadCount(JNIEnv *env, jclass clazz)
+{
+       return _Jv_jvm->total_started_thread_count;
+}
+
+
+/*
+ * Class:     gnu/java/lang/management/VMThreadMXBeanImpl
+ * Method:    resetPeakThreadCount
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_resetPeakThreadCount(JNIEnv *env, jclass clazz)
+{
+       log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_resetPeakThreadCount: IMPLEMENT ME!");
+}
+
+
+/*
+ * These are local overrides for various environment variables in Emacs.
+ * Please do not remove this and leave it at the end of the file, where
+ * Emacs will automagically detect them.
+ * ---------------------------------------------------------------------
+ * Local variables:
+ * mode: c
+ * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ * vim:noexpandtab:sw=4:ts=4:
+ */
index 3b1927b3c49ee4207731ad1f2eb89455377213c7..8eb853a4f22f1755963624d982d1e6855e07120e 100644 (file)
@@ -29,7 +29,7 @@
    Changes: Christian Thalinger
                        Edwin Steiner
 
-   $Id: threads.c 5049 2006-06-23 12:07:26Z twisti $
+   $Id: threads.c 5195 2006-07-31 15:26:10Z twisti $
 
 */
 
@@ -1113,14 +1113,21 @@ static void *threads_startup_thread(void *t)
                if (method == NULL)
                        throw_exception();
 
-               (void) vm_call_method(method, (java_objectheader *) thread);
+               /* increase total started thread count */
+
+               _Jv_jvm->total_started_thread_count++;
 
+               (void) vm_call_method(method, (java_objectheader *) thread);
        }
        else {
                /* this is an internal thread */
 
                thread->flags |= THREAD_FLAG_INTERNAL;
 
+               /* increase total started thread count */
+
+               _Jv_jvm->total_started_thread_count++;
+
                /* call passed function, e.g. finalizer_thread */
 
                (function)();