annotate src/share/vm/prims/jvm.h @ 3917:eca1193ca245

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