Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
a7862cf7
Commit
a7862cf7
authored
Apr 02, 2000
by
Anthony Green
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Forgot to add this file before...
From-SVN: r32868
parent
89afab9c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
227 additions
and
0 deletions
+227
-0
libjava/include/jvmpi.h
+227
-0
No files found.
libjava/include/jvmpi.h
0 → 100644
View file @
a7862cf7
/* Copyright (C) 2000 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. */
/* Note: this file must be compilable by the C compiler (for now,
assuming GNU C is ok). This means you must never use `//'
comments, and all C++-specific code must be conditional on
__cplusplus. */
#ifndef __GCJ_JVMPI_H__
#define __GCJ_JVMPI_H__
#include <jni.h>
/* JVMPI version numbers. FIXME: this is a semi-random number. The
documentation doesn't say what it should be. */
#define JVMPI_VERSION_1 0x00020001
/* JVMPI return codes. FIXME: These are semi-random numbers. The
documentation doesn't say what they should be. */
#define JVMPI_SUCCESS 0
#define JVMPI_FAIL 1
#define JVMPI_NOT_AVAILABLE 2
/* An opaque pointer representing an object ID. */
struct
_jobjectID
;
typedef
struct
_jobjectID
*
jobjectID
;
typedef
struct
{
/* Source line number. */
jint
lineno
;
/* Method being executed. */
jmethodID
method_id
;
}
JVMPI_CallFrame
;
typedef
struct
{
JNIEnv
*
env_id
;
/* Number of frames in the call trace. */
jint
num_frames
;
/* An array of frames representing the trace. Callees first. */
JVMPI_CallFrame
*
frames
;
}
JVMPI_CallTrace
;
typedef
struct
{
/* Name of the field. */
char
*
field_name
;
/* Signature of the field. */
char
*
field_signature
;
}
JVMPI_Field
;
/* The documentation doesn't actually specify what the
JVMPI_DUMP_LEVEL macros should be defined to. Here's a reasonable
guess. */
#define JVMPI_DUMP_LEVEL_0 0
#define JVMPI_DUMP_LEVEL_1 1
#define JVMPI_DUMP_LEVEL_2 2
#define JVMPI_DUMP_LEVEL_3 3
typedef
struct
{
/* One of JVMPI_DUMP_LEVEL_0, JVMPI_DUMP_LEVEL_1 or
JVMPI_DUMP_LEVEL_2. */
jint
heap_dump_level
;
}
JVMPI_HeapDumpArg
;
typedef
struct
{
/* Offset from the beginning of the method. */
jint
offset
;
/* Line number from the beginning of the source file. */
jint
lineno
;
}
JVMPI_Lineno
;
typedef
struct
{
/* Name of the method. */
char
*
method_name
;
/* Signature of the method. */
char
*
method_signature
;
/* Start line number from the beginning of the source file. */
jint
start_lineno
;
/* End line number from the beginning of the source file. */
jint
end_lineno
;
/* The method ID. */
jmethodID
method_id
;
}
JVMPI_Method
;
/* An opaque pointer representing a raw monitor. */
struct
_JVMPI_RawMonitor
;
typedef
struct
_JVMPI_RawMonitor
*
JVMPI_RawMonitor
;
/* JVMPI event codes. FIXME: These are semi-random numbers. The
documentation doesn't say what they should be. */
#define JVMPI_EVENT_ARENA_DELETE 0
#define JVMPI_EVENT_ARENA_NEW 1
#define JVMPI_EVENT_CLASS_LOAD 2
#define JVMPI_EVENT_CLASS_LOAD_HOOK 3
#define JVMPI_EVENT_CLASS_UNLOAD 4
#define JVMPI_EVENT_COMPILED_METHOD_LOAD 5
#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD 6
#define JVMPI_EVENT_DATA_DUMP_REQUEST 7
#define JVMPI_EVENT_DATA_RESET_REQUEST 8
#define JVMPI_EVENT_GC_FINISH 9
#define JVMPI_EVENT_GC_START 10
#define JVMPI_EVENT_HEAP_DUMP 11
#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC 12
#define JVMPI_EVENT_JNI_GLOBALREF_FREE 13
#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC 14
#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE 15
#define JVMPI_EVENT_JVM_INIT_DONE 16
#define JVMPI_EVENT_JVM_SHUT_DOWN 17
#define JVMPI_EVENT_METHOD_ENTRY 18
#define JVMPI_EVENT_METHOD_ENTRY2 19
#define JVMPI_EVENT_METHOD_EXIT 20
#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER 21
#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED 22
#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT 23
#define JVMPI_EVENT_MONITOR_DUMP 24
#define JVMPI_EVENT_MONITOR_WAIT 25
#define JVMPI_EVENT_MONITOR_WAITED 26
#define JVMPI_EVENT_OBJECT_ALLOC 27
#define JVMPI_EVENT_OBJECT_DUMP 28
#define JVMPI_EVENT_OBJECT_FREE 29
#define JVMPI_EVENT_OBJECT_MOVE 30
#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER 31
#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED 32
#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT 33
#define JVMPI_EVENT_THREAD_END 34
#define JVMPI_EVENT_THREAD_START 35
#define JVMPI_EVENT_INSTRUCTION_START 36
typedef
struct
{
/* Event type. */
jint
event_type
;
/* Evn where this event occurred. */
JNIEnv
*
env_id
;
union
{
struct
{
char
*
class_name
;
char
*
source_name
;
jint
num_interfaces
;
jint
num_methods
;
JVMPI_Method
*
methods
;
jint
num_static_fields
;
JVMPI_Field
*
statics
;
jint
num_instance_fields
;
JVMPI_Field
*
instances
;
jobjectID
class_id
;
}
class_load
;
struct
{
jobjectID
class_id
;
}
class_unload
;
struct
{
jint
arena_id
;
jobjectID
class_id
;
jint
is_array
;
jint
size
;
jobjectID
obj_id
;
}
obj_alloc
;
struct
{
char
*
thread_name
;
char
*
group_name
;
char
*
parent_name
;
jobjectID
thread_id
;
JNIEnv
*
thread_env_id
;
}
thread_start
;
}
u
;
}
JVMPI_Event
;
typedef
struct
{
/* JVMPI version number. */
jint
version
;
/* Implemented by the user... */
void
(
*
NotifyEvent
)
(
JVMPI_Event
*
event
);
/* Implemented by the runtime... */
jint
(
*
EnableEvent
)
(
jint
event_type
,
void
*
arg
);
jint
(
*
DisableEvent
)
(
jint
event_type
,
void
*
arg
);
jint
(
*
RequestEvent
)
(
jint
event_type
,
void
*
arg
);
void
(
*
GetCallTrace
)
(
JVMPI_CallTrace
*
trace
,
jint
depth
);
void
(
*
ProfilerExit
)
(
jint
);
JVMPI_RawMonitor
(
*
RawMonitorCreate
)
(
char
*
lock_name
);
void
(
*
RawMonitorEnter
)
(
JVMPI_RawMonitor
lock_id
);
void
(
*
RawMonitorExit
)
(
JVMPI_RawMonitor
lock_id
);
void
(
*
RawMonitorWait
)
(
JVMPI_RawMonitor
lock_id
,
jlong
ms
);
void
(
*
RawMonitorNotifyAll
)
(
JVMPI_RawMonitor
lock_id
);
void
(
*
RawMonitorDestroy
)
(
JVMPI_RawMonitor
lock_id
);
jlong
(
*
GetCurrentThreadCpuTime
)
(
void
);
void
(
*
SuspendThread
)
(
JNIEnv
*
env
);
void
(
*
ResumeThread
)
(
JNIEnv
*
env
);
jint
(
*
GetThreadStatus
)
(
JNIEnv
*
env
);
jboolean
(
*
ThreadHasRun
)
(
JNIEnv
*
env
);
jint
(
*
CreateSystemThread
)
(
char
*
name
,
jint
priority
,
void
(
*
f
)
(
void
*
));
void
(
*
SetThreadLocalStorage
)
(
JNIEnv
*
env_id
,
void
*
ptr
);
void
*
(
*
GetThreadLocalStorage
)
(
JNIEnv
*
env_id
);
void
(
*
DisableGC
)
(
void
);
void
(
*
EnableGC
)
(
void
);
void
(
*
RunGC
)
(
void
);
jobjectID
(
*
GetThreadObject
)
(
JNIEnv
*
env
);
jobjectID
(
*
GetMethodClass
)
(
jmethodID
mid
);
}
JVMPI_Interface
;
#endif
/* __GCJ_JVMPI_H__ */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment