aboutsummaryrefslogtreecommitdiff
path: root/libjava/include
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/include')
-rw-r--r--libjava/include/jvmti-int.h85
-rw-r--r--libjava/include/jvmti_md.h28
2 files changed, 112 insertions, 1 deletions
diff --git a/libjava/include/jvmti-int.h b/libjava/include/jvmti-int.h
new file mode 100644
index 0000000..36e0da8
--- /dev/null
+++ b/libjava/include/jvmti-int.h
@@ -0,0 +1,85 @@
+/* jvmti-int.h -- Internal JVMTI definitions
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath 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.
+
+GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+#ifndef __GCJ_JVTMI_INT_H__
+#define __GCJ_JVMTI_INT_H__
+
+/* A macro to map jvmtiEvent to an index in thread[] and enabled[]
+ in the jvmtiEnv. This will only work if the order of events listed
+ in jvmtiEvent and jvmtiEventCallbacks is kept the same (which should
+ not be a problem). */
+#define EVENT_INDEX(jvmtievent) (int)(jvmtievent - JVMTI_EVENT_VM_INIT)
+
+/* A few globals to help limit the impact of JVMTI on normal operations.
+ False means no JVMTI environment requested that event type. */
+namespace JVMTI
+{
+ bool VMInit;
+ bool VMDeath;
+ bool ThreadStart;
+ bool ThreadEnd;
+ bool ClassFileLoadHook;
+ bool ClassLoad;
+ bool ClassPrepare;
+ bool VMStart;
+ bool Exception;
+ bool ExceptionCatch;
+ bool SingleStep;
+ bool FramePop;
+ bool Breakpoint;
+ bool FieldAccess;
+ bool FieldModification;
+ bool MethodEntry;
+ bool MethodExit;
+ bool NativeMethodBind;
+ bool CompiledMethodLoad;
+ bool CompiledMethodUnload;
+ bool DynamicCodeGenerated;
+ bool DataDumpRequest;
+ bool reserved72;
+ bool MonitorWait;
+ bool MonitorWaited;
+ bool MonitorContendedEnter;
+ bool MonitorContendedEntered;
+ bool reserved77;
+ bool reserved78;
+ bool reserved79;
+ bool reserved80;
+ bool GarbageCollectionStart;
+ bool GarbageCollectionFinish;
+ bool ObjectFree;
+ bool VMObjectAlloc;
+};
+
+/* A macro to test whether an event should be posted to JVMTI.*/
+#define JVMTI_REQUESTED_EVENT(Event) __builtin_expect (JVMTI::Event, false)
+
+/* Post the event to requesting JVMTI environments.
+
+ For speed, this function should only be called after
+ JVMTI_REQUESTED_EVENT is checked. */
+extern void _Jv_JVMTI_PostEvent (jvmtiEvent type, jthread event_thread, ...);
+#endif /* __GCJ_JVMTI_INT_H__ */
diff --git a/libjava/include/jvmti_md.h b/libjava/include/jvmti_md.h
index ab920b9..549d421 100644
--- a/libjava/include/jvmti_md.h
+++ b/libjava/include/jvmti_md.h
@@ -27,6 +27,32 @@ executable file might be covered by the GNU General Public License. */
#ifndef __GCJ_JVMTI_MD_H__
#define __GCJ_JVMTI_MD_H__
-// nothing
+#ifdef __GCJ_JNI_IMPL__
+
+/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
+ libgcj itself, and we include functions which should not be exposed
+ to JVMTI users. */
+
+/* The number of event slots needed to keep track of event reporting
+ constraints for an environment. This will only work if the order of
+ events listed in jvmtiEvent and jvmtiEventCallbacks is kept the same
+ (which should not be a problem). */
+#define EVENT_SLOTS \
+ (int)(JVMTI_EVENT_VM_OBJECT_ALLOC - JVMTI_EVENT_VM_INIT + 1)
+
+/* Contents of the jvmtiEnv; but only inside the implementation. */
+#define _CLASSPATH_JVMTIENV_CONTENTS \
+ /* Event handlers registered via SetEventCallbacks */ \
+ jvmtiEventCallbacks callbacks; \
+ \
+ /* Array of event thread for which to report event. */ \
+ /* NULL means all threads. One for each callback. */ \
+ jthread thread[EVENT_SLOTS]; \
+ \
+ /* Array of notification modes for callbacks. */ \
+ /* One for each callback. */ \
+ bool enabled[EVENT_SLOTS];
+
+#endif /* __GCJ_JNI_IMPL__ */
#endif /* __GCJ_JVMTI_MD_H__ */