annotate src/share/vm/prims/jvm.h @ 20543:e7d0505c8a30

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