source: trunk/gcc/libjava/include/jvmpi.h@ 2878

Last change on this file since 2878 was 2, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.7 KB
Line 
1/* Copyright (C) 2000 Free Software Foundation
2
3 This file is part of libgcj.
4
5This software is copyrighted work licensed under the terms of the
6Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
7details. */
8
9/* Note: this file must be compilable by the C compiler (for now,
10 assuming GNU C is ok). This means you must never use `//'
11 comments, and all C++-specific code must be conditional on
12 __cplusplus. */
13
14#ifndef __GCJ_JVMPI_H__
15#define __GCJ_JVMPI_H__
16
17#include <jni.h>
18
19/* JVMPI version numbers. FIXME: this is a semi-random number. The
20 documentation doesn't say what it should be. */
21#define JVMPI_VERSION_1 0x00020001
22
23/* JVMPI return codes. FIXME: These are semi-random numbers. The
24 documentation doesn't say what they should be. */
25#define JVMPI_SUCCESS 0
26#define JVMPI_FAIL 1
27#define JVMPI_NOT_AVAILABLE 2
28
29/* An opaque pointer representing an object ID. */
30struct _jobjectID;
31typedef struct _jobjectID * jobjectID;
32
33typedef struct
34{
35 /* Source line number. */
36 jint lineno;
37 /* Method being executed. */
38 jmethodID method_id;
39} JVMPI_CallFrame;
40
41typedef struct
42{
43 JNIEnv *env_id;
44 /* Number of frames in the call trace. */
45 jint num_frames;
46 /* An array of frames representing the trace. Callees first. */
47 JVMPI_CallFrame *frames;
48} JVMPI_CallTrace;
49
50typedef struct
51{
52 /* Name of the field. */
53 char *field_name;
54 /* Signature of the field. */
55 char *field_signature;
56} JVMPI_Field;
57
58/* The documentation doesn't actually specify what the
59 JVMPI_DUMP_LEVEL macros should be defined to. Here's a reasonable
60 guess. */
61#define JVMPI_DUMP_LEVEL_0 0
62#define JVMPI_DUMP_LEVEL_1 1
63#define JVMPI_DUMP_LEVEL_2 2
64#define JVMPI_DUMP_LEVEL_3 3
65
66typedef struct
67{
68 /* One of JVMPI_DUMP_LEVEL_0, JVMPI_DUMP_LEVEL_1 or
69 JVMPI_DUMP_LEVEL_2. */
70 jint heap_dump_level;
71} JVMPI_HeapDumpArg;
72
73typedef struct
74{
75 /* Offset from the beginning of the method. */
76 jint offset;
77 /* Line number from the beginning of the source file. */
78 jint lineno;
79} JVMPI_Lineno;
80
81typedef struct
82{
83 /* Name of the method. */
84 char *method_name;
85 /* Signature of the method. */
86 char *method_signature;
87 /* Start line number from the beginning of the source file. */
88 jint start_lineno;
89 /* End line number from the beginning of the source file. */
90 jint end_lineno;
91 /* The method ID. */
92 jmethodID method_id;
93} JVMPI_Method;
94
95/* An opaque pointer representing a raw monitor. */
96struct _JVMPI_RawMonitor;
97typedef struct _JVMPI_RawMonitor *JVMPI_RawMonitor;
98
99/* JVMPI event codes. FIXME: These are semi-random numbers. The
100 documentation doesn't say what they should be. */
101#define JVMPI_EVENT_ARENA_DELETE 0
102#define JVMPI_EVENT_ARENA_NEW 1
103#define JVMPI_EVENT_CLASS_LOAD 2
104#define JVMPI_EVENT_CLASS_LOAD_HOOK 3
105#define JVMPI_EVENT_CLASS_UNLOAD 4
106#define JVMPI_EVENT_COMPILED_METHOD_LOAD 5
107#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD 6
108#define JVMPI_EVENT_DATA_DUMP_REQUEST 7
109#define JVMPI_EVENT_DATA_RESET_REQUEST 8
110#define JVMPI_EVENT_GC_FINISH 9
111#define JVMPI_EVENT_GC_START 10
112#define JVMPI_EVENT_HEAP_DUMP 11
113#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC 12
114#define JVMPI_EVENT_JNI_GLOBALREF_FREE 13
115#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC 14
116#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE 15
117#define JVMPI_EVENT_JVM_INIT_DONE 16
118#define JVMPI_EVENT_JVM_SHUT_DOWN 17
119#define JVMPI_EVENT_METHOD_ENTRY 18
120#define JVMPI_EVENT_METHOD_ENTRY2 19
121#define JVMPI_EVENT_METHOD_EXIT 20
122#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER 21
123#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED 22
124#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT 23
125#define JVMPI_EVENT_MONITOR_DUMP 24
126#define JVMPI_EVENT_MONITOR_WAIT 25
127#define JVMPI_EVENT_MONITOR_WAITED 26
128#define JVMPI_EVENT_OBJECT_ALLOC 27
129#define JVMPI_EVENT_OBJECT_DUMP 28
130#define JVMPI_EVENT_OBJECT_FREE 29
131#define JVMPI_EVENT_OBJECT_MOVE 30
132#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER 31
133#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED 32
134#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT 33
135#define JVMPI_EVENT_THREAD_END 34
136#define JVMPI_EVENT_THREAD_START 35
137#define JVMPI_EVENT_INSTRUCTION_START 36
138
139
140typedef struct
141{
142 /* Event type. */
143 jint event_type;
144
145 /* Evn where this event occurred. */
146 JNIEnv *env_id;
147
148 union
149 {
150 struct
151 {
152 char *class_name;
153 char *source_name;
154 jint num_interfaces;
155 jint num_methods;
156 JVMPI_Method *methods;
157 jint num_static_fields;
158 JVMPI_Field *statics;
159 jint num_instance_fields;
160 JVMPI_Field *instances;
161 jobjectID class_id;
162 } class_load;
163
164 struct
165 {
166 jobjectID class_id;
167 } class_unload;
168
169 struct
170 {
171 jint arena_id;
172 jobjectID class_id;
173 jint is_array;
174 jint size;
175 jobjectID obj_id;
176 } obj_alloc;
177
178 struct
179 {