annotate src/share/vm/prims/jvm.h @ 6972:bd7a7ce2e264

6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 12 Nov 2012 14:03:53 -0800
parents da91efe96a93
children 35431a769282
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 982
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 982
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 982
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
25 #ifndef SHARE_VM_PRIMS_JVM_H
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
26 #define SHARE_VM_PRIMS_JVM_H
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
27
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
28 #include "prims/jni.h"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
29 #ifdef TARGET_OS_FAMILY_linux
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
30 # include "jvm_linux.h"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
31 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
32 #ifdef TARGET_OS_FAMILY_solaris
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
33 # include "jvm_solaris.h"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
34 #endif
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
35 #ifdef TARGET_OS_FAMILY_windows
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
36 # include "jvm_windows.h"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
37 #endif
3960
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3922
diff changeset
38 #ifdef TARGET_OS_FAMILY_bsd
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3922
diff changeset
39 # include "jvm_bsd.h"
f08d439fab8c 7089790: integrate bsd-port changes
never
parents: 3922
diff changeset
40 #endif
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
41
0
a61af66fc99e Initial load
duke
parents:
diff changeset
42 #ifndef _JAVASOFT_JVM_H_
a61af66fc99e Initial load
duke
parents:
diff changeset
43 #define _JAVASOFT_JVM_H_
a61af66fc99e Initial load
duke
parents:
diff changeset
44
a61af66fc99e Initial load
duke
parents:
diff changeset
45 // HotSpot integration note:
a61af66fc99e Initial load
duke
parents:
diff changeset
46 //
a61af66fc99e Initial load
duke
parents:
diff changeset
47 // This file and jvm.h used with the JDK are identical,
3895
19241ae0d839 7082263: Reflection::resolve_field/field_get/field_set are broken
never
parents: 2460
diff changeset
48 // except for the three includes removed below
0
a61af66fc99e Initial load
duke
parents:
diff changeset
49
a61af66fc99e Initial load
duke
parents:
diff changeset
50 // #include <sys/stat.h>
a61af66fc99e Initial load
duke
parents:
diff changeset
51 // #include "jni.h"
a61af66fc99e Initial load
duke
parents:
diff changeset
52 // #include "jvm_md.h"
a61af66fc99e Initial load
duke
parents:
diff changeset
53
a61af66fc99e Initial load
duke
parents:
diff changeset
54
a61af66fc99e Initial load
duke
parents:
diff changeset
55 #ifdef __cplusplus
a61af66fc99e Initial load
duke
parents:
diff changeset
56 extern "C" {
a61af66fc99e Initial load
duke
parents:
diff changeset
57 #endif
a61af66fc99e Initial load
duke
parents:
diff changeset
58
a61af66fc99e Initial load
duke
parents:
diff changeset
59 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
60 * This file contains additional functions exported from the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
61 * These functions are complementary to the standard JNI support.
a61af66fc99e Initial load
duke
parents:
diff changeset
62 * There are three parts to this file:
a61af66fc99e Initial load
duke
parents:
diff changeset
63 *
a61af66fc99e Initial load
duke
parents:
diff changeset
64 * First, this file contains the VM-related functions needed by native
a61af66fc99e Initial load
duke
parents:
diff changeset
65 * libraries in the standard Java API. For example, the java.lang.Object
a61af66fc99e Initial load
duke
parents:
diff changeset
66 * class needs VM-level functions that wait for and notify monitors.
a61af66fc99e Initial load
duke
parents:
diff changeset
67 *
a61af66fc99e Initial load
duke
parents:
diff changeset
68 * Second, this file contains the functions and constant definitions
a61af66fc99e Initial load
duke
parents:
diff changeset
69 * needed by the byte code verifier and class file format checker.
a61af66fc99e Initial load
duke
parents:
diff changeset
70 * These functions allow the verifier and format checker to be written
a61af66fc99e Initial load
duke
parents:
diff changeset
71 * in a VM-independent way.
a61af66fc99e Initial load
duke
parents:
diff changeset
72 *
a61af66fc99e Initial load
duke
parents:
diff changeset
73 * Third, this file contains various I/O and nerwork operations needed
a61af66fc99e Initial load
duke
parents:
diff changeset
74 * by the standard Java I/O and network APIs.
a61af66fc99e Initial load
duke
parents:
diff changeset
75 */
a61af66fc99e Initial load
duke
parents:
diff changeset
76
a61af66fc99e Initial load
duke
parents:
diff changeset
77 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
78 * Bump the version number when either of the following happens:
a61af66fc99e Initial load
duke
parents:
diff changeset
79 *
a61af66fc99e Initial load
duke
parents:
diff changeset
80 * 1. There is a change in JVM_* functions.
a61af66fc99e Initial load
duke
parents:
diff changeset
81 *
a61af66fc99e Initial load
duke
parents:
diff changeset
82 * 2. There is a change in the contract between VM and Java classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
83 * For example, if the VM relies on a new private field in Thread
a61af66fc99e Initial load
duke
parents:
diff changeset
84 * class.
a61af66fc99e Initial load
duke
parents:
diff changeset
85 */
a61af66fc99e Initial load
duke
parents:
diff changeset
86
a61af66fc99e Initial load
duke
parents:
diff changeset
87 #define JVM_INTERFACE_VERSION 4
a61af66fc99e Initial load
duke
parents:
diff changeset
88
a61af66fc99e Initial load
duke
parents:
diff changeset
89
a61af66fc99e Initial load
duke
parents:
diff changeset
90 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
91 JVM_GetInterfaceVersion(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
92
a61af66fc99e Initial load
duke
parents:
diff changeset
93 /*************************************************************************
a61af66fc99e Initial load
duke
parents:
diff changeset
94 PART 1: Functions for Native Libraries
a61af66fc99e Initial load
duke
parents:
diff changeset
95 ************************************************************************/
a61af66fc99e Initial load
duke
parents:
diff changeset
96 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
97 * java.lang.Object
a61af66fc99e Initial load
duke
parents:
diff changeset
98 */
a61af66fc99e Initial load
duke
parents:
diff changeset
99 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
100 JVM_IHashCode(JNIEnv *env, jobject obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
101
a61af66fc99e Initial load
duke
parents:
diff changeset
102 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
103 JVM_MonitorWait(JNIEnv *env, jobject obj, jlong ms);
a61af66fc99e Initial load
duke
parents:
diff changeset
104
a61af66fc99e Initial load
duke
parents:
diff changeset
105 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
106 JVM_MonitorNotify(JNIEnv *env, jobject obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
107
a61af66fc99e Initial load
duke
parents:
diff changeset
108 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
109 JVM_MonitorNotifyAll(JNIEnv *env, jobject obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
110
a61af66fc99e Initial load
duke
parents:
diff changeset
111 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
112 JVM_Clone(JNIEnv *env, jobject obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
113
a61af66fc99e Initial load
duke
parents:
diff changeset
114 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
115 * java.lang.String
a61af66fc99e Initial load
duke
parents:
diff changeset
116 */
a61af66fc99e Initial load
duke
parents:
diff changeset
117 JNIEXPORT jstring JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
118 JVM_InternString(JNIEnv *env, jstring str);
a61af66fc99e Initial load
duke
parents:
diff changeset
119
a61af66fc99e Initial load
duke
parents:
diff changeset
120 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
121 * java.lang.System
a61af66fc99e Initial load
duke
parents:
diff changeset
122 */
a61af66fc99e Initial load
duke
parents:
diff changeset
123 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
124 JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored);
a61af66fc99e Initial load
duke
parents:
diff changeset
125
a61af66fc99e Initial load
duke
parents:
diff changeset
126 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
127 JVM_NanoTime(JNIEnv *env, jclass ignored);
a61af66fc99e Initial load
duke
parents:
diff changeset
128
a61af66fc99e Initial load
duke
parents:
diff changeset
129 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
130 JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos,
a61af66fc99e Initial load
duke
parents:
diff changeset
131 jobject dst, jint dst_pos, jint length);
a61af66fc99e Initial load
duke
parents:
diff changeset
132
a61af66fc99e Initial load
duke
parents:
diff changeset
133 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
134 JVM_InitProperties(JNIEnv *env, jobject p);
a61af66fc99e Initial load
duke
parents:
diff changeset
135
a61af66fc99e Initial load
duke
parents:
diff changeset
136 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
137 * java.io.File
a61af66fc99e Initial load
duke
parents:
diff changeset
138 */
a61af66fc99e Initial load
duke
parents:
diff changeset
139 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
140 JVM_OnExit(void (*func)(void));
a61af66fc99e Initial load
duke
parents:
diff changeset
141
a61af66fc99e Initial load
duke
parents:
diff changeset
142 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
143 * java.lang.Runtime
a61af66fc99e Initial load
duke
parents:
diff changeset
144 */
a61af66fc99e Initial load
duke
parents:
diff changeset
145 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
146 JVM_Exit(jint code);
a61af66fc99e Initial load
duke
parents:
diff changeset
147
a61af66fc99e Initial load
duke
parents:
diff changeset
148 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
149 JVM_Halt(jint code);
a61af66fc99e Initial load
duke
parents:
diff changeset
150
a61af66fc99e Initial load
duke
parents:
diff changeset
151 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
152 JVM_GC(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
153
a61af66fc99e Initial load
duke
parents:
diff changeset
154 /* Returns the number of real-time milliseconds that have elapsed since the
a61af66fc99e Initial load
duke
parents:
diff changeset
155 * least-recently-inspected heap object was last inspected by the garbage
a61af66fc99e Initial load
duke
parents:
diff changeset
156 * collector.
a61af66fc99e Initial load
duke
parents:
diff changeset
157 *
a61af66fc99e Initial load
duke
parents:
diff changeset
158 * For simple stop-the-world collectors this value is just the time
a61af66fc99e Initial load
duke
parents:
diff changeset
159 * since the most recent collection. For generational collectors it is the
a61af66fc99e Initial load
duke
parents:
diff changeset
160 * time since the oldest generation was most recently collected. Other
a61af66fc99e Initial load
duke
parents:
diff changeset
161 * collectors are free to return a pessimistic estimate of the elapsed time, or
a61af66fc99e Initial load
duke
parents:
diff changeset
162 * simply the time since the last full collection was performed.
a61af66fc99e Initial load
duke
parents:
diff changeset
163 *
a61af66fc99e Initial load
duke
parents:
diff changeset
164 * Note that in the presence of reference objects, a given object that is no
a61af66fc99e Initial load
duke
parents:
diff changeset
165 * longer strongly reachable may have to be inspected multiple times before it
a61af66fc99e Initial load
duke
parents:
diff changeset
166 * can be reclaimed.
a61af66fc99e Initial load
duke
parents:
diff changeset
167 */
a61af66fc99e Initial load
duke
parents:
diff changeset
168 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
169 JVM_MaxObjectInspectionAge(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
170
a61af66fc99e Initial load
duke
parents:
diff changeset
171 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
172 JVM_TraceInstructions(jboolean on);
a61af66fc99e Initial load
duke
parents:
diff changeset
173
a61af66fc99e Initial load
duke
parents:
diff changeset
174 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
175 JVM_TraceMethodCalls(jboolean on);
a61af66fc99e Initial load
duke
parents:
diff changeset
176
a61af66fc99e Initial load
duke
parents:
diff changeset
177 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
178 JVM_TotalMemory(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
179
a61af66fc99e Initial load
duke
parents:
diff changeset
180 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
181 JVM_FreeMemory(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
182
a61af66fc99e Initial load
duke
parents:
diff changeset
183 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
184 JVM_MaxMemory(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
185
a61af66fc99e Initial load
duke
parents:
diff changeset
186 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
187 JVM_ActiveProcessorCount(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
188
a61af66fc99e Initial load
duke
parents:
diff changeset
189 JNIEXPORT void * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
190 JVM_LoadLibrary(const char *name);
a61af66fc99e Initial load
duke
parents:
diff changeset
191
a61af66fc99e Initial load
duke
parents:
diff changeset
192 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
193 JVM_UnloadLibrary(void * handle);
a61af66fc99e Initial load
duke
parents:
diff changeset
194
a61af66fc99e Initial load
duke
parents:
diff changeset
195 JNIEXPORT void * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
196 JVM_FindLibraryEntry(void *handle, const char *name);
a61af66fc99e Initial load
duke
parents:
diff changeset
197
a61af66fc99e Initial load
duke
parents:
diff changeset
198 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
199 JVM_IsSupportedJNIVersion(jint version);
a61af66fc99e Initial load
duke
parents:
diff changeset
200
a61af66fc99e Initial load
duke
parents:
diff changeset
201 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
202 * java.lang.Float and java.lang.Double
a61af66fc99e Initial load
duke
parents:
diff changeset
203 */
a61af66fc99e Initial load
duke
parents:
diff changeset
204 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
205 JVM_IsNaN(jdouble d);
a61af66fc99e Initial load
duke
parents:
diff changeset
206
a61af66fc99e Initial load
duke
parents:
diff changeset
207 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
208 * java.lang.Throwable
a61af66fc99e Initial load
duke
parents:
diff changeset
209 */
a61af66fc99e Initial load
duke
parents:
diff changeset
210 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
211 JVM_FillInStackTrace(JNIEnv *env, jobject throwable);
a61af66fc99e Initial load
duke
parents:
diff changeset
212
a61af66fc99e Initial load
duke
parents:
diff changeset
213 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
214 JVM_PrintStackTrace(JNIEnv *env, jobject throwable, jobject printable);
a61af66fc99e Initial load
duke
parents:
diff changeset
215
a61af66fc99e Initial load
duke
parents:
diff changeset
216 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
217 JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable);
a61af66fc99e Initial load
duke
parents:
diff changeset
218
a61af66fc99e Initial load
duke
parents:
diff changeset
219 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
220 JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
221
a61af66fc99e Initial load
duke
parents:
diff changeset
222 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
223 * java.lang.Compiler
a61af66fc99e Initial load
duke
parents:
diff changeset
224 */
a61af66fc99e Initial load
duke
parents:
diff changeset
225 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
226 JVM_InitializeCompiler (JNIEnv *env, jclass compCls);
a61af66fc99e Initial load
duke
parents:
diff changeset
227
a61af66fc99e Initial load
duke
parents:
diff changeset
228 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
229 JVM_IsSilentCompiler(JNIEnv *env, jclass compCls);
a61af66fc99e Initial load
duke
parents:
diff changeset
230
a61af66fc99e Initial load
duke
parents:
diff changeset
231 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
232 JVM_CompileClass(JNIEnv *env, jclass compCls, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
233
a61af66fc99e Initial load
duke
parents:
diff changeset
234 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
235 JVM_CompileClasses(JNIEnv *env, jclass cls, jstring jname);
a61af66fc99e Initial load
duke
parents:
diff changeset
236
a61af66fc99e Initial load
duke
parents:
diff changeset
237 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
238 JVM_CompilerCommand(JNIEnv *env, jclass compCls, jobject arg);
a61af66fc99e Initial load
duke
parents:
diff changeset
239
a61af66fc99e Initial load
duke
parents:
diff changeset
240 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
241 JVM_EnableCompiler(JNIEnv *env, jclass compCls);
a61af66fc99e Initial load
duke
parents:
diff changeset
242
a61af66fc99e Initial load
duke
parents:
diff changeset
243 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
244 JVM_DisableCompiler(JNIEnv *env, jclass compCls);
a61af66fc99e Initial load
duke
parents:
diff changeset
245
a61af66fc99e Initial load
duke
parents:
diff changeset
246 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
247 * java.lang.Thread
a61af66fc99e Initial load
duke
parents:
diff changeset
248 */
a61af66fc99e Initial load
duke
parents:
diff changeset
249 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
250 JVM_StartThread(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
251
a61af66fc99e Initial load
duke
parents:
diff changeset
252 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
253 JVM_StopThread(JNIEnv *env, jobject thread, jobject exception);
a61af66fc99e Initial load
duke
parents:
diff changeset
254
a61af66fc99e Initial load
duke
parents:
diff changeset
255 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
256 JVM_IsThreadAlive(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
257
a61af66fc99e Initial load
duke
parents:
diff changeset
258 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
259 JVM_SuspendThread(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
260
a61af66fc99e Initial load
duke
parents:
diff changeset
261 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
262 JVM_ResumeThread(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
263
a61af66fc99e Initial load
duke
parents:
diff changeset
264 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
265 JVM_SetThreadPriority(JNIEnv *env, jobject thread, jint prio);
a61af66fc99e Initial load
duke
parents:
diff changeset
266
a61af66fc99e Initial load
duke
parents:
diff changeset
267 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
268 JVM_Yield(JNIEnv *env, jclass threadClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
269
a61af66fc99e Initial load
duke
parents:
diff changeset
270 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
271 JVM_Sleep(JNIEnv *env, jclass threadClass, jlong millis);
a61af66fc99e Initial load
duke
parents:
diff changeset
272
a61af66fc99e Initial load
duke
parents:
diff changeset
273 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
274 JVM_CurrentThread(JNIEnv *env, jclass threadClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
275
a61af66fc99e Initial load
duke
parents:
diff changeset
276 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
277 JVM_CountStackFrames(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
278
a61af66fc99e Initial load
duke
parents:
diff changeset
279 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
280 JVM_Interrupt(JNIEnv *env, jobject thread);
a61af66fc99e Initial load
duke
parents:
diff changeset
281
a61af66fc99e Initial load
duke
parents:
diff changeset
282 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
283 JVM_IsInterrupted(JNIEnv *env, jobject thread, jboolean clearInterrupted);
a61af66fc99e Initial load
duke
parents:
diff changeset
284
a61af66fc99e Initial load
duke
parents:
diff changeset
285 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
286 JVM_HoldsLock(JNIEnv *env, jclass threadClass, jobject obj);
a61af66fc99e Initial load
duke
parents:
diff changeset
287
a61af66fc99e Initial load
duke
parents:
diff changeset
288 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
289 JVM_DumpAllStacks(JNIEnv *env, jclass unused);
a61af66fc99e Initial load
duke
parents:
diff changeset
290
a61af66fc99e Initial load
duke
parents:
diff changeset
291 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
292 JVM_GetAllThreads(JNIEnv *env, jclass dummy);
a61af66fc99e Initial load
duke
parents:
diff changeset
293
4006
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
294 JNIEXPORT void JNICALL
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
295 JVM_SetNativeThreadName(JNIEnv *env, jobject jthread, jstring name);
436b4a3231bf 7098194: integrate macosx-port changes
dcubed
parents: 3960
diff changeset
296
0
a61af66fc99e Initial load
duke
parents:
diff changeset
297 /* getStackTrace() and getAllStackTraces() method */
a61af66fc99e Initial load
duke
parents:
diff changeset
298 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
299 JVM_DumpThreads(JNIEnv *env, jclass threadClass, jobjectArray threads);
a61af66fc99e Initial load
duke
parents:
diff changeset
300
a61af66fc99e Initial load
duke
parents:
diff changeset
301 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
302 * java.lang.SecurityManager
a61af66fc99e Initial load
duke
parents:
diff changeset
303 */
a61af66fc99e Initial load
duke
parents:
diff changeset
304 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
305 JVM_CurrentLoadedClass(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
306
a61af66fc99e Initial load
duke
parents:
diff changeset
307 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
308 JVM_CurrentClassLoader(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
309
a61af66fc99e Initial load
duke
parents:
diff changeset
310 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
311 JVM_GetClassContext(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
312
a61af66fc99e Initial load
duke
parents:
diff changeset
313 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
314 JVM_ClassDepth(JNIEnv *env, jstring name);
a61af66fc99e Initial load
duke
parents:
diff changeset
315
a61af66fc99e Initial load
duke
parents:
diff changeset
316 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
317 JVM_ClassLoaderDepth(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
318
a61af66fc99e Initial load
duke
parents:
diff changeset
319 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
320 * java.lang.Package
a61af66fc99e Initial load
duke
parents:
diff changeset
321 */
a61af66fc99e Initial load
duke
parents:
diff changeset
322 JNIEXPORT jstring JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
323 JVM_GetSystemPackage(JNIEnv *env, jstring name);
a61af66fc99e Initial load
duke
parents:
diff changeset
324
a61af66fc99e Initial load
duke
parents:
diff changeset
325 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
326 JVM_GetSystemPackages(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
327
a61af66fc99e Initial load
duke
parents:
diff changeset
328 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
329 * java.io.ObjectInputStream
a61af66fc99e Initial load
duke
parents:
diff changeset
330 */
a61af66fc99e Initial load
duke
parents:
diff changeset
331 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
332 JVM_AllocateNewObject(JNIEnv *env, jobject obj, jclass currClass,
a61af66fc99e Initial load
duke
parents:
diff changeset
333 jclass initClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
334
a61af66fc99e Initial load
duke
parents:
diff changeset
335 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
336 JVM_AllocateNewArray(JNIEnv *env, jobject obj, jclass currClass,
a61af66fc99e Initial load
duke
parents:
diff changeset
337 jint length);
a61af66fc99e Initial load
duke
parents:
diff changeset
338
a61af66fc99e Initial load
duke
parents:
diff changeset
339 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
340 JVM_LatestUserDefinedLoader(JNIEnv *env);
a61af66fc99e Initial load
duke
parents:
diff changeset
341
a61af66fc99e Initial load
duke
parents:
diff changeset
342 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
343 * This function has been deprecated and should not be considered
a61af66fc99e Initial load
duke
parents:
diff changeset
344 * part of the specified JVM interface.
a61af66fc99e Initial load
duke
parents:
diff changeset
345 */
a61af66fc99e Initial load
duke
parents:
diff changeset
346 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
347 JVM_LoadClass0(JNIEnv *env, jobject obj, jclass currClass,
a61af66fc99e Initial load
duke
parents:
diff changeset
348 jstring currClassName);
a61af66fc99e Initial load
duke
parents:
diff changeset
349
a61af66fc99e Initial load
duke
parents:
diff changeset
350 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
351 * java.lang.reflect.Array
a61af66fc99e Initial load
duke
parents:
diff changeset
352 */
a61af66fc99e Initial load
duke
parents:
diff changeset
353 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
354 JVM_GetArrayLength(JNIEnv *env, jobject arr);
a61af66fc99e Initial load
duke
parents:
diff changeset
355
a61af66fc99e Initial load
duke
parents:
diff changeset
356 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
357 JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
358
a61af66fc99e Initial load
duke
parents:
diff changeset
359 JNIEXPORT jvalue JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
360 JVM_GetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jint wCode);
a61af66fc99e Initial load
duke
parents:
diff changeset
361
a61af66fc99e Initial load
duke
parents:
diff changeset
362 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
363 JVM_SetArrayElement(JNIEnv *env, jobject arr, jint index, jobject val);
a61af66fc99e Initial load
duke
parents:
diff changeset
364
a61af66fc99e Initial load
duke
parents:
diff changeset
365 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
366 JVM_SetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jvalue v,
a61af66fc99e Initial load
duke
parents:
diff changeset
367 unsigned char vCode);
a61af66fc99e Initial load
duke
parents:
diff changeset
368
a61af66fc99e Initial load
duke
parents:
diff changeset
369 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
370 JVM_NewArray(JNIEnv *env, jclass eltClass, jint length);
a61af66fc99e Initial load
duke
parents:
diff changeset
371
a61af66fc99e Initial load
duke
parents:
diff changeset
372 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
373 JVM_NewMultiArray(JNIEnv *env, jclass eltClass, jintArray dim);
a61af66fc99e Initial load
duke
parents:
diff changeset
374
a61af66fc99e Initial load
duke
parents:
diff changeset
375 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
376 * java.lang.Class and java.lang.ClassLoader
a61af66fc99e Initial load
duke
parents:
diff changeset
377 */
a61af66fc99e Initial load
duke
parents:
diff changeset
378 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
379 * Returns the class in which the code invoking the native method
a61af66fc99e Initial load
duke
parents:
diff changeset
380 * belongs.
a61af66fc99e Initial load
duke
parents:
diff changeset
381 *
a61af66fc99e Initial load
duke
parents:
diff changeset
382 * Note that in JDK 1.1, native methods did not create a frame.
a61af66fc99e Initial load
duke
parents:
diff changeset
383 * In 1.2, they do. Therefore native methods like Class.forName
a61af66fc99e Initial load
duke
parents:
diff changeset
384 * can no longer look at the current frame for the caller class.
a61af66fc99e Initial load
duke
parents:
diff changeset
385 */
a61af66fc99e Initial load
duke
parents:
diff changeset
386 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
387 JVM_GetCallerClass(JNIEnv *env, int n);
a61af66fc99e Initial load
duke
parents:
diff changeset
388
a61af66fc99e Initial load
duke
parents:
diff changeset
389 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
390 * Find primitive classes
a61af66fc99e Initial load
duke
parents:
diff changeset
391 * utf: class name
a61af66fc99e Initial load
duke
parents:
diff changeset
392 */
a61af66fc99e Initial load
duke
parents:
diff changeset
393 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
394 JVM_FindPrimitiveClass(JNIEnv *env, const char *utf);
a61af66fc99e Initial load
duke
parents:
diff changeset
395
a61af66fc99e Initial load
duke
parents:
diff changeset
396 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
397 * Link the class
a61af66fc99e Initial load
duke
parents:
diff changeset
398 */
a61af66fc99e Initial load
duke
parents:
diff changeset
399 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
400 JVM_ResolveClass(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
401
a61af66fc99e Initial load
duke
parents:
diff changeset
402 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
403 * Find a class from a given class loader. Throw ClassNotFoundException
a61af66fc99e Initial load
duke
parents:
diff changeset
404 * or NoClassDefFoundError depending on the value of the last
a61af66fc99e Initial load
duke
parents:
diff changeset
405 * argument.
a61af66fc99e Initial load
duke
parents:
diff changeset
406 */
a61af66fc99e Initial load
duke
parents:
diff changeset
407 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
408 JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, jboolean init,
a61af66fc99e Initial load
duke
parents:
diff changeset
409 jobject loader, jboolean throwError);
a61af66fc99e Initial load
duke
parents:
diff changeset
410
a61af66fc99e Initial load
duke
parents:
diff changeset
411 /*
878
abe076e3636f 6864003: Modify JVM_FindClassFromBootLoader to return null if class not found
mchung
parents: 431
diff changeset
412 * Find a class from a boot class loader. Returns NULL if class not found.
226
d5ba4f8aa38a 6714758: hotspot: provide an entry point to the BootStrap Class loader[dholmes,acorn]
ksrini
parents: 116
diff changeset
413 */
d5ba4f8aa38a 6714758: hotspot: provide an entry point to the BootStrap Class loader[dholmes,acorn]
ksrini
parents: 116
diff changeset
414 JNIEXPORT jclass JNICALL
878
abe076e3636f 6864003: Modify JVM_FindClassFromBootLoader to return null if class not found
mchung
parents: 431
diff changeset
415 JVM_FindClassFromBootLoader(JNIEnv *env, const char *name);
226
d5ba4f8aa38a 6714758: hotspot: provide an entry point to the BootStrap Class loader[dholmes,acorn]
ksrini
parents: 116
diff changeset
416
d5ba4f8aa38a 6714758: hotspot: provide an entry point to the BootStrap Class loader[dholmes,acorn]
ksrini
parents: 116
diff changeset
417 /*
0
a61af66fc99e Initial load
duke
parents:
diff changeset
418 * Find a class from a given class.
a61af66fc99e Initial load
duke
parents:
diff changeset
419 */
a61af66fc99e Initial load
duke
parents:
diff changeset
420 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
421 JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init,
a61af66fc99e Initial load
duke
parents:
diff changeset
422 jclass from);
a61af66fc99e Initial load
duke
parents:
diff changeset
423
a61af66fc99e Initial load
duke
parents:
diff changeset
424 /* Find a loaded class cached by the VM */
a61af66fc99e Initial load
duke
parents:
diff changeset
425 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
426 JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name);
a61af66fc99e Initial load
duke
parents:
diff changeset
427
a61af66fc99e Initial load
duke
parents:
diff changeset
428 /* Define a class */
a61af66fc99e Initial load
duke
parents:
diff changeset
429 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
430 JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf,
a61af66fc99e Initial load
duke
parents:
diff changeset
431 jsize len, jobject pd);
a61af66fc99e Initial load
duke
parents:
diff changeset
432
a61af66fc99e Initial load
duke
parents:
diff changeset
433 /* Define a class with a source (added in JDK1.5) */
a61af66fc99e Initial load
duke
parents:
diff changeset
434 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
435 JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader,
a61af66fc99e Initial load
duke
parents:
diff changeset
436 const jbyte *buf, jsize len, jobject pd,
a61af66fc99e Initial load
duke
parents:
diff changeset
437 const char *source);
a61af66fc99e Initial load
duke
parents:
diff changeset
438
973
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
439 /* Define a class with a source with conditional verification (added HSX 14)
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
440 * -Xverify:all will verify anyway, -Xverify:none will not verify,
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
441 * -Xverify:remote (default) will obey this conditional
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
442 * i.e. true = should_verify_class
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
443 */
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
444 JNIEXPORT jclass JNICALL
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
445 JVM_DefineClassWithSourceCond(JNIEnv *env, const char *name,
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
446 jobject loader, const jbyte *buf,
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
447 jsize len, jobject pd, const char *source,
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
448 jboolean verify);
ad6585fd4087 6830542: Performance: JVM_DefineClass already verified.
acorn
parents: 878
diff changeset
449
0
a61af66fc99e Initial load
duke
parents:
diff changeset
450 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
451 * Reflection support functions
a61af66fc99e Initial load
duke
parents:
diff changeset
452 */
a61af66fc99e Initial load
duke
parents:
diff changeset
453
a61af66fc99e Initial load
duke
parents:
diff changeset
454 JNIEXPORT jstring JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
455 JVM_GetClassName(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
456
a61af66fc99e Initial load
duke
parents:
diff changeset
457 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
458 JVM_GetClassInterfaces(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
459
a61af66fc99e Initial load
duke
parents:
diff changeset
460 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
461 JVM_GetClassLoader(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
462
a61af66fc99e Initial load
duke
parents:
diff changeset
463 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
464 JVM_IsInterface(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
465
a61af66fc99e Initial load
duke
parents:
diff changeset
466 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
467 JVM_GetClassSigners(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
468
a61af66fc99e Initial load
duke
parents:
diff changeset
469 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
470 JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers);
a61af66fc99e Initial load
duke
parents:
diff changeset
471
a61af66fc99e Initial load
duke
parents:
diff changeset
472 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
473 JVM_GetProtectionDomain(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
474
a61af66fc99e Initial load
duke
parents:
diff changeset
475 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
476 JVM_SetProtectionDomain(JNIEnv *env, jclass cls, jobject protection_domain);
a61af66fc99e Initial load
duke
parents:
diff changeset
477
a61af66fc99e Initial load
duke
parents:
diff changeset
478 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
479 JVM_IsArrayClass(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
480
a61af66fc99e Initial load
duke
parents:
diff changeset
481 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
482 JVM_IsPrimitiveClass(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
483
a61af66fc99e Initial load
duke
parents:
diff changeset
484 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
485 JVM_GetComponentType(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
486
a61af66fc99e Initial load
duke
parents:
diff changeset
487 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
488 JVM_GetClassModifiers(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
489
a61af66fc99e Initial load
duke
parents:
diff changeset
490 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
491 JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
492
a61af66fc99e Initial load
duke
parents:
diff changeset
493 JNIEXPORT jclass JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
494 JVM_GetDeclaringClass(JNIEnv *env, jclass ofClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
495
a61af66fc99e Initial load
duke
parents:
diff changeset
496 /* Generics support (JDK 1.5) */
a61af66fc99e Initial load
duke
parents:
diff changeset
497 JNIEXPORT jstring JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
498 JVM_GetClassSignature(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
499
a61af66fc99e Initial load
duke
parents:
diff changeset
500 /* Annotations support (JDK 1.5) */
a61af66fc99e Initial load
duke
parents:
diff changeset
501 JNIEXPORT jbyteArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
502 JVM_GetClassAnnotations(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
503
a61af66fc99e Initial load
duke
parents:
diff changeset
504 /* Annotations support (JDK 1.6) */
a61af66fc99e Initial load
duke
parents:
diff changeset
505
a61af66fc99e Initial load
duke
parents:
diff changeset
506 // field is a handle to a java.lang.reflect.Field object
a61af66fc99e Initial load
duke
parents:
diff changeset
507 JNIEXPORT jbyteArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
508 JVM_GetFieldAnnotations(JNIEnv *env, jobject field);
a61af66fc99e Initial load
duke
parents:
diff changeset
509
a61af66fc99e Initial load
duke
parents:
diff changeset
510 // method is a handle to a java.lang.reflect.Method object
a61af66fc99e Initial load
duke
parents:
diff changeset
511 JNIEXPORT jbyteArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
512 JVM_GetMethodAnnotations(JNIEnv *env, jobject method);
a61af66fc99e Initial load
duke
parents:
diff changeset
513
a61af66fc99e Initial load
duke
parents:
diff changeset
514 // method is a handle to a java.lang.reflect.Method object
a61af66fc99e Initial load
duke
parents:
diff changeset
515 JNIEXPORT jbyteArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
516 JVM_GetMethodDefaultAnnotationValue(JNIEnv *env, jobject method);
a61af66fc99e Initial load
duke
parents:
diff changeset
517
a61af66fc99e Initial load
duke
parents:
diff changeset
518 // method is a handle to a java.lang.reflect.Method object
a61af66fc99e Initial load
duke
parents:
diff changeset
519 JNIEXPORT jbyteArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
520 JVM_GetMethodParameterAnnotations(JNIEnv *env, jobject method);
a61af66fc99e Initial load
duke
parents:
diff changeset
521
a61af66fc99e Initial load
duke
parents:
diff changeset
522
a61af66fc99e Initial load
duke
parents:
diff changeset
523 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
524 * New (JDK 1.4) reflection implementation
a61af66fc99e Initial load
duke
parents:
diff changeset
525 */
a61af66fc99e Initial load
duke
parents:
diff changeset
526
a61af66fc99e Initial load
duke
parents:
diff changeset
527 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
528 JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly);
a61af66fc99e Initial load
duke
parents:
diff changeset
529
a61af66fc99e Initial load
duke
parents:
diff changeset
530 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
531 JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, jboolean publicOnly);
a61af66fc99e Initial load
duke
parents:
diff changeset
532
a61af66fc99e Initial load
duke
parents:
diff changeset
533 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
534 JVM_GetClassDeclaredConstructors(JNIEnv *env, jclass ofClass, jboolean publicOnly);
a61af66fc99e Initial load
duke
parents:
diff changeset
535
a61af66fc99e Initial load
duke
parents:
diff changeset
536 /* Differs from JVM_GetClassModifiers in treatment of inner classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
537 This returns the access flags for the class as specified in the
a61af66fc99e Initial load
duke
parents:
diff changeset
538 class file rather than searching the InnerClasses attribute (if
a61af66fc99e Initial load
duke
parents:
diff changeset
539 present) to find the source-level access flags. Only the values of
a61af66fc99e Initial load
duke
parents:
diff changeset
540 the low 13 bits (i.e., a mask of 0x1FFF) are guaranteed to be
a61af66fc99e Initial load
duke
parents:
diff changeset
541 valid. */
a61af66fc99e Initial load
duke
parents:
diff changeset
542 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
543 JVM_GetClassAccessFlags(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
544
a61af66fc99e Initial load
duke
parents:
diff changeset
545 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
546 * Constant pool access; currently used to implement reflective access to annotations (JDK 1.5)
a61af66fc99e Initial load
duke
parents:
diff changeset
547 */
a61af66fc99e Initial load
duke
parents:
diff changeset
548
a61af66fc99e Initial load
duke
parents:
diff changeset
549 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
550 JVM_GetClassConstantPool(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
551
a61af66fc99e Initial load
duke
parents:
diff changeset
552 JNIEXPORT jint JNICALL JVM_ConstantPoolGetSize
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
553 (JNIEnv *env, jobject obj, jobject unused);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
554
a61af66fc99e Initial load
duke
parents:
diff changeset
555 JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
556 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
557
a61af66fc99e Initial load
duke
parents:
diff changeset
558 JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAtIfLoaded
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
559 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
560
a61af66fc99e Initial load
duke
parents:
diff changeset
561 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
562 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
563
a61af66fc99e Initial load
duke
parents:
diff changeset
564 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAtIfLoaded
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
565 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
566
a61af66fc99e Initial load
duke
parents:
diff changeset
567 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
568 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
569
a61af66fc99e Initial load
duke
parents:
diff changeset
570 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAtIfLoaded
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
571 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
572
a61af66fc99e Initial load
duke
parents:
diff changeset
573 JNIEXPORT jobjectArray JNICALL JVM_ConstantPoolGetMemberRefInfoAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
574 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
575
a61af66fc99e Initial load
duke
parents:
diff changeset
576 JNIEXPORT jint JNICALL JVM_ConstantPoolGetIntAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
577 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
578
a61af66fc99e Initial load
duke
parents:
diff changeset
579 JNIEXPORT jlong JNICALL JVM_ConstantPoolGetLongAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
580 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
581
a61af66fc99e Initial load
duke
parents:
diff changeset
582 JNIEXPORT jfloat JNICALL JVM_ConstantPoolGetFloatAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
583 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
584
a61af66fc99e Initial load
duke
parents:
diff changeset
585 JNIEXPORT jdouble JNICALL JVM_ConstantPoolGetDoubleAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
586 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
587
a61af66fc99e Initial load
duke
parents:
diff changeset
588 JNIEXPORT jstring JNICALL JVM_ConstantPoolGetStringAt
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
589 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
590
a61af66fc99e Initial load
duke
parents:
diff changeset
591 JNIEXPORT jstring JNICALL JVM_ConstantPoolGetUTF8At
6725
da91efe96a93 6964458: Reimplement class meta-data storage to use native memory
coleenp
parents: 6143
diff changeset
592 (JNIEnv *env, jobject obj, jobject unused, jint index);
0
a61af66fc99e Initial load
duke
parents:
diff changeset
593
a61af66fc99e Initial load
duke
parents:
diff changeset
594 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
595 * java.security.*
a61af66fc99e Initial load
duke
parents:
diff changeset
596 */
a61af66fc99e Initial load
duke
parents:
diff changeset
597
a61af66fc99e Initial load
duke
parents:
diff changeset
598 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
599 JVM_DoPrivileged(JNIEnv *env, jclass cls,
a61af66fc99e Initial load
duke
parents:
diff changeset
600 jobject action, jobject context, jboolean wrapException);
a61af66fc99e Initial load
duke
parents:
diff changeset
601
a61af66fc99e Initial load
duke
parents:
diff changeset
602 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
603 JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
604
a61af66fc99e Initial load
duke
parents:
diff changeset
605 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
606 JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
607
a61af66fc99e Initial load
duke
parents:
diff changeset
608 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
609 * Signal support, used to implement the shutdown sequence. Every VM must
a61af66fc99e Initial load
duke
parents:
diff changeset
610 * support JVM_SIGINT and JVM_SIGTERM, raising the former for user interrupts
a61af66fc99e Initial load
duke
parents:
diff changeset
611 * (^C) and the latter for external termination (kill, system shutdown, etc.).
a61af66fc99e Initial load
duke
parents:
diff changeset
612 * Other platform-dependent signal values may also be supported.
a61af66fc99e Initial load
duke
parents:
diff changeset
613 */
a61af66fc99e Initial load
duke
parents:
diff changeset
614
a61af66fc99e Initial load
duke
parents:
diff changeset
615 JNIEXPORT void * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
616 JVM_RegisterSignal(jint sig, void *handler);
a61af66fc99e Initial load
duke
parents:
diff changeset
617
a61af66fc99e Initial load
duke
parents:
diff changeset
618 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
619 JVM_RaiseSignal(jint sig);
a61af66fc99e Initial load
duke
parents:
diff changeset
620
a61af66fc99e Initial load
duke
parents:
diff changeset
621 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
622 JVM_FindSignal(const char *name);
a61af66fc99e Initial load
duke
parents:
diff changeset
623
a61af66fc99e Initial load
duke
parents:
diff changeset
624 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
625 * Retrieve the assertion directives for the specified class.
a61af66fc99e Initial load
duke
parents:
diff changeset
626 */
a61af66fc99e Initial load
duke
parents:
diff changeset
627 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
628 JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls);
a61af66fc99e Initial load
duke
parents:
diff changeset
629
a61af66fc99e Initial load
duke
parents:
diff changeset
630 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
631 * Retrieve the assertion directives from the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
632 */
a61af66fc99e Initial load
duke
parents:
diff changeset
633 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
634 JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused);
a61af66fc99e Initial load
duke
parents:
diff changeset
635
a61af66fc99e Initial load
duke
parents:
diff changeset
636 /*
6143
8b0a4867acf0 7174218: remove AtomicLongCSImpl intrinsics
twisti
parents: 4006
diff changeset
637 * java.util.concurrent.atomic.AtomicLong
0
a61af66fc99e Initial load
duke
parents:
diff changeset
638 */
a61af66fc99e Initial load
duke
parents:
diff changeset
639 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
640 JVM_SupportsCX8(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
641
a61af66fc99e Initial load
duke
parents:
diff changeset
642 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
643 JVM_CX8Field(JNIEnv *env, jobject obj, jfieldID fldID, jlong oldVal, jlong newVal);
a61af66fc99e Initial load
duke
parents:
diff changeset
644
116
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
645 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
646 * com.sun.dtrace.jsdt support
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
647 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
648
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
649 #define JVM_TRACING_DTRACE_VERSION 1
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
650
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
651 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
652 * Structure to pass one probe description to JVM.
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
653 *
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
654 * The VM will overwrite the definition of the referenced method with
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
655 * code that will fire the probe.
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
656 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
657 typedef struct {
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
658 jmethodID method;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
659 jstring function;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
660 jstring name;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
661 void* reserved[4]; // for future use
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
662 } JVM_DTraceProbe;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
663
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
664 /**
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
665 * Encapsulates the stability ratings for a DTrace provider field
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
666 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
667 typedef struct {
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
668 jint nameStability;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
669 jint dataStability;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
670 jint dependencyClass;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
671 } JVM_DTraceInterfaceAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
672
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
673 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
674 * Structure to pass one provider description to JVM
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
675 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
676 typedef struct {
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
677 jstring name;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
678 JVM_DTraceProbe* probes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
679 jint probe_count;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
680 JVM_DTraceInterfaceAttributes providerAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
681 JVM_DTraceInterfaceAttributes moduleAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
682 JVM_DTraceInterfaceAttributes functionAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
683 JVM_DTraceInterfaceAttributes nameAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
684 JVM_DTraceInterfaceAttributes argsAttributes;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
685 void* reserved[4]; // for future use
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
686 } JVM_DTraceProvider;
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
687
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
688 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
689 * Get the version number the JVM was built with
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
690 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
691 JNIEXPORT jint JNICALL
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
692 JVM_DTraceGetVersion(JNIEnv* env);
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
693
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
694 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
695 * Register new probe with given signature, return global handle
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
696 *
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
697 * The version passed in is the version that the library code was
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
698 * built with.
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
699 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
700 JNIEXPORT jlong JNICALL
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
701 JVM_DTraceActivate(JNIEnv* env, jint version, jstring module_name,
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
702 jint providers_count, JVM_DTraceProvider* providers);
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
703
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
704 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
705 * Check JSDT probe
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
706 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
707 JNIEXPORT jboolean JNICALL
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
708 JVM_DTraceIsProbeEnabled(JNIEnv* env, jmethodID method);
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
709
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
710 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
711 * Destroy custom DOF
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
712 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
713 JNIEXPORT void JNICALL
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
714 JVM_DTraceDispose(JNIEnv* env, jlong handle);
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
715
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
716 /*
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
717 * Check to see if DTrace is supported by OS
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
718 */
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
719 JNIEXPORT jboolean JNICALL
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
720 JVM_DTraceIsSupported(JNIEnv* env);
018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes
kamg
parents: 0
diff changeset
721
0
a61af66fc99e Initial load
duke
parents:
diff changeset
722 /*************************************************************************
a61af66fc99e Initial load
duke
parents:
diff changeset
723 PART 2: Support for the Verifier and Class File Format Checker
a61af66fc99e Initial load
duke
parents:
diff changeset
724 ************************************************************************/
a61af66fc99e Initial load
duke
parents:
diff changeset
725 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
726 * Return the class name in UTF format. The result is valid
a61af66fc99e Initial load
duke
parents:
diff changeset
727 * until JVM_ReleaseUTf is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
728 *
a61af66fc99e Initial load
duke
parents:
diff changeset
729 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
730 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
731 */
a61af66fc99e Initial load
duke
parents:
diff changeset
732 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
733 JVM_GetClassNameUTF(JNIEnv *env, jclass cb);
a61af66fc99e Initial load
duke
parents:
diff changeset
734
a61af66fc99e Initial load
duke
parents:
diff changeset
735 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
736 * Returns the constant pool types in the buffer provided by "types."
a61af66fc99e Initial load
duke
parents:
diff changeset
737 */
a61af66fc99e Initial load
duke
parents:
diff changeset
738 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
739 JVM_GetClassCPTypes(JNIEnv *env, jclass cb, unsigned char *types);
a61af66fc99e Initial load
duke
parents:
diff changeset
740
a61af66fc99e Initial load
duke
parents:
diff changeset
741 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
742 * Returns the number of Constant Pool entries.
a61af66fc99e Initial load
duke
parents:
diff changeset
743 */
a61af66fc99e Initial load
duke
parents:
diff changeset
744 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
745 JVM_GetClassCPEntriesCount(JNIEnv *env, jclass cb);
a61af66fc99e Initial load
duke
parents:
diff changeset
746
a61af66fc99e Initial load
duke
parents:
diff changeset
747 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
748 * Returns the number of *declared* fields or methods.
a61af66fc99e Initial load
duke
parents:
diff changeset
749 */
a61af66fc99e Initial load
duke
parents:
diff changeset
750 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
751 JVM_GetClassFieldsCount(JNIEnv *env, jclass cb);
a61af66fc99e Initial load
duke
parents:
diff changeset
752
a61af66fc99e Initial load
duke
parents:
diff changeset
753 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
754 JVM_GetClassMethodsCount(JNIEnv *env, jclass cb);
a61af66fc99e Initial load
duke
parents:
diff changeset
755
a61af66fc99e Initial load
duke
parents:
diff changeset
756 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
757 * Returns the CP indexes of exceptions raised by a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
758 * Places the result in the given buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
759 *
a61af66fc99e Initial load
duke
parents:
diff changeset
760 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
761 */
a61af66fc99e Initial load
duke
parents:
diff changeset
762 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
763 JVM_GetMethodIxExceptionIndexes(JNIEnv *env, jclass cb, jint method_index,
a61af66fc99e Initial load
duke
parents:
diff changeset
764 unsigned short *exceptions);
a61af66fc99e Initial load
duke
parents:
diff changeset
765 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
766 * Returns the number of exceptions raised by a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
767 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
768 */
a61af66fc99e Initial load
duke
parents:
diff changeset
769 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
770 JVM_GetMethodIxExceptionsCount(JNIEnv *env, jclass cb, jint method_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
771
a61af66fc99e Initial load
duke
parents:
diff changeset
772 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
773 * Returns the byte code sequence of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
774 * Places the result in the given buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
775 *
a61af66fc99e Initial load
duke
parents:
diff changeset
776 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
777 */
a61af66fc99e Initial load
duke
parents:
diff changeset
778 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
779 JVM_GetMethodIxByteCode(JNIEnv *env, jclass cb, jint method_index,
a61af66fc99e Initial load
duke
parents:
diff changeset
780 unsigned char *code);
a61af66fc99e Initial load
duke
parents:
diff changeset
781
a61af66fc99e Initial load
duke
parents:
diff changeset
782 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
783 * Returns the length of the byte code sequence of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
784 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
785 */
a61af66fc99e Initial load
duke
parents:
diff changeset
786 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
787 JVM_GetMethodIxByteCodeLength(JNIEnv *env, jclass cb, jint method_index);
a61af66fc99e Initial load
duke
parents:
diff changeset
788
a61af66fc99e Initial load
duke
parents:
diff changeset
789 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
790 * A structure used to a capture exception table entry in a Java method.
a61af66fc99e Initial load
duke
parents:
diff changeset
791 */
a61af66fc99e Initial load
duke
parents:
diff changeset
792 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
793 jint start_pc;
a61af66fc99e Initial load
duke
parents:
diff changeset
794 jint end_pc;
a61af66fc99e Initial load
duke
parents:
diff changeset
795 jint handler_pc;
a61af66fc99e Initial load
duke
parents:
diff changeset
796 jint catchType;
a61af66fc99e Initial load
duke
parents:
diff changeset
797 } JVM_ExceptionTableEntryType;
a61af66fc99e Initial load
duke
parents:
diff changeset
798
a61af66fc99e Initial load
duke
parents:
diff changeset
799 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
800 * Returns the exception table entry at entry_index of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
801 * Places the result in the given buffer.
a61af66fc99e Initial load
duke
parents:
diff changeset
802 *
a61af66fc99e Initial load
duke
parents:
diff changeset
803 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
804 */
a61af66fc99e Initial load
duke
parents:
diff changeset
805 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
806 JVM_GetMethodIxExceptionTableEntry(JNIEnv *env, jclass cb, jint method_index,
a61af66fc99e Initial load
duke
parents:
diff changeset
807 jint entry_index,
a61af66fc99e Initial load
duke
parents:
diff changeset
808 JVM_ExceptionTableEntryType *entry);
a61af66fc99e Initial load
duke
parents:
diff changeset
809
a61af66fc99e Initial load
duke
parents:
diff changeset
810 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
811 * Returns the length of the exception table of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
812 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
813 */
a61af66fc99e Initial load
duke
parents:
diff changeset
814 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
815 JVM_GetMethodIxExceptionTableLength(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
816
a61af66fc99e Initial load
duke
parents:
diff changeset
817 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
818 * Returns the modifiers of a given field.
a61af66fc99e Initial load
duke
parents:
diff changeset
819 * The field is identified by field_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
820 */
a61af66fc99e Initial load
duke
parents:
diff changeset
821 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
822 JVM_GetFieldIxModifiers(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
823
a61af66fc99e Initial load
duke
parents:
diff changeset
824 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
825 * Returns the modifiers of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
826 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
827 */
a61af66fc99e Initial load
duke
parents:
diff changeset
828 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
829 JVM_GetMethodIxModifiers(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
830
a61af66fc99e Initial load
duke
parents:
diff changeset
831 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
832 * Returns the number of local variables of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
833 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
834 */
a61af66fc99e Initial load
duke
parents:
diff changeset
835 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
836 JVM_GetMethodIxLocalsCount(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
837
a61af66fc99e Initial load
duke
parents:
diff changeset
838 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
839 * Returns the number of arguments (including this pointer) of a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
840 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
841 */
a61af66fc99e Initial load
duke
parents:
diff changeset
842 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
843 JVM_GetMethodIxArgsSize(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
844
a61af66fc99e Initial load
duke
parents:
diff changeset
845 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
846 * Returns the maximum amount of stack (in words) used by a given method.
a61af66fc99e Initial load
duke
parents:
diff changeset
847 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
848 */
a61af66fc99e Initial load
duke
parents:
diff changeset
849 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
850 JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
851
a61af66fc99e Initial load
duke
parents:
diff changeset
852 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
853 * Is a given method a constructor.
a61af66fc99e Initial load
duke
parents:
diff changeset
854 * The method is identified by method_index.
a61af66fc99e Initial load
duke
parents:
diff changeset
855 */
a61af66fc99e Initial load
duke
parents:
diff changeset
856 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
857 JVM_IsConstructorIx(JNIEnv *env, jclass cb, int index);
a61af66fc99e Initial load
duke
parents:
diff changeset
858
a61af66fc99e Initial load
duke
parents:
diff changeset
859 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
860 * Returns the name of a given method in UTF format.
a61af66fc99e Initial load
duke
parents:
diff changeset
861 * The result remains valid until JVM_ReleaseUTF is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
862 *
a61af66fc99e Initial load
duke
parents:
diff changeset
863 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
864 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
865 */
a61af66fc99e Initial load
duke
parents:
diff changeset
866 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
867 JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
868
a61af66fc99e Initial load
duke
parents:
diff changeset
869 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
870 * Returns the signature of a given method in UTF format.
a61af66fc99e Initial load
duke
parents:
diff changeset
871 * The result remains valid until JVM_ReleaseUTF is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
872 *
a61af66fc99e Initial load
duke
parents:
diff changeset
873 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
874 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
875 */
a61af66fc99e Initial load
duke
parents:
diff changeset
876 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
877 JVM_GetMethodIxSignatureUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
878
a61af66fc99e Initial load
duke
parents:
diff changeset
879 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
880 * Returns the name of the field refered to at a given constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
881 * index.
a61af66fc99e Initial load
duke
parents:
diff changeset
882 *
a61af66fc99e Initial load
duke
parents:
diff changeset
883 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
884 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
885 *
a61af66fc99e Initial load
duke
parents:
diff changeset
886 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
887 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
888 */
a61af66fc99e Initial load
duke
parents:
diff changeset
889 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
890 JVM_GetCPFieldNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
891
a61af66fc99e Initial load
duke
parents:
diff changeset
892 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
893 * Returns the name of the method refered to at a given constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
894 * index.
a61af66fc99e Initial load
duke
parents:
diff changeset
895 *
a61af66fc99e Initial load
duke
parents:
diff changeset
896 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
897 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
898 *
a61af66fc99e Initial load
duke
parents:
diff changeset
899 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
900 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
901 */
a61af66fc99e Initial load
duke
parents:
diff changeset
902 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
903 JVM_GetCPMethodNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
904
a61af66fc99e Initial load
duke
parents:
diff changeset
905 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
906 * Returns the signature of the method refered to at a given constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
907 * index.
a61af66fc99e Initial load
duke
parents:
diff changeset
908 *
a61af66fc99e Initial load
duke
parents:
diff changeset
909 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
910 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
911 *
a61af66fc99e Initial load
duke
parents:
diff changeset
912 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
913 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
914 */
a61af66fc99e Initial load
duke
parents:
diff changeset
915 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
916 JVM_GetCPMethodSignatureUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
917
a61af66fc99e Initial load
duke
parents:
diff changeset
918 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
919 * Returns the signature of the field refered to at a given constant pool
a61af66fc99e Initial load
duke
parents:
diff changeset
920 * index.
a61af66fc99e Initial load
duke
parents:
diff changeset
921 *
a61af66fc99e Initial load
duke
parents:
diff changeset
922 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
923 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
924 *
a61af66fc99e Initial load
duke
parents:
diff changeset
925 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
926 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
927 */
a61af66fc99e Initial load
duke
parents:
diff changeset
928 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
929 JVM_GetCPFieldSignatureUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
930
a61af66fc99e Initial load
duke
parents:
diff changeset
931 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
932 * Returns the class name refered to at a given constant pool index.
a61af66fc99e Initial load
duke
parents:
diff changeset
933 *
a61af66fc99e Initial load
duke
parents:
diff changeset
934 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
935 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
936 *
a61af66fc99e Initial load
duke
parents:
diff changeset
937 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
938 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
939 */
a61af66fc99e Initial load
duke
parents:
diff changeset
940 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
941 JVM_GetCPClassNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
942
a61af66fc99e Initial load
duke
parents:
diff changeset
943 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
944 * Returns the class name refered to at a given constant pool index.
a61af66fc99e Initial load
duke
parents:
diff changeset
945 *
a61af66fc99e Initial load
duke
parents:
diff changeset
946 * The constant pool entry must refer to a CONSTANT_Fieldref.
a61af66fc99e Initial load
duke
parents:
diff changeset
947 *
a61af66fc99e Initial load
duke
parents:
diff changeset
948 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
949 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
950 *
a61af66fc99e Initial load
duke
parents:
diff changeset
951 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
952 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
953 */
a61af66fc99e Initial load
duke
parents:
diff changeset
954 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
955 JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
956
a61af66fc99e Initial load
duke
parents:
diff changeset
957 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
958 * Returns the class name refered to at a given constant pool index.
a61af66fc99e Initial load
duke
parents:
diff changeset
959 *
a61af66fc99e Initial load
duke
parents:
diff changeset
960 * The constant pool entry must refer to CONSTANT_Methodref or
a61af66fc99e Initial load
duke
parents:
diff changeset
961 * CONSTANT_InterfaceMethodref.
a61af66fc99e Initial load
duke
parents:
diff changeset
962 *
a61af66fc99e Initial load
duke
parents:
diff changeset
963 * The result is in UTF format and remains valid until JVM_ReleaseUTF
a61af66fc99e Initial load
duke
parents:
diff changeset
964 * is called.
a61af66fc99e Initial load
duke
parents:
diff changeset
965 *
a61af66fc99e Initial load
duke
parents:
diff changeset
966 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
967 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
968 */
a61af66fc99e Initial load
duke
parents:
diff changeset
969 JNIEXPORT const char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
970 JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cb, jint index);
a61af66fc99e Initial load
duke
parents:
diff changeset
971
a61af66fc99e Initial load
duke
parents:
diff changeset
972 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
973 * Returns the modifiers of a field in calledClass. The field is
a61af66fc99e Initial load
duke
parents:
diff changeset
974 * referred to in class cb at constant pool entry index.
a61af66fc99e Initial load
duke
parents:
diff changeset
975 *
a61af66fc99e Initial load
duke
parents:
diff changeset
976 * The caller must treat the string as a constant and not modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
977 * in any way.
a61af66fc99e Initial load
duke
parents:
diff changeset
978 *
a61af66fc99e Initial load
duke
parents:
diff changeset
979 * Returns -1 if the field does not exist in calledClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
980 */
a61af66fc99e Initial load
duke
parents:
diff changeset
981 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
982 JVM_GetCPFieldModifiers(JNIEnv *env, jclass cb, int index, jclass calledClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
983
a61af66fc99e Initial load
duke
parents:
diff changeset
984 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
985 * Returns the modifiers of a method in calledClass. The method is
a61af66fc99e Initial load
duke
parents:
diff changeset
986 * referred to in class cb at constant pool entry index.
a61af66fc99e Initial load
duke
parents:
diff changeset
987 *
a61af66fc99e Initial load
duke
parents:
diff changeset
988 * Returns -1 if the method does not exist in calledClass.
a61af66fc99e Initial load
duke
parents:
diff changeset
989 */
a61af66fc99e Initial load
duke
parents:
diff changeset
990 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
991 JVM_GetCPMethodModifiers(JNIEnv *env, jclass cb, int index, jclass calledClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
992
a61af66fc99e Initial load
duke
parents:
diff changeset
993 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
994 * Releases the UTF string obtained from the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
995 */
a61af66fc99e Initial load
duke
parents:
diff changeset
996 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
997 JVM_ReleaseUTF(const char *utf);
a61af66fc99e Initial load
duke
parents:
diff changeset
998
a61af66fc99e Initial load
duke
parents:
diff changeset
999 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1000 * Compare if two classes are in the same package.
a61af66fc99e Initial load
duke
parents:
diff changeset
1001 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1002 JNIEXPORT jboolean JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1003 JVM_IsSameClassPackage(JNIEnv *env, jclass class1, jclass class2);
a61af66fc99e Initial load
duke
parents:
diff changeset
1004
a61af66fc99e Initial load
duke
parents:
diff changeset
1005 /* Constants in class files */
a61af66fc99e Initial load
duke
parents:
diff changeset
1006
a61af66fc99e Initial load
duke
parents:
diff changeset
1007 #define JVM_ACC_PUBLIC 0x0001 /* visible to everyone */
a61af66fc99e Initial load
duke
parents:
diff changeset
1008 #define JVM_ACC_PRIVATE 0x0002 /* visible only to the defining class */
a61af66fc99e Initial load
duke
parents:
diff changeset
1009 #define JVM_ACC_PROTECTED 0x0004 /* visible to subclasses */
a61af66fc99e Initial load
duke
parents:
diff changeset
1010 #define JVM_ACC_STATIC 0x0008 /* instance variable is static */
a61af66fc99e Initial load
duke
parents:
diff changeset
1011 #define JVM_ACC_FINAL 0x0010 /* no further subclassing, overriding */
a61af66fc99e Initial load
duke
parents:
diff changeset
1012 #define JVM_ACC_SYNCHRONIZED 0x0020 /* wrap method call in monitor lock */
a61af66fc99e Initial load
duke
parents:
diff changeset
1013 #define JVM_ACC_SUPER 0x0020 /* funky handling of invokespecial */
a61af66fc99e Initial load
duke
parents:
diff changeset
1014 #define JVM_ACC_VOLATILE 0x0040 /* can not cache in registers */
a61af66fc99e Initial load
duke
parents:
diff changeset
1015 #define JVM_ACC_BRIDGE 0x0040 /* bridge method generated by compiler */
a61af66fc99e Initial load
duke
parents:
diff changeset
1016 #define JVM_ACC_TRANSIENT 0x0080 /* not persistent */
a61af66fc99e Initial load
duke
parents:
diff changeset
1017 #define JVM_ACC_VARARGS 0x0080 /* method declared with variable number of args */
a61af66fc99e Initial load
duke
parents:
diff changeset
1018 #define JVM_ACC_NATIVE 0x0100 /* implemented in C */
a61af66fc99e Initial load
duke
parents:
diff changeset
1019 #define JVM_ACC_INTERFACE 0x0200 /* class is an interface */
a61af66fc99e Initial load
duke
parents:
diff changeset
1020 #define JVM_ACC_ABSTRACT 0x0400 /* no definition provided */
a61af66fc99e Initial load
duke
parents:
diff changeset
1021 #define JVM_ACC_STRICT 0x0800 /* strict floating point */
a61af66fc99e Initial load
duke
parents:
diff changeset
1022 #define JVM_ACC_SYNTHETIC 0x1000 /* compiler-generated class, method or field */
a61af66fc99e Initial load
duke
parents:
diff changeset
1023 #define JVM_ACC_ANNOTATION 0x2000 /* annotation type */
a61af66fc99e Initial load
duke
parents:
diff changeset
1024 #define JVM_ACC_ENUM 0x4000 /* field is declared as element of enum */
a61af66fc99e Initial load
duke
parents:
diff changeset
1025
a61af66fc99e Initial load
duke
parents:
diff changeset
1026 #define JVM_ACC_PUBLIC_BIT 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1027 #define JVM_ACC_PRIVATE_BIT 1
a61af66fc99e Initial load
duke
parents:
diff changeset
1028 #define JVM_ACC_PROTECTED_BIT 2
a61af66fc99e Initial load
duke
parents:
diff changeset
1029 #define JVM_ACC_STATIC_BIT 3
a61af66fc99e Initial load
duke
parents:
diff changeset
1030 #define JVM_ACC_FINAL_BIT 4
a61af66fc99e Initial load
duke
parents:
diff changeset
1031 #define JVM_ACC_SYNCHRONIZED_BIT 5
a61af66fc99e Initial load
duke
parents:
diff changeset
1032 #define JVM_ACC_SUPER_BIT 5
a61af66fc99e Initial load
duke
parents:
diff changeset
1033 #define JVM_ACC_VOLATILE_BIT 6
a61af66fc99e Initial load
duke
parents:
diff changeset
1034 #define JVM_ACC_BRIDGE_BIT 6
a61af66fc99e Initial load
duke
parents:
diff changeset
1035 #define JVM_ACC_TRANSIENT_BIT 7
a61af66fc99e Initial load
duke
parents:
diff changeset
1036 #define JVM_ACC_VARARGS_BIT 7
a61af66fc99e Initial load
duke
parents:
diff changeset
1037 #define JVM_ACC_NATIVE_BIT 8
a61af66fc99e Initial load
duke
parents:
diff changeset
1038 #define JVM_ACC_INTERFACE_BIT 9
a61af66fc99e Initial load
duke
parents:
diff changeset
1039 #define JVM_ACC_ABSTRACT_BIT 10
a61af66fc99e Initial load
duke
parents:
diff changeset
1040 #define JVM_ACC_STRICT_BIT 11
a61af66fc99e Initial load
duke
parents:
diff changeset
1041 #define JVM_ACC_SYNTHETIC_BIT 12
a61af66fc99e Initial load
duke
parents:
diff changeset
1042 #define JVM_ACC_ANNOTATION_BIT 13
a61af66fc99e Initial load
duke
parents:
diff changeset
1043 #define JVM_ACC_ENUM_BIT 14
a61af66fc99e Initial load
duke
parents:
diff changeset
1044
a61af66fc99e Initial load
duke
parents:
diff changeset
1045 // NOTE: replicated in SA in vm/agent/sun/jvm/hotspot/utilities/ConstantTag.java
a61af66fc99e Initial load
duke
parents:
diff changeset
1046 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
1047 JVM_CONSTANT_Utf8 = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
1048 JVM_CONSTANT_Unicode, /* unused */
a61af66fc99e Initial load
duke
parents:
diff changeset
1049 JVM_CONSTANT_Integer,
a61af66fc99e Initial load
duke
parents:
diff changeset
1050 JVM_CONSTANT_Float,
a61af66fc99e Initial load
duke
parents:
diff changeset
1051 JVM_CONSTANT_Long,
a61af66fc99e Initial load
duke
parents:
diff changeset
1052 JVM_CONSTANT_Double,
a61af66fc99e Initial load
duke
parents:
diff changeset
1053 JVM_CONSTANT_Class,
a61af66fc99e Initial load
duke
parents:
diff changeset
1054 JVM_CONSTANT_String,
a61af66fc99e Initial load
duke
parents:
diff changeset
1055 JVM_CONSTANT_Fieldref,
a61af66fc99e Initial load
duke
parents:
diff changeset
1056 JVM_CONSTANT_Methodref,
a61af66fc99e Initial load
duke
parents:
diff changeset
1057 JVM_CONSTANT_InterfaceMethodref,
1602
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1058 JVM_CONSTANT_NameAndType,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1059 JVM_CONSTANT_MethodHandle = 15, // JSR 292
1660
083fde3b838e 6964498: JSR 292 invokedynamic sites need local bootstrap methods
jrose
parents: 1602
diff changeset
1060 JVM_CONSTANT_MethodType = 16, // JSR 292
2460
ed69575596ac 6981791: remove experimental code for JSR 292
jrose
parents: 2191
diff changeset
1061 //JVM_CONSTANT_(unused) = 17, // JSR 292 early drafts only
2011
dad31fc330cd 7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents: 1972
diff changeset
1062 JVM_CONSTANT_InvokeDynamic = 18, // JSR 292
dad31fc330cd 7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents: 1972
diff changeset
1063 JVM_CONSTANT_ExternalMax = 18 // Last tag found in classfiles
1602
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1064 };
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1065
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1066 /* JVM_CONSTANT_MethodHandle subtypes */
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1067 enum {
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1068 JVM_REF_getField = 1,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1069 JVM_REF_getStatic = 2,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1070 JVM_REF_putField = 3,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1071 JVM_REF_putStatic = 4,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1072 JVM_REF_invokeVirtual = 5,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1073 JVM_REF_invokeStatic = 6,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1074 JVM_REF_invokeSpecial = 7,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1075 JVM_REF_newInvokeSpecial = 8,
136b78722a08 6939203: JSR 292 needs method handle constants
jrose
parents: 1552
diff changeset
1076 JVM_REF_invokeInterface = 9
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1077 };
a61af66fc99e Initial load
duke
parents:
diff changeset
1078
a61af66fc99e Initial load
duke
parents:
diff changeset
1079 /* Used in the newarray instruction. */
a61af66fc99e Initial load
duke
parents:
diff changeset
1080
a61af66fc99e Initial load
duke
parents:
diff changeset
1081 #define JVM_T_BOOLEAN 4
a61af66fc99e Initial load
duke
parents:
diff changeset
1082 #define JVM_T_CHAR 5
a61af66fc99e Initial load
duke
parents:
diff changeset
1083 #define JVM_T_FLOAT 6
a61af66fc99e Initial load
duke
parents:
diff changeset
1084 #define JVM_T_DOUBLE 7
a61af66fc99e Initial load
duke
parents:
diff changeset
1085 #define JVM_T_BYTE 8
a61af66fc99e Initial load
duke
parents:
diff changeset
1086 #define JVM_T_SHORT 9
a61af66fc99e Initial load
duke
parents:
diff changeset
1087 #define JVM_T_INT 10
a61af66fc99e Initial load
duke
parents:
diff changeset
1088 #define JVM_T_LONG 11
a61af66fc99e Initial load
duke
parents:
diff changeset
1089
a61af66fc99e Initial load
duke
parents:
diff changeset
1090 /* JVM method signatures */
a61af66fc99e Initial load
duke
parents:
diff changeset
1091
a61af66fc99e Initial load
duke
parents:
diff changeset
1092 #define JVM_SIGNATURE_ARRAY '['
a61af66fc99e Initial load
duke
parents:
diff changeset
1093 #define JVM_SIGNATURE_BYTE 'B'
a61af66fc99e Initial load
duke
parents:
diff changeset
1094 #define JVM_SIGNATURE_CHAR 'C'
a61af66fc99e Initial load
duke
parents:
diff changeset
1095 #define JVM_SIGNATURE_CLASS 'L'
a61af66fc99e Initial load
duke
parents:
diff changeset
1096 #define JVM_SIGNATURE_ENDCLASS ';'
a61af66fc99e Initial load
duke
parents:
diff changeset
1097 #define JVM_SIGNATURE_ENUM 'E'
a61af66fc99e Initial load
duke
parents:
diff changeset
1098 #define JVM_SIGNATURE_FLOAT 'F'
a61af66fc99e Initial load
duke
parents:
diff changeset
1099 #define JVM_SIGNATURE_DOUBLE 'D'
a61af66fc99e Initial load
duke
parents:
diff changeset
1100 #define JVM_SIGNATURE_FUNC '('
a61af66fc99e Initial load
duke
parents:
diff changeset
1101 #define JVM_SIGNATURE_ENDFUNC ')'
a61af66fc99e Initial load
duke
parents:
diff changeset
1102 #define JVM_SIGNATURE_INT 'I'
a61af66fc99e Initial load
duke
parents:
diff changeset
1103 #define JVM_SIGNATURE_LONG 'J'
a61af66fc99e Initial load
duke
parents:
diff changeset
1104 #define JVM_SIGNATURE_SHORT 'S'
a61af66fc99e Initial load
duke
parents:
diff changeset
1105 #define JVM_SIGNATURE_VOID 'V'
a61af66fc99e Initial load
duke
parents:
diff changeset
1106 #define JVM_SIGNATURE_BOOLEAN 'Z'
a61af66fc99e Initial load
duke
parents:
diff changeset
1107
a61af66fc99e Initial load
duke
parents:
diff changeset
1108 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1109 * A function defined by the byte-code verifier and called by the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1110 * This is not a function implemented in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1111 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1112 * Returns JNI_FALSE if verification fails. A detailed error message
a61af66fc99e Initial load
duke
parents:
diff changeset
1113 * will be places in msg_buf, whose length is specified by buf_len.
a61af66fc99e Initial load
duke
parents:
diff changeset
1114 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1115 typedef jboolean (*verifier_fn_t)(JNIEnv *env,
a61af66fc99e Initial load
duke
parents:
diff changeset
1116 jclass cb,
a61af66fc99e Initial load
duke
parents:
diff changeset
1117 char * msg_buf,
a61af66fc99e Initial load
duke
parents:
diff changeset
1118 jint buf_len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1119
a61af66fc99e Initial load
duke
parents:
diff changeset
1120
a61af66fc99e Initial load
duke
parents:
diff changeset
1121 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1122 * Support for a VM-independent class format checker.
a61af66fc99e Initial load
duke
parents:
diff changeset
1123 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1124 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
1125 unsigned long code; /* byte code */
a61af66fc99e Initial load
duke
parents:
diff changeset
1126 unsigned long excs; /* exceptions */
a61af66fc99e Initial load
duke
parents:
diff changeset
1127 unsigned long etab; /* catch table */
a61af66fc99e Initial load
duke
parents:
diff changeset
1128 unsigned long lnum; /* line number */
a61af66fc99e Initial load
duke
parents:
diff changeset
1129 unsigned long lvar; /* local vars */
a61af66fc99e Initial load
duke
parents:
diff changeset
1130 } method_size_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
1131
a61af66fc99e Initial load
duke
parents:
diff changeset
1132 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
1133 unsigned int constants; /* constant pool */
a61af66fc99e Initial load
duke
parents:
diff changeset
1134 unsigned int fields;
a61af66fc99e Initial load
duke
parents:
diff changeset
1135 unsigned int methods;
a61af66fc99e Initial load
duke
parents:
diff changeset
1136 unsigned int interfaces;
a61af66fc99e Initial load
duke
parents:
diff changeset
1137 unsigned int fields2; /* number of static 2-word fields */
a61af66fc99e Initial load
duke
parents:
diff changeset
1138 unsigned int innerclasses; /* # of records in InnerClasses attr */
a61af66fc99e Initial load
duke
parents:
diff changeset
1139
a61af66fc99e Initial load
duke
parents:
diff changeset
1140 method_size_info clinit; /* memory used in clinit */
a61af66fc99e Initial load
duke
parents:
diff changeset
1141 method_size_info main; /* used everywhere else */
a61af66fc99e Initial load
duke
parents:
diff changeset
1142 } class_size_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
1143
a61af66fc99e Initial load
duke
parents:
diff changeset
1144 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1145 * Functions defined in libjava.so to perform string conversions.
a61af66fc99e Initial load
duke
parents:
diff changeset
1146 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1147 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1148
a61af66fc99e Initial load
duke
parents:
diff changeset
1149 typedef jstring (*to_java_string_fn_t)(JNIEnv *env, char *str);
a61af66fc99e Initial load
duke
parents:
diff changeset
1150
a61af66fc99e Initial load
duke
parents:
diff changeset
1151 typedef char *(*to_c_string_fn_t)(JNIEnv *env, jstring s, jboolean *b);
a61af66fc99e Initial load
duke
parents:
diff changeset
1152
a61af66fc99e Initial load
duke
parents:
diff changeset
1153 /* This is the function defined in libjava.so that performs class
a61af66fc99e Initial load
duke
parents:
diff changeset
1154 * format checks. This functions fills in size information about
a61af66fc99e Initial load
duke
parents:
diff changeset
1155 * the class file and returns:
a61af66fc99e Initial load
duke
parents:
diff changeset
1156 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1157 * 0: good
a61af66fc99e Initial load
duke
parents:
diff changeset
1158 * -1: out of memory
a61af66fc99e Initial load
duke
parents:
diff changeset
1159 * -2: bad format
a61af66fc99e Initial load
duke
parents:
diff changeset
1160 * -3: unsupported version
a61af66fc99e Initial load
duke
parents:
diff changeset
1161 * -4: bad class name
a61af66fc99e Initial load
duke
parents:
diff changeset
1162 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1163
a61af66fc99e Initial load
duke
parents:
diff changeset
1164 typedef jint (*check_format_fn_t)(char *class_name,
a61af66fc99e Initial load
duke
parents:
diff changeset
1165 unsigned char *data,
a61af66fc99e Initial load
duke
parents:
diff changeset
1166 unsigned int data_size,
a61af66fc99e Initial load
duke
parents:
diff changeset
1167 class_size_info *class_size,
a61af66fc99e Initial load
duke
parents:
diff changeset
1168 char *message_buffer,
a61af66fc99e Initial load
duke
parents:
diff changeset
1169 jint buffer_length,
a61af66fc99e Initial load
duke
parents:
diff changeset
1170 jboolean measure_only,
a61af66fc99e Initial load
duke
parents:
diff changeset
1171 jboolean check_relaxed);
a61af66fc99e Initial load
duke
parents:
diff changeset
1172
a61af66fc99e Initial load
duke
parents:
diff changeset
1173 #define JVM_RECOGNIZED_CLASS_MODIFIERS (JVM_ACC_PUBLIC | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1174 JVM_ACC_FINAL | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1175 JVM_ACC_SUPER | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1176 JVM_ACC_INTERFACE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1177 JVM_ACC_ABSTRACT | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1178 JVM_ACC_ANNOTATION | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1179 JVM_ACC_ENUM | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1180 JVM_ACC_SYNTHETIC)
a61af66fc99e Initial load
duke
parents:
diff changeset
1181
a61af66fc99e Initial load
duke
parents:
diff changeset
1182 #define JVM_RECOGNIZED_FIELD_MODIFIERS (JVM_ACC_PUBLIC | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1183 JVM_ACC_PRIVATE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1184 JVM_ACC_PROTECTED | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1185 JVM_ACC_STATIC | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1186 JVM_ACC_FINAL | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1187 JVM_ACC_VOLATILE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1188 JVM_ACC_TRANSIENT | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1189 JVM_ACC_ENUM | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1190 JVM_ACC_SYNTHETIC)
a61af66fc99e Initial load
duke
parents:
diff changeset
1191
a61af66fc99e Initial load
duke
parents:
diff changeset
1192 #define JVM_RECOGNIZED_METHOD_MODIFIERS (JVM_ACC_PUBLIC | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1193 JVM_ACC_PRIVATE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1194 JVM_ACC_PROTECTED | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1195 JVM_ACC_STATIC | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1196 JVM_ACC_FINAL | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1197 JVM_ACC_SYNCHRONIZED | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1198 JVM_ACC_BRIDGE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1199 JVM_ACC_VARARGS | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1200 JVM_ACC_NATIVE | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1201 JVM_ACC_ABSTRACT | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1202 JVM_ACC_STRICT | \
a61af66fc99e Initial load
duke
parents:
diff changeset
1203 JVM_ACC_SYNTHETIC)
a61af66fc99e Initial load
duke
parents:
diff changeset
1204
a61af66fc99e Initial load
duke
parents:
diff changeset
1205 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1206 * This is the function defined in libjava.so to perform path
a61af66fc99e Initial load
duke
parents:
diff changeset
1207 * canonicalization. VM call this function before opening jar files
a61af66fc99e Initial load
duke
parents:
diff changeset
1208 * to load system classes.
a61af66fc99e Initial load
duke
parents:
diff changeset
1209 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1210 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1211
a61af66fc99e Initial load
duke
parents:
diff changeset
1212 typedef int (*canonicalize_fn_t)(JNIEnv *env, char *orig, char *out, int len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1213
a61af66fc99e Initial load
duke
parents:
diff changeset
1214 /*************************************************************************
a61af66fc99e Initial load
duke
parents:
diff changeset
1215 PART 3: I/O and Network Support
a61af66fc99e Initial load
duke
parents:
diff changeset
1216 ************************************************************************/
a61af66fc99e Initial load
duke
parents:
diff changeset
1217
a61af66fc99e Initial load
duke
parents:
diff changeset
1218 /* Note that the JVM IO functions are expected to return JVM_IO_ERR
a61af66fc99e Initial load
duke
parents:
diff changeset
1219 * when there is any kind of error. The caller can then use the
a61af66fc99e Initial load
duke
parents:
diff changeset
1220 * platform specific support (e.g., errno) to get the detailed
a61af66fc99e Initial load
duke
parents:
diff changeset
1221 * error info. The JVM_GetLastErrorString procedure may also be used
a61af66fc99e Initial load
duke
parents:
diff changeset
1222 * to obtain a descriptive error string.
a61af66fc99e Initial load
duke
parents:
diff changeset
1223 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1224 #define JVM_IO_ERR (-1)
a61af66fc99e Initial load
duke
parents:
diff changeset
1225
a61af66fc99e Initial load
duke
parents:
diff changeset
1226 /* For interruptible IO. Returning JVM_IO_INTR indicates that an IO
a61af66fc99e Initial load
duke
parents:
diff changeset
1227 * operation has been disrupted by Thread.interrupt. There are a
a61af66fc99e Initial load
duke
parents:
diff changeset
1228 * number of technical difficulties related to interruptible IO that
a61af66fc99e Initial load
duke
parents:
diff changeset
1229 * need to be solved. For example, most existing programs do not handle
a61af66fc99e Initial load
duke
parents:
diff changeset
1230 * InterruptedIOExceptions specially, they simply treat those as any
a61af66fc99e Initial load
duke
parents:
diff changeset
1231 * IOExceptions, which typically indicate fatal errors.
a61af66fc99e Initial load
duke
parents:
diff changeset
1232 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1233 * There are also two modes of operation for interruptible IO. In the
a61af66fc99e Initial load
duke
parents:
diff changeset
1234 * resumption mode, an interrupted IO operation is guaranteed not to
a61af66fc99e Initial load
duke
parents:
diff changeset
1235 * have any side-effects, and can be restarted. In the termination mode,
a61af66fc99e Initial load
duke
parents:
diff changeset
1236 * an interrupted IO operation corrupts the underlying IO stream, so
a61af66fc99e Initial load
duke
parents:
diff changeset
1237 * that the only reasonable operation on an interrupted stream is to
a61af66fc99e Initial load
duke
parents:
diff changeset
1238 * close that stream. The resumption mode seems to be impossible to
a61af66fc99e Initial load
duke
parents:
diff changeset
1239 * implement on Win32 and Solaris. Implementing the termination mode is
a61af66fc99e Initial load
duke
parents:
diff changeset
1240 * easier, but it's not clear that's the right semantics.
a61af66fc99e Initial load
duke
parents:
diff changeset
1241 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1242 * Interruptible IO is not supported on Win32.It can be enabled/disabled
a61af66fc99e Initial load
duke
parents:
diff changeset
1243 * using a compile-time flag on Solaris. Third-party JVM ports do not
a61af66fc99e Initial load
duke
parents:
diff changeset
1244 * need to implement interruptible IO.
a61af66fc99e Initial load
duke
parents:
diff changeset
1245 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1246 #define JVM_IO_INTR (-2)
a61af66fc99e Initial load
duke
parents:
diff changeset
1247
a61af66fc99e Initial load
duke
parents:
diff changeset
1248 /* Write a string into the given buffer, in the platform's local encoding,
a61af66fc99e Initial load
duke
parents:
diff changeset
1249 * that describes the most recent system-level error to occur in this thread.
a61af66fc99e Initial load
duke
parents:
diff changeset
1250 * Return the length of the string or zero if no error occurred.
a61af66fc99e Initial load
duke
parents:
diff changeset
1251 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1252 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1253 JVM_GetLastErrorString(char *buf, int len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1254
a61af66fc99e Initial load
duke
parents:
diff changeset
1255 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1256 * Convert a pathname into native format. This function does syntactic
a61af66fc99e Initial load
duke
parents:
diff changeset
1257 * cleanup, such as removing redundant separator characters. It modifies
a61af66fc99e Initial load
duke
parents:
diff changeset
1258 * the given pathname string in place.
a61af66fc99e Initial load
duke
parents:
diff changeset
1259 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1260 JNIEXPORT char * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1261 JVM_NativePath(char *);
a61af66fc99e Initial load
duke
parents:
diff changeset
1262
a61af66fc99e Initial load
duke
parents:
diff changeset
1263 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1264 * JVM I/O error codes
a61af66fc99e Initial load
duke
parents:
diff changeset
1265 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1266 #define JVM_EEXIST -100
a61af66fc99e Initial load
duke
parents:
diff changeset
1267
a61af66fc99e Initial load
duke
parents:
diff changeset
1268 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1269 * Open a file descriptor. This function returns a negative error code
a61af66fc99e Initial load
duke
parents:
diff changeset
1270 * on error, and a non-negative integer that is the file descriptor on
a61af66fc99e Initial load
duke
parents:
diff changeset
1271 * success.
a61af66fc99e Initial load
duke
parents:
diff changeset
1272 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1273 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1274 JVM_Open(const char *fname, jint flags, jint mode);
a61af66fc99e Initial load
duke
parents:
diff changeset
1275
a61af66fc99e Initial load
duke
parents:
diff changeset
1276 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1277 * Close a file descriptor. This function returns -1 on error, and 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1278 * on success.
a61af66fc99e Initial load
duke
parents:
diff changeset
1279 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1280 * fd the file descriptor to close.
a61af66fc99e Initial load
duke
parents:
diff changeset
1281 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1282 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1283 JVM_Close(jint fd);
a61af66fc99e Initial load
duke
parents:
diff changeset
1284
a61af66fc99e Initial load
duke
parents:
diff changeset
1285 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1286 * Read data from a file decriptor into a char array.
a61af66fc99e Initial load
duke
parents:
diff changeset
1287 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1288 * fd the file descriptor to read from.
a61af66fc99e Initial load
duke
parents:
diff changeset
1289 * buf the buffer where to put the read data.
a61af66fc99e Initial load
duke
parents:
diff changeset
1290 * nbytes the number of bytes to read.
a61af66fc99e Initial load
duke
parents:
diff changeset
1291 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1292 * This function returns -1 on error, and 0 on success.
a61af66fc99e Initial load
duke
parents:
diff changeset
1293 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1294 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1295 JVM_Read(jint fd, char *buf, jint nbytes);
a61af66fc99e Initial load
duke
parents:
diff changeset
1296
a61af66fc99e Initial load
duke
parents:
diff changeset
1297 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1298 * Write data from a char array to a file decriptor.
a61af66fc99e Initial load
duke
parents:
diff changeset
1299 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1300 * fd the file descriptor to read from.
a61af66fc99e Initial load
duke
parents:
diff changeset
1301 * buf the buffer from which to fetch the data.
a61af66fc99e Initial load
duke
parents:
diff changeset
1302 * nbytes the number of bytes to write.
a61af66fc99e Initial load
duke
parents:
diff changeset
1303 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1304 * This function returns -1 on error, and 0 on success.
a61af66fc99e Initial load
duke
parents:
diff changeset
1305 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1306 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1307 JVM_Write(jint fd, char *buf, jint nbytes);
a61af66fc99e Initial load
duke
parents:
diff changeset
1308
a61af66fc99e Initial load
duke
parents:
diff changeset
1309 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1310 * Returns the number of bytes available for reading from a given file
a61af66fc99e Initial load
duke
parents:
diff changeset
1311 * descriptor
a61af66fc99e Initial load
duke
parents:
diff changeset
1312 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1313 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1314 JVM_Available(jint fd, jlong *pbytes);
a61af66fc99e Initial load
duke
parents:
diff changeset
1315
a61af66fc99e Initial load
duke
parents:
diff changeset
1316 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1317 * Move the file descriptor pointer from whence by offset.
a61af66fc99e Initial load
duke
parents:
diff changeset
1318 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1319 * fd the file descriptor to move.
a61af66fc99e Initial load
duke
parents:
diff changeset
1320 * offset the number of bytes to move it by.
a61af66fc99e Initial load
duke
parents:
diff changeset
1321 * whence the start from where to move it.
a61af66fc99e Initial load
duke
parents:
diff changeset
1322 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1323 * This function returns the resulting pointer location.
a61af66fc99e Initial load
duke
parents:
diff changeset
1324 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1325 JNIEXPORT jlong JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1326 JVM_Lseek(jint fd, jlong offset, jint whence);
a61af66fc99e Initial load
duke
parents:
diff changeset
1327
a61af66fc99e Initial load
duke
parents:
diff changeset
1328 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1329 * Set the length of the file associated with the given descriptor to the given
a61af66fc99e Initial load
duke
parents:
diff changeset
1330 * length. If the new length is longer than the current length then the file
a61af66fc99e Initial load
duke
parents:
diff changeset
1331 * is extended; the contents of the extended portion are not defined. The
a61af66fc99e Initial load
duke
parents:
diff changeset
1332 * value of the file pointer is undefined after this procedure returns.
a61af66fc99e Initial load
duke
parents:
diff changeset
1333 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1334 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1335 JVM_SetLength(jint fd, jlong length);
a61af66fc99e Initial load
duke
parents:
diff changeset
1336
a61af66fc99e Initial load
duke
parents:
diff changeset
1337 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1338 * Synchronize the file descriptor's in memory state with that of the
a61af66fc99e Initial load
duke
parents:
diff changeset
1339 * physical device. Return of -1 is an error, 0 is OK.
a61af66fc99e Initial load
duke
parents:
diff changeset
1340 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1341 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1342 JVM_Sync(jint fd);
a61af66fc99e Initial load
duke
parents:
diff changeset
1343
a61af66fc99e Initial load
duke
parents:
diff changeset
1344 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1345 * Networking library support
a61af66fc99e Initial load
duke
parents:
diff changeset
1346 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1347
a61af66fc99e Initial load
duke
parents:
diff changeset
1348 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1349 JVM_InitializeSocketLibrary(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
1350
a61af66fc99e Initial load
duke
parents:
diff changeset
1351 struct sockaddr;
a61af66fc99e Initial load
duke
parents:
diff changeset
1352
a61af66fc99e Initial load
duke
parents:
diff changeset
1353 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1354 JVM_Socket(jint domain, jint type, jint protocol);
a61af66fc99e Initial load
duke
parents:
diff changeset
1355
a61af66fc99e Initial load
duke
parents:
diff changeset
1356 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1357 JVM_SocketClose(jint fd);
a61af66fc99e Initial load
duke
parents:
diff changeset
1358
a61af66fc99e Initial load
duke
parents:
diff changeset
1359 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1360 JVM_SocketShutdown(jint fd, jint howto);
a61af66fc99e Initial load
duke
parents:
diff changeset
1361
a61af66fc99e Initial load
duke
parents:
diff changeset
1362 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1363 JVM_Recv(jint fd, char *buf, jint nBytes, jint flags);
a61af66fc99e Initial load
duke
parents:
diff changeset
1364
a61af66fc99e Initial load
duke
parents:
diff changeset
1365 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1366 JVM_Send(jint fd, char *buf, jint nBytes, jint flags);
a61af66fc99e Initial load
duke
parents:
diff changeset
1367
a61af66fc99e Initial load
duke
parents:
diff changeset
1368 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1369 JVM_Timeout(int fd, long timeout);
a61af66fc99e Initial load
duke
parents:
diff changeset
1370
a61af66fc99e Initial load
duke
parents:
diff changeset
1371 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1372 JVM_Listen(jint fd, jint count);
a61af66fc99e Initial load
duke
parents:
diff changeset
1373
a61af66fc99e Initial load
duke
parents:
diff changeset
1374 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1375 JVM_Connect(jint fd, struct sockaddr *him, jint len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1376
a61af66fc99e Initial load
duke
parents:
diff changeset
1377 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1378 JVM_Bind(jint fd, struct sockaddr *him, jint len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1379
a61af66fc99e Initial load
duke
parents:
diff changeset
1380 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1381 JVM_Accept(jint fd, struct sockaddr *him, jint *len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1382
a61af66fc99e Initial load
duke
parents:
diff changeset
1383 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1384 JVM_RecvFrom(jint fd, char *buf, int nBytes,
a61af66fc99e Initial load
duke
parents:
diff changeset
1385 int flags, struct sockaddr *from, int *fromlen);
a61af66fc99e Initial load
duke
parents:
diff changeset
1386
a61af66fc99e Initial load
duke
parents:
diff changeset
1387 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1388 JVM_SendTo(jint fd, char *buf, int len,
a61af66fc99e Initial load
duke
parents:
diff changeset
1389 int flags, struct sockaddr *to, int tolen);
a61af66fc99e Initial load
duke
parents:
diff changeset
1390
a61af66fc99e Initial load
duke
parents:
diff changeset
1391 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1392 JVM_SocketAvailable(jint fd, jint *result);
a61af66fc99e Initial load
duke
parents:
diff changeset
1393
a61af66fc99e Initial load
duke
parents:
diff changeset
1394
a61af66fc99e Initial load
duke
parents:
diff changeset
1395 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1396 JVM_GetSockName(jint fd, struct sockaddr *him, int *len);
a61af66fc99e Initial load
duke
parents:
diff changeset
1397
a61af66fc99e Initial load
duke
parents:
diff changeset
1398 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1399 JVM_GetSockOpt(jint fd, int level, int optname, char *optval, int *optlen);
a61af66fc99e Initial load
duke
parents:
diff changeset
1400
a61af66fc99e Initial load
duke
parents:
diff changeset
1401 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1402 JVM_SetSockOpt(jint fd, int level, int optname, const char *optval, int optlen);
a61af66fc99e Initial load
duke
parents:
diff changeset
1403
a61af66fc99e Initial load
duke
parents:
diff changeset
1404 JNIEXPORT int JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1405 JVM_GetHostName(char* name, int namelen);
a61af66fc99e Initial load
duke
parents:
diff changeset
1406
a61af66fc99e Initial load
duke
parents:
diff changeset
1407 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1408 * The standard printing functions supported by the Java VM. (Should they
a61af66fc99e Initial load
duke
parents:
diff changeset
1409 * be renamed to JVM_* in the future?
a61af66fc99e Initial load
duke
parents:
diff changeset
1410 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1411
a61af66fc99e Initial load
duke
parents:
diff changeset
1412 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1413 * BE CAREFUL! The following functions do not implement the
a61af66fc99e Initial load
duke
parents:
diff changeset
1414 * full feature set of standard C printf formats.
a61af66fc99e Initial load
duke
parents:
diff changeset
1415 */
2191
d70fe6ab4436 6588413: Use -fvisibility=hidden for gcc compiles
coleenp
parents: 2129
diff changeset
1416 JNIEXPORT int
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1417 jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args);
a61af66fc99e Initial load
duke
parents:
diff changeset
1418
2191
d70fe6ab4436 6588413: Use -fvisibility=hidden for gcc compiles
coleenp
parents: 2129
diff changeset
1419 JNIEXPORT int
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1420 jio_snprintf(char *str, size_t count, const char *fmt, ...);
a61af66fc99e Initial load
duke
parents:
diff changeset
1421
2191
d70fe6ab4436 6588413: Use -fvisibility=hidden for gcc compiles
coleenp
parents: 2129
diff changeset
1422 JNIEXPORT int
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1423 jio_fprintf(FILE *, const char *fmt, ...);
a61af66fc99e Initial load
duke
parents:
diff changeset
1424
2191
d70fe6ab4436 6588413: Use -fvisibility=hidden for gcc compiles
coleenp
parents: 2129
diff changeset
1425 JNIEXPORT int
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1426 jio_vfprintf(FILE *, const char *fmt, va_list args);
a61af66fc99e Initial load
duke
parents:
diff changeset
1427
a61af66fc99e Initial load
duke
parents:
diff changeset
1428
a61af66fc99e Initial load
duke
parents:
diff changeset
1429 JNIEXPORT void * JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1430 JVM_RawMonitorCreate(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
1431
a61af66fc99e Initial load
duke
parents:
diff changeset
1432 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1433 JVM_RawMonitorDestroy(void *mon);
a61af66fc99e Initial load
duke
parents:
diff changeset
1434
a61af66fc99e Initial load
duke
parents:
diff changeset
1435 JNIEXPORT jint JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1436 JVM_RawMonitorEnter(void *mon);
a61af66fc99e Initial load
duke
parents:
diff changeset
1437
a61af66fc99e Initial load
duke
parents:
diff changeset
1438 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1439 JVM_RawMonitorExit(void *mon);
a61af66fc99e Initial load
duke
parents:
diff changeset
1440
a61af66fc99e Initial load
duke
parents:
diff changeset
1441 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1442 * java.lang.reflect.Method
a61af66fc99e Initial load
duke
parents:
diff changeset
1443 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1444 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1445 JVM_InvokeMethod(JNIEnv *env, jobject method, jobject obj, jobjectArray args0);
a61af66fc99e Initial load
duke
parents:
diff changeset
1446
a61af66fc99e Initial load
duke
parents:
diff changeset
1447 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1448 * java.lang.reflect.Constructor
a61af66fc99e Initial load
duke
parents:
diff changeset
1449 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1450 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1451 JVM_NewInstanceFromConstructor(JNIEnv *env, jobject c, jobjectArray args0);
a61af66fc99e Initial load
duke
parents:
diff changeset
1452
a61af66fc99e Initial load
duke
parents:
diff changeset
1453 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1454 * java.lang.management support
a61af66fc99e Initial load
duke
parents:
diff changeset
1455 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1456 JNIEXPORT void* JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1457 JVM_GetManagement(jint version);
a61af66fc99e Initial load
duke
parents:
diff changeset
1458
a61af66fc99e Initial load
duke
parents:
diff changeset
1459 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1460 * com.sun.tools.attach.VirtualMachine support
a61af66fc99e Initial load
duke
parents:
diff changeset
1461 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1462 * Initialize the agent properties with the properties maintained in the VM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1463 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1464 JNIEXPORT jobject JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1465 JVM_InitAgentProperties(JNIEnv *env, jobject agent_props);
a61af66fc99e Initial load
duke
parents:
diff changeset
1466
a61af66fc99e Initial load
duke
parents:
diff changeset
1467 /* Generics reflection support.
a61af66fc99e Initial load
duke
parents:
diff changeset
1468 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1469 * Returns information about the given class's EnclosingMethod
a61af66fc99e Initial load
duke
parents:
diff changeset
1470 * attribute, if present, or null if the class had no enclosing
a61af66fc99e Initial load
duke
parents:
diff changeset
1471 * method.
a61af66fc99e Initial load
duke
parents:
diff changeset
1472 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1473 * If non-null, the returned array contains three elements. Element 0
a61af66fc99e Initial load
duke
parents:
diff changeset
1474 * is the java.lang.Class of which the enclosing method is a member,
a61af66fc99e Initial load
duke
parents:
diff changeset
1475 * and elements 1 and 2 are the java.lang.Strings for the enclosing
a61af66fc99e Initial load
duke
parents:
diff changeset
1476 * method's name and descriptor, respectively.
a61af66fc99e Initial load
duke
parents:
diff changeset
1477 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1478 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1479 JVM_GetEnclosingMethodInfo(JNIEnv* env, jclass ofClass);
a61af66fc99e Initial load
duke
parents:
diff changeset
1480
a61af66fc99e Initial load
duke
parents:
diff changeset
1481 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1482 * Java thread state support
a61af66fc99e Initial load
duke
parents:
diff changeset
1483 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1484 enum {
a61af66fc99e Initial load
duke
parents:
diff changeset
1485 JAVA_THREAD_STATE_NEW = 0,
a61af66fc99e Initial load
duke
parents:
diff changeset
1486 JAVA_THREAD_STATE_RUNNABLE = 1,
a61af66fc99e Initial load
duke
parents:
diff changeset
1487 JAVA_THREAD_STATE_BLOCKED = 2,
a61af66fc99e Initial load
duke
parents:
diff changeset
1488 JAVA_THREAD_STATE_WAITING = 3,
a61af66fc99e Initial load
duke
parents:
diff changeset
1489 JAVA_THREAD_STATE_TIMED_WAITING = 4,
a61af66fc99e Initial load
duke
parents:
diff changeset
1490 JAVA_THREAD_STATE_TERMINATED = 5,
a61af66fc99e Initial load
duke
parents:
diff changeset
1491 JAVA_THREAD_STATE_COUNT = 6
a61af66fc99e Initial load
duke
parents:
diff changeset
1492 };
a61af66fc99e Initial load
duke
parents:
diff changeset
1493
a61af66fc99e Initial load
duke
parents:
diff changeset
1494 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1495 * Returns an array of the threadStatus values representing the
a61af66fc99e Initial load
duke
parents:
diff changeset
1496 * given Java thread state. Returns NULL if the VM version is
a61af66fc99e Initial load
duke
parents:
diff changeset
1497 * incompatible with the JDK or doesn't support the given
a61af66fc99e Initial load
duke
parents:
diff changeset
1498 * Java thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1499 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1500 JNIEXPORT jintArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1501 JVM_GetThreadStateValues(JNIEnv* env, jint javaThreadState);
a61af66fc99e Initial load
duke
parents:
diff changeset
1502
a61af66fc99e Initial load
duke
parents:
diff changeset
1503 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1504 * Returns an array of the substate names representing the
a61af66fc99e Initial load
duke
parents:
diff changeset
1505 * given Java thread state. Returns NULL if the VM version is
a61af66fc99e Initial load
duke
parents:
diff changeset
1506 * incompatible with the JDK or the VM doesn't support
a61af66fc99e Initial load
duke
parents:
diff changeset
1507 * the given Java thread state.
a61af66fc99e Initial load
duke
parents:
diff changeset
1508 * values must be the jintArray returned from JVM_GetThreadStateValues
a61af66fc99e Initial load
duke
parents:
diff changeset
1509 * and javaThreadState.
a61af66fc99e Initial load
duke
parents:
diff changeset
1510 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1511 JNIEXPORT jobjectArray JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1512 JVM_GetThreadStateNames(JNIEnv* env, jint javaThreadState, jintArray values);
a61af66fc99e Initial load
duke
parents:
diff changeset
1513
a61af66fc99e Initial load
duke
parents:
diff changeset
1514 /* =========================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1515 * The following defines a private JVM interface that the JDK can query
a61af66fc99e Initial load
duke
parents:
diff changeset
1516 * for the JVM version and capabilities. sun.misc.Version defines
a61af66fc99e Initial load
duke
parents:
diff changeset
1517 * the methods for getting the VM version and its capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
1518 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1519 * When a new bit is added, the following should be updated to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
1520 * access to the new capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
1521 * HS: JVM_GetVersionInfo and Abstract_VM_Version class
a61af66fc99e Initial load
duke
parents:
diff changeset
1522 * SDK: Version class
a61af66fc99e Initial load
duke
parents:
diff changeset
1523 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1524 * Similary, a private JDK interface JDK_GetVersionInfo0 is defined for
a61af66fc99e Initial load
duke
parents:
diff changeset
1525 * JVM to query for the JDK version and capabilities.
a61af66fc99e Initial load
duke
parents:
diff changeset
1526 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1527 * When a new bit is added, the following should be updated to provide
a61af66fc99e Initial load
duke
parents:
diff changeset
1528 * access to the new capability:
a61af66fc99e Initial load
duke
parents:
diff changeset
1529 * HS: JDK_Version class
a61af66fc99e Initial load
duke
parents:
diff changeset
1530 * SDK: JDK_GetVersionInfo0
a61af66fc99e Initial load
duke
parents:
diff changeset
1531 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1532 * ==========================================================================
a61af66fc99e Initial load
duke
parents:
diff changeset
1533 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1534 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
1535 /* HotSpot Express VM version string:
a61af66fc99e Initial load
duke
parents:
diff changeset
1536 * <major>.<minor>-bxx[-<identifier>][-<debug_flavor>]
a61af66fc99e Initial load
duke
parents:
diff changeset
1537 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1538 unsigned int jvm_version; /* Consists of major.minor.0.build */
a61af66fc99e Initial load
duke
parents:
diff changeset
1539 unsigned int update_version : 8; /* 0 in HotSpot Express VM */
a61af66fc99e Initial load
duke
parents:
diff changeset
1540 unsigned int special_update_version : 8; /* 0 in HotSpot Express VM */
a61af66fc99e Initial load
duke
parents:
diff changeset
1541 unsigned int reserved1 : 16;
a61af66fc99e Initial load
duke
parents:
diff changeset
1542 unsigned int reserved2;
a61af66fc99e Initial load
duke
parents:
diff changeset
1543
a61af66fc99e Initial load
duke
parents:
diff changeset
1544 /* The following bits represents JVM supports that JDK has dependency on.
a61af66fc99e Initial load
duke
parents:
diff changeset
1545 * JDK can use these bits to determine which JVM version
a61af66fc99e Initial load
duke
parents:
diff changeset
1546 * and support it has to maintain runtime compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
1547 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1548 * When a new bit is added in a minor or update release, make sure
a61af66fc99e Initial load
duke
parents:
diff changeset
1549 * the new bit is also added in the main/baseline.
a61af66fc99e Initial load
duke
parents:
diff changeset
1550 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1551 unsigned int is_attachable : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
1552 unsigned int is_kernel_jvm : 1;
a61af66fc99e Initial load
duke
parents:
diff changeset
1553 unsigned int : 30;
a61af66fc99e Initial load
duke
parents:
diff changeset
1554 unsigned int : 32;
a61af66fc99e Initial load
duke
parents:
diff changeset
1555 unsigned int : 32;
a61af66fc99e Initial load
duke
parents:
diff changeset
1556 } jvm_version_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
1557
a61af66fc99e Initial load
duke
parents:
diff changeset
1558 #define JVM_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
a61af66fc99e Initial load
duke
parents:
diff changeset
1559 #define JVM_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
a61af66fc99e Initial load
duke
parents:
diff changeset
1560 // Micro version is 0 in HotSpot Express VM (set in jvm.cpp).
a61af66fc99e Initial load
duke
parents:
diff changeset
1561 #define JVM_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
a61af66fc99e Initial load
duke
parents:
diff changeset
1562 /* Build number is available in all HotSpot Express VM builds.
a61af66fc99e Initial load
duke
parents:
diff changeset
1563 * It is defined in make/hotspot_version file.
a61af66fc99e Initial load
duke
parents:
diff changeset
1564 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1565 #define JVM_VERSION_BUILD(version) ((version & 0x000000FF))
a61af66fc99e Initial load
duke
parents:
diff changeset
1566
a61af66fc99e Initial load
duke
parents:
diff changeset
1567 JNIEXPORT void JNICALL
a61af66fc99e Initial load
duke
parents:
diff changeset
1568 JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
1569
a61af66fc99e Initial load
duke
parents:
diff changeset
1570 typedef struct {
a61af66fc99e Initial load
duke
parents:
diff changeset
1571 // Naming convention of RE build version string: n.n.n[_uu[c]][-<identifier>]-bxx
a61af66fc99e Initial load
duke
parents:
diff changeset
1572 unsigned int jdk_version; /* Consists of major, minor, micro (n.n.n) */
a61af66fc99e Initial load
duke
parents:
diff changeset
1573 /* and build number (xx) */
a61af66fc99e Initial load
duke
parents:
diff changeset
1574 unsigned int update_version : 8; /* Update release version (uu) */
a61af66fc99e Initial load
duke
parents:
diff changeset
1575 unsigned int special_update_version : 8; /* Special update release version (c)*/
a61af66fc99e Initial load
duke
parents:
diff changeset
1576 unsigned int reserved1 : 16;
a61af66fc99e Initial load
duke
parents:
diff changeset
1577 unsigned int reserved2;
a61af66fc99e Initial load
duke
parents:
diff changeset
1578
a61af66fc99e Initial load
duke
parents:
diff changeset
1579 /* The following bits represents new JDK supports that VM has dependency on.
a61af66fc99e Initial load
duke
parents:
diff changeset
1580 * VM implementation can use these bits to determine which JDK version
a61af66fc99e Initial load
duke
parents:
diff changeset
1581 * and support it has to maintain runtime compatibility.
a61af66fc99e Initial load
duke
parents:
diff changeset
1582 *
a61af66fc99e Initial load
duke
parents:
diff changeset
1583 * When a new bit is added in a minor or update release, make sure
a61af66fc99e Initial load
duke
parents:
diff changeset
1584 * the new bit is also added in the main/baseline.
a61af66fc99e Initial load
duke
parents:
diff changeset
1585 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1586 unsigned int thread_park_blocker : 1;
2129
8f8dfba37802 6994753: Implement optional hook to a Java method at VM startup.
kevinw
parents: 2014
diff changeset
1587 unsigned int post_vm_init_hook_enabled : 1;
3917
eca1193ca245 4965777: GC changes to support use of discovered field for pending references
ysr
parents: 2460
diff changeset
1588 unsigned int pending_list_uses_discovered_field : 1;
eca1193ca245 4965777: GC changes to support use of discovered field for pending references
ysr
parents: 2460
diff changeset
1589 unsigned int : 29;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1590 unsigned int : 32;
a61af66fc99e Initial load
duke
parents:
diff changeset
1591 unsigned int : 32;
a61af66fc99e Initial load
duke
parents:
diff changeset
1592 } jdk_version_info;
a61af66fc99e Initial load
duke
parents:
diff changeset
1593
a61af66fc99e Initial load
duke
parents:
diff changeset
1594 #define JDK_VERSION_MAJOR(version) ((version & 0xFF000000) >> 24)
a61af66fc99e Initial load
duke
parents:
diff changeset
1595 #define JDK_VERSION_MINOR(version) ((version & 0x00FF0000) >> 16)
a61af66fc99e Initial load
duke
parents:
diff changeset
1596 #define JDK_VERSION_MICRO(version) ((version & 0x0000FF00) >> 8)
a61af66fc99e Initial load
duke
parents:
diff changeset
1597
a61af66fc99e Initial load
duke
parents:
diff changeset
1598 /* Build number is available only for RE build (i.e. JDK_BUILD_NUMBER is set to bNN)
a61af66fc99e Initial load
duke
parents:
diff changeset
1599 * It will be zero for internal builds.
a61af66fc99e Initial load
duke
parents:
diff changeset
1600 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1601 #define JDK_VERSION_BUILD(version) ((version & 0x000000FF))
a61af66fc99e Initial load
duke
parents:
diff changeset
1602
a61af66fc99e Initial load
duke
parents:
diff changeset
1603 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1604 * This is the function JDK_GetVersionInfo0 defined in libjava.so
a61af66fc99e Initial load
duke
parents:
diff changeset
1605 * that is dynamically looked up by JVM.
a61af66fc99e Initial load
duke
parents:
diff changeset
1606 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1607 typedef void (*jdk_version_info_fn_t)(jdk_version_info* info, size_t info_size);
a61af66fc99e Initial load
duke
parents:
diff changeset
1608
a61af66fc99e Initial load
duke
parents:
diff changeset
1609 /*
a61af66fc99e Initial load
duke
parents:
diff changeset
1610 * This structure is used by the launcher to get the default thread
a61af66fc99e Initial load
duke
parents:
diff changeset
1611 * stack size from the VM using JNI_GetDefaultJavaVMInitArgs() with a
a61af66fc99e Initial load
duke
parents:
diff changeset
1612 * version of 1.1. As it is not supported otherwise, it has been removed
a61af66fc99e Initial load
duke
parents:
diff changeset
1613 * from jni.h
a61af66fc99e Initial load
duke
parents:
diff changeset
1614 */
a61af66fc99e Initial load
duke
parents:
diff changeset
1615 typedef struct JDK1_1InitArgs {
a61af66fc99e Initial load
duke
parents:
diff changeset
1616 jint version;
a61af66fc99e Initial load
duke
parents:
diff changeset
1617
a61af66fc99e Initial load
duke
parents:
diff changeset
1618 char **properties;
a61af66fc99e Initial load
duke
parents:
diff changeset
1619 jint checkSource;
a61af66fc99e Initial load
duke
parents:
diff changeset
1620 jint nativeStackSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
1621 jint javaStackSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
1622 jint minHeapSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
1623 jint maxHeapSize;
a61af66fc99e Initial load
duke
parents:
diff changeset
1624 jint verifyMode;
a61af66fc99e Initial load
duke
parents:
diff changeset
1625 char *classpath;
a61af66fc99e Initial load
duke
parents:
diff changeset
1626
a61af66fc99e Initial load
duke
parents:
diff changeset
1627 jint (JNICALL *vfprintf)(FILE *fp, const char *format, va_list args);
a61af66fc99e Initial load
duke
parents:
diff changeset
1628 void (JNICALL *exit)(jint code);
a61af66fc99e Initial load
duke
parents:
diff changeset
1629 void (JNICALL *abort)(void);
a61af66fc99e Initial load
duke
parents:
diff changeset
1630
a61af66fc99e Initial load
duke
parents:
diff changeset
1631 jint enableClassGC;
a61af66fc99e Initial load
duke
parents:
diff changeset
1632 jint enableVerboseGC;
a61af66fc99e Initial load
duke
parents:
diff changeset
1633 jint disableAsyncGC;
a61af66fc99e Initial load
duke
parents:
diff changeset
1634 jint verbose;
a61af66fc99e Initial load
duke
parents:
diff changeset
1635 jboolean debugging;
a61af66fc99e Initial load
duke
parents:
diff changeset
1636 jint debugPort;
a61af66fc99e Initial load
duke
parents:
diff changeset
1637 } JDK1_1InitArgs;
a61af66fc99e Initial load
duke
parents:
diff changeset
1638
a61af66fc99e Initial load
duke
parents:
diff changeset
1639 #ifdef __cplusplus
a61af66fc99e Initial load
duke
parents:
diff changeset
1640 } /* extern "C" */
a61af66fc99e Initial load
duke
parents:
diff changeset
1641 #endif /* __cplusplus */
a61af66fc99e Initial load
duke
parents:
diff changeset
1642
a61af66fc99e Initial load
duke
parents:
diff changeset
1643 #endif /* !_JAVASOFT_JVM_H_ */
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
1644
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1913
diff changeset
1645 #endif // SHARE_VM_PRIMS_JVM_H