<div>Please commit modulo one comment :)</div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
>From 289714c204fb704079d915bfcb800242c63069ad Mon Sep 17 00:00:00 2001<br>From: Will Dietz <<a href="mailto:w@wdtz.org">w@wdtz.org</a>><br>Date: Wed, 26 Oct 2011 19:52:31 -0500<br>Subject: [PATCH 1/3] Add NYI'd implementations of JVM_* in new file<br>
 OpenJDK.inc<br>---<br> lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp |    1 +<br> lib/J3/ClassLib/OpenJDK/OpenJDK.inc     | 1466 +++++++++++++++++++++++++++++++<br> 2 files changed, 1467 insertions(+), 0 deletions(-)<br> create mode 100644 lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>
diff --git a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp<br>index 9030fb6..99bcce5 100644<br>--- a/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp<br>+++ b/lib/J3/ClassLib/OpenJDK/JavaUpcalls.cpp<br>
@@ -1073,3 +1073,4 @@ void Classpath::initialiseClasspath(JnjvmClassLoader* loader) {<br> #include "Classpath.inc"<br> #include "ClasspathField.inc"<br> #include "ClasspathMethod.inc"<br>+#include "OpenJDK.inc"<br>
diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>new file mode 100644<br>index 0000000..ae64e32<br>--- /dev/null<br>+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc<br>@@ -0,0 +1,1466 @@<br>
+// vim: set ft=cpp:<br>+// TODO: Add comment header like the rest of VMKit<br></blockquote><div><br></div><div>Please fix the TODO :)</div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
+<br>+#include <jvm.h><br>+<br>+#define NYI() \<br>+  do{ assert(0 && "Not yet implemented!"); abort(); } while(0)<br>+<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetInterfaceVersion(void) {<br>+  NYI();<br>
+}<br>+<br>+jint JVM_CreateJavaVM(JavaVM **pvm, void **penv, void *args) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_IHashCode(JNIEnv *env, jobject _obj) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>
+JVM_MonitorWait(JNIEnv *env, jobject obj, jlong ms) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_MonitorNotify(JNIEnv *env, jobject obj) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_MonitorNotifyAll(JNIEnv *env, jobject obj) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_Clone(JNIEnv *env, jobject obj) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.String<br>+ */<br>+JNIEXPORT jstring JNICALL<br>+JVM_InternString(JNIEnv *env, jstring _str) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.System<br>+ */<br>+JNIEXPORT jlong JNICALL<br>+JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jlong JNICALL<br>+JVM_NanoTime(JNIEnv *env, jclass ignored) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject jsrc, jint sstart,<br>+              jobject jdst, jint dstart, jint len) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>
+JVM_InitProperties(JNIEnv *env, jobject p) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.io.File<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_OnExit(void (*func)(void)) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Runtime<br>
+ */<br>+JNIEXPORT void JNICALL<br>+JVM_Exit(jint code) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_Halt(jint code) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_GC(void) {<br>+  NYI();<br>
+}<br>+<br>+/* Returns the number of real-time milliseconds that have elapsed since the<br>+ * least-recently-inspected heap object was last inspected by the garbage<br>+ * collector.<br>+ *<br>+ * For simple stop-the-world collectors this value is just the time<br>
+ * since the most recent collection.  For generational collectors it is the<br>+ * time since the oldest generation was most recently collected.  Other<br>+ * collectors are free to return a pessimistic estimate of the elapsed time, or<br>
+ * simply the time since the last full collection was performed.<br>+ *<br>+ * Note that in the presence of reference objects, a given object that is no<br>+ * longer strongly reachable may have to be inspected multiple times before it<br>
+ * can be reclaimed.<br>+ */<br>+JNIEXPORT jlong JNICALL<br>+JVM_MaxObjectInspectionAge(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_TraceInstructions(jboolean on) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>
+JVM_TraceMethodCalls(jboolean on) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jlong JNICALL<br>+JVM_TotalMemory(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jlong JNICALL<br>+JVM_FreeMemory(void) {<br>+  NYI();<br>+}<br>+<br>
+JNIEXPORT jlong JNICALL<br>+JVM_MaxMemory(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_ActiveProcessorCount(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void * JNICALL<br>+JVM_LoadLibrary(const char *name) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_UnloadLibrary(void * handle) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void * JNICALL<br>+JVM_FindLibraryEntry(void *handle, const char *name) {<br>+  NYI();<br>+}<br>
+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsSupportedJNIVersion(jint version) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Float and java.lang.Double<br>+ */<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsNaN(jdouble d) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Throwable<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_FillInStackTrace(JNIEnv *env, jobject throwable) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_PrintStackTrace(JNIEnv *env, jobject throwable, jobject printable) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Compiler<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_InitializeCompiler (JNIEnv *env, jclass compCls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsSilentCompiler(JNIEnv *env, jclass compCls) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_CompileClass(JNIEnv *env, jclass compCls, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_CompileClasses(JNIEnv *env, jclass cls, jstring jname) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_CompilerCommand(JNIEnv *env, jclass compCls, jobject arg) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_EnableCompiler(JNIEnv *env, jclass compCls) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_DisableCompiler(JNIEnv *env, jclass compCls) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Thread<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_StartThread(JNIEnv *env, jobject _thread) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_StopThread(JNIEnv *env, jobject thread, jobject exception) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsThreadAlive(JNIEnv *env, jobject _thread) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_SuspendThread(JNIEnv *env, jobject thread) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_ResumeThread(JNIEnv *env, jobject thread) {<br>+  NYI();<br>+}<br>
+<br>+JNIEXPORT void JNICALL<br>+JVM_SetThreadPriority(JNIEnv *env, jobject thread, jint prio) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_Yield(JNIEnv *env, jclass threadClass) {<br>+  NYI();<br>+}<br>+<br>
+JNIEXPORT void JNICALL<br>+JVM_Sleep(JNIEnv *env, jclass threadClass, jlong millis) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_CurrentThread(JNIEnv *env, jclass threadClass) {<br>+  NYI();<br>+}<br>+<br>
+JNIEXPORT jint JNICALL<br>+JVM_CountStackFrames(JNIEnv *env, jobject thread) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_Interrupt(JNIEnv *env, jobject thread) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>
+JVM_IsInterrupted(JNIEnv *env, jobject thread, jboolean clearInterrupted) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_HoldsLock(JNIEnv *env, jclass threadClass, jobject obj) {<br>+  NYI();<br>+}<br>+<br>
+JNIEXPORT void JNICALL<br>+JVM_DumpAllStacks(JNIEnv *env, jclass unused) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetAllThreads(JNIEnv *env, jclass dummy) {<br>+  NYI();<br>+}<br>+<br>+/* getStackTrace() and getAllStackTraces() method */<br>
+JNIEXPORT jobjectArray JNICALL<br>+JVM_DumpThreads(JNIEnv *env, jclass threadClass, jobjectArray threads) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.SecurityManager<br>+ */<br>+JNIEXPORT jclass JNICALL<br>+JVM_CurrentLoadedClass(JNIEnv *env) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_CurrentClassLoader(JNIEnv *env) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassContext(JNIEnv *env) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>
+JVM_ClassDepth(JNIEnv *env, jstring name) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_ClassLoaderDepth(JNIEnv *env) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Package<br>+ */<br>+JNIEXPORT jstring JNICALL<br>
+JVM_GetSystemPackage(JNIEnv *env, jstring name) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetSystemPackages(JNIEnv *env) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.io.ObjectInputStream<br>+ */<br>
+JNIEXPORT jobject JNICALL<br>+JVM_AllocateNewObject(JNIEnv *env, jobject obj, jclass currClass,<br>+                      jclass initClass) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_AllocateNewArray(JNIEnv *env, jobject obj, jclass currClass,<br>
+                     jint length) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_LatestUserDefinedLoader(JNIEnv *env) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * This function has been deprecated and should not be considered<br>
+ * part of the specified JVM interface.<br>+ */<br>+JNIEXPORT jclass JNICALL<br>+JVM_LoadClass0(JNIEnv *env, jobject obj, jclass currClass,<br>+               jstring currClassName) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.reflect.Array<br>
+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetArrayLength(JNIEnv *env, jobject arr) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index) {<br>+  NYI();<br>+}<br>
+<br>+JNIEXPORT jvalue JNICALL<br>+JVM_GetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jint wCode) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_SetArrayElement(JNIEnv *env, jobject arr, jint index, jobject val) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_SetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jvalue v,<br>+                             unsigned char vCode) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>
+JVM_NewArray(JNIEnv *env, jclass eltClass, jint length) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_NewMultiArray(JNIEnv *env, jclass eltClass, jintArray dim) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.Class and java.lang.ClassLoader<br>
+ */<br>+/*<br>+ * Returns the class in which the code invoking the native method<br>+ * belongs.<br>+ *<br>+ * Note that in JDK 1.1, native methods did not create a frame.<br>+ * In 1.2, they do. Therefore native methods like Class.forName<br>
+ * can no longer look at the current frame for the caller class.<br>+ */<br>+JNIEXPORT jclass JNICALL<br>+JVM_GetCallerClass(JNIEnv *env, int n) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Find primitive classes<br>+ * utf: class name<br>
+ */<br>+<br>+JNIEXPORT jclass JNICALL<br>+JVM_FindPrimitiveClass(JNIEnv *env, const char *utf) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Link the class<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_ResolveClass(JNIEnv *env, jclass cls) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Find a class from a given class loader. Throw ClassNotFoundException<br>+ * or NoClassDefFoundError depending on the value of the last<br>+ * argument.<br>+ */<br>+JNIEXPORT jclass JNICALL<br>
+JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, jboolean init,<br>+                             jobject _loader, jboolean throwError) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jclass JNICALL<br>+JVM_FindClassFromBootLoader(JNIEnv *env, const char *name) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Find a class from a given class.<br>+ */<br>+JNIEXPORT jclass JNICALL<br>+JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init,<br>+                             jclass from) {<br>
+  NYI();<br>+}<br>+<br>+/* Find a loaded class cached by the VM */<br>+JNIEXPORT jclass JNICALL<br>+JVM_FindLoadedClass(JNIEnv *env, jobject _loader, jstring name) {<br>+  NYI();<br>+}<br>+<br>+/* Define a class */<br>+JNIEXPORT jclass JNICALL<br>
+JVM_DefineClass(JNIEnv *env, const char *name, jobject _loader, const jbyte *buf,<br>+                jsize len, jobject pd) {<br>+  NYI();<br>+}<br>+<br>+/* Define a class with a source (added in JDK1.5) */<br>+JNIEXPORT jclass JNICALL<br>
+JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader,<br>+                          const jbyte *buf, jsize len, jobject pd,<br>+                          const char *source) {<br>+  NYI();<br>+}<br>+<br>
+/* Define a class with a source with conditional verification (added HSX 14)<br>+ * -Xverify:all will verify anyway, -Xverify:none will not verify,<br>+ * -Xverify:remote (default) will obey this conditional<br>+ * i.e. true = should_verify_class<br>
+ */<br>+JNIEXPORT jclass JNICALL<br>+JVM_DefineClassWithSourceCond(JNIEnv *env, const char *name, jobject loader,<br>+                              const jbyte *buf, jsize len, jobject pd,<br>+                              const char *source, jboolean verify) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Reflection support functions<br>+ */<br>+<br>+JNIEXPORT jstring JNICALL<br>+JVM_GetClassName(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassInterfaces(JNIEnv *env, jclass cls) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetClassLoader(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsInterface(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>
+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassSigners(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetProtectionDomain(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_SetProtectionDomain(JNIEnv *env, jclass cls, jobject protection_domain) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsArrayClass(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsPrimitiveClass(JNIEnv *env, jclass cls) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jclass JNICALL<br>+JVM_GetComponentType(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetClassModifiers(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>
+JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jclass JNICALL<br>+JVM_GetDeclaringClass(JNIEnv *env, jclass ofClass) {<br>+  NYI();<br>+}<br>+<br>+/* Generics support (JDK 1.5) */<br>
+JNIEXPORT jstring JNICALL<br>+JVM_GetClassSignature(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+/* Annotations support (JDK 1.5) */<br>+JNIEXPORT jbyteArray JNICALL<br>+JVM_GetClassAnnotations(JNIEnv *env, jclass cls) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * New (JDK 1.4) reflection implementation<br>+ */<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, jboolean publicOnly) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetClassDeclaredConstructors(JNIEnv *env, jclass ofClass, jboolean publicOnly) {<br>
+  NYI();<br>+}<br>+<br>+/* Differs from JVM_GetClassModifiers in treatment of inner classes.<br>+   This returns the access flags for the class as specified in the<br>+   class file rather than searching the InnerClasses attribute (if<br>
+   present) to find the source-level access flags. Only the values of<br>+   the low 13 bits (i.e., a mask of 0x1FFF) are guaranteed to be<br>+   valid. */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetClassAccessFlags(JNIEnv *env, jclass cls) {<br>
+  NYI();<br>+}<br>+<br>+/* The following two reflection routines are still needed due to startup time issues */<br>+/*<br>+ * java.lang.reflect.Method<br>+ */<br>+JNIEXPORT jobject JNICALL<br>+JVM_InvokeMethod(JNIEnv *env, jobject method, jobject _obj, jobjectArray args0) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.reflect.Constructor<br>+ */<br>+JNIEXPORT jobject JNICALL<br>+JVM_NewInstanceFromConstructor(JNIEnv *env, jobject _c, jobjectArray args0) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Constant pool access; currently used to implement reflective access to annotations (JDK 1.5<br>
+ */<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetClassConstantPool(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL JVM_ConstantPoolGetSize<br>+(JNIEnv *env, jobject unused, jobject jcpool) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAtIfLoaded<br>
+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAtIfLoaded<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAt<br>
+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAtIfLoaded<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jobjectArray JNICALL JVM_ConstantPoolGetMemberRefInfoAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL JVM_ConstantPoolGetIntAt<br>
+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jlong JNICALL JVM_ConstantPoolGetLongAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>
+<br>+JNIEXPORT jfloat JNICALL JVM_ConstantPoolGetFloatAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jdouble JNICALL JVM_ConstantPoolGetDoubleAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jstring JNICALL JVM_ConstantPoolGetStringAt<br>+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jstring JNICALL JVM_ConstantPoolGetUTF8At<br>
+(JNIEnv *env, jobject unused, jobject jcpool, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.security.*<br>+ */<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_DoPrivileged(JNIEnv *env, jclass cls,<br>+                 jobject action, jobject context, jboolean wrapException) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+<br>+JNIEXPORT jobject JNICALL<br>+JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Signal support, used to implement the shutdown sequence.  Every VM must<br>+ * support JVM_SIGINT and JVM_SIGTERM, raising the former for user interrupts<br>+ * (^C) and the latter for external termination (kill, system shutdown, etc.).<br>
+ * Other platform-dependent signal values may also be supported.<br>+ */<br>+<br>+JNIEXPORT void * JNICALL<br>+JVM_RegisterSignal(jint sig, void *handler) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jboolean JNICALL<br>+JVM_RaiseSignal(jint sig) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_FindSignal(const char *name) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Retrieve the assertion directives for the specified class.<br>+ */<br>+JNIEXPORT jboolean JNICALL<br>
+JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Retrieve the assertion directives from the VM.<br>+ */<br>+JNIEXPORT jobject JNICALL<br>+JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * java.util.concurrent.AtomicLong<br>+ */<br>+JNIEXPORT jboolean JNICALL<br>+JVM_SupportsCX8(void) {<br>+  NYI();<br>+}<br>+<br>+/*************************************************************************<br>
+ PART 2: Support for the Verifier and Class File Format Checker<br>+ ************************************************************************/<br>+/*<br>+ * Return the class name in UTF format. The result is valid<br>+ * until JVM_ReleaseUTf is called.<br>
+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetClassNameUTF(JNIEnv *env, jclass cb) {<br>+  NYI();<br>+}<br>+<br>+/*<br>
+ * Returns the constant pool types in the buffer provided by "types."<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_GetClassCPTypes(JNIEnv *env, jclass cb, unsigned char *types) {<br>+  NYI();<br>+}<br>+<br>+/*<br>
+ * Returns the number of Constant Pool entries.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetClassCPEntriesCount(JNIEnv *env, jclass cb) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the number of *declared* fields or methods.<br>
+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetClassFieldsCount(JNIEnv *env, jclass cb) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetClassMethodsCount(JNIEnv *env, jclass cb) {<br>+  NYI();<br>+}<br>+<br>+/*<br>
+ * Returns the CP indexes of exceptions raised by a given method.<br>+ * Places the result in the given buffer.<br>+ *<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_GetMethodIxExceptionIndexes(JNIEnv *env, jclass cb, jint method_index,<br>
+                                unsigned short *exceptions) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the number of exceptions raised by a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>
+JVM_GetMethodIxExceptionsCount(JNIEnv *env, jclass cb, jint method_index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the byte code sequence of a given method.<br>+ * Places the result in the given buffer.<br>+ *<br>
+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_GetMethodIxByteCode(JNIEnv *env, jclass cb, jint method_index,<br>+                        unsigned char *code) {<br>+  NYI();<br>+}<br>
+<br>+/*<br>+ * Returns the length of the byte code sequence of a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxByteCodeLength(JNIEnv *env, jclass cb, jint method_index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the exception table entry at entry_index of a given method.<br>+ * Places the result in the given buffer.<br>+ *<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT void JNICALL<br>
+JVM_GetMethodIxExceptionTableEntry(JNIEnv *env, jclass cb, jint method_index,<br>+                                   jint entry_index,<br>+                                   JVM_ExceptionTableEntryType *entry) {<br>+  NYI();<br>
+}<br>+<br>+/*<br>+ * Returns the length of the exception table of a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxExceptionTableLength(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the modifiers of a given field.<br>+ * The field is identified by field_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetFieldIxModifiers(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the modifiers of a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxModifiers(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the number of local variables of a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxLocalsCount(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the number of arguments (including this pointer) of a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxArgsSize(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the maximum amount of stack (in words) used by a given method.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cb, int index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Is a given method a constructor.<br>+ * The method is identified by method_index.<br>+ */<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsConstructorIx(JNIEnv *env, jclass cb, int index) {<br>+  NYI();<br>
+}<br>+<br>+/*<br>+ * Returns the name of a given method in UTF format.<br>+ * The result remains valid until JVM_ReleaseUTF is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>
+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the signature of a given method in UTF format.<br>+ * The result remains valid until JVM_ReleaseUTF is called.<br>
+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetMethodIxSignatureUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>
+}<br>+<br>+/*<br>+ * Returns the name of the field refered to at a given constant pool<br>+ * index.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>
+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPFieldNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the name of the method refered to at a given constant pool<br>
+ * index.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>
+JVM_GetCPMethodNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the signature of the method refered to at a given constant pool<br>+ * index.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>
+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPMethodSignatureUTF(JNIEnv *env, jclass cb, jint index) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the signature of the field refered to at a given constant pool<br>+ * index.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>
+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPFieldSignatureUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>
+}<br>+<br>+/*<br>+ * Returns the class name refered to at a given constant pool index.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>
+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPClassNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the class name refered to at a given constant pool index.<br>
+ *<br>+ * The constant pool entry must refer to a CONSTANT_Fieldref.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>
+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the class name refered to at a given constant pool index.<br>
+ *<br>+ * The constant pool entry must refer to CONSTANT_Methodref or<br>+ * CONSTANT_InterfaceMethodref.<br>+ *<br>+ * The result is in UTF format and remains valid until JVM_ReleaseUTF<br>+ * is called.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>
+ * in any way.<br>+ */<br>+JNIEXPORT const char * JNICALL<br>+JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cb, jint index) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the modifiers of a field in calledClass. The field is<br>
+ * referred to in class cb at constant pool entry index.<br>+ *<br>+ * The caller must treat the string as a constant and not modify it<br>+ * in any way.<br>+ *<br>+ * Returns -1 if the field does not exist in calledClass.<br>
+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetCPFieldModifiers(JNIEnv *env, jclass cb, int index, jclass calledClass) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the modifiers of a method in calledClass. The method is<br>
+ * referred to in class cb at constant pool entry index.<br>+ *<br>+ * Returns -1 if the method does not exist in calledClass.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetCPMethodModifiers(JNIEnv *env, jclass cb, int index, jclass calledClass) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Releases the UTF string obtained from the VM.<br>+ */<br>+JNIEXPORT void JNICALL<br>+JVM_ReleaseUTF(const char *utf) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Compare if two classes are in the same package.<br>
+ */<br>+JNIEXPORT jboolean JNICALL<br>+JVM_IsSameClassPackage(JNIEnv *env, jclass class1, jclass class2) {<br>+  NYI();<br>+}<br>+<br>+/* Write a string into the given buffer, in the platform's local encoding,<br>+ * that describes the most recent system-level error to occur in this thread.<br>
+ * Return the length of the string or zero if no error occurred.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_GetLastErrorString(char *buf, int len) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Convert a pathname into native format.  This function does syntactic<br>
+ * cleanup, such as removing redundant separator characters.  It modifies<br>+ * the given pathname string in place.<br>+ */<br>+JNIEXPORT char * JNICALL<br>+JVM_NativePath(char * path) {<br>+  NYI();<br>+}<br>+<br>+/*<br>
+ * Open a file descriptor. This function returns a negative error code<br>+ * on error, and a non-negative integer that is the file descriptor on<br>+ * success.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Open(const char *fname, jint flags, jint mode) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Close a file descriptor. This function returns -1 on error, and 0<br>+ * on success.<br>+ *<br>+ * fd        the file descriptor to close.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Close(jint fd) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Read data from a file decriptor into a char array.<br>+ *<br>+ * fd        the file descriptor to read from.<br>+ * buf       the buffer where to put the read data.<br>+ * nbytes    the number of bytes to read.<br>
+ *<br>+ * This function returns -1 on error, and 0 on success.<br>+ * (WDTZ: If I return '0' on success, things die. Returning<br>+ *  number of bytes read instead for now)<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Read(jint fd, char *buf, jint nbytes) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Write data from a char array to a file decriptor.<br>+ *<br>+ * fd        the file descriptor to read from.<br>+ * buf       the buffer from which to fetch the data.<br>+ * nbytes    the number of bytes to write.<br>
+ *<br>+ * This function returns -1 on error, and 0 on success.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Write(jint fd, char *buf, jint nbytes) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns the number of bytes available for reading from a given file<br>
+ * descriptor<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Available(jint fd, jlong *pbytes) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Move the file descriptor pointer from whence by offset.<br>+ *<br>+ * fd        the file descriptor to move.<br>
+ * offset    the number of bytes to move it by.<br>+ * whence    the start from where to move it.<br>+ *<br>+ * This function returns the resulting pointer location.<br>+ */<br>+JNIEXPORT jlong JNICALL<br>+JVM_Lseek(jint fd, jlong offset, jint whence) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Set the length of the file associated with the given descriptor to the given<br>+ * length.  If the new length is longer than the current length then the file<br>+ * is extended; the contents of the extended portion are not defined.  Th {<br>
+NYI();<br>+}<br>+ * value of the file pointer is undefined after this procedure returns.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_SetLength(jint fd, jlong length) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Synchronize the file descriptor's in memory state with that of the<br>
+ * physical device.  Return of -1 is an error, 0 is OK.<br>+ */<br>+JNIEXPORT jint JNICALL<br>+JVM_Sync(jint fd) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Networking library support<br>+ */<br>+<br>+JNIEXPORT jint JNICALL<br>
+JVM_InitializeSocketLibrary(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Socket(jint domain, jint type, jint protocol) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_SocketClose(jint fd) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_SocketShutdown(jint fd, jint howto) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Recv(jint fd, char *buf, jint nBytes, jint flags) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Send(jint fd, char *buf, jint nBytes, jint flags) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Timeout(int fd, long timeout) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>
+JVM_Listen(jint fd, jint count) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Connect(jint fd, struct sockaddr *him, jint len) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Bind(jint fd, struct sockaddr *him, jint len) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_Accept(jint fd, struct sockaddr *him, jint *len) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_RecvFrom(jint fd, char *buf, int nBytes,<br>+                  int flags, struct sockaddr *from, int *fromlen) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_SendTo(jint fd, char *buf, int len,<br>+                int flags, struct sockaddr *to, int tolen) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_SocketAvailable(jint fd, jint *result) {<br>
+  NYI();<br>+}<br>+<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetSockName(jint fd, struct sockaddr *him, int *len) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_GetSockOpt(jint fd, int level, int optname, char *optval, int *optlen) {<br>
+  NYI();<br>+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_SetSockOpt(jint fd, int level, int optname, const char *optval, int optlen) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * These routines are only reentrant on Windows<br>+ */<br>
+<br>+JNIEXPORT int JNICALL<br>+JVM_GetHostName(char* name, int namelen) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * The standard printing functions supported by the Java VM. (Should they<br>+ * be renamed to JVM_* in the future?<br>
+ */<br>+<br>+/*<br>+ * BE CAREFUL! The following functions do not implement the<br>+ * full feature set of standard C printf formats.<br>+ */<br>+int<br>+jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args) {<br>
+  NYI();<br>+}<br>+<br>+int<br>+jio_snprintf(char *str, size_t count, const char *fmt, ...) {<br>+  NYI();<br>+}<br>+<br>+int<br>+jio_fprintf(FILE *, const char *fmt, ...) {<br>+  NYI();<br>+}<br>+<br>+int<br>+jio_vfprintf(FILE *, const char *fmt, va_list args) {<br>
+  NYI();<br>+}<br>+<br>+typedef pthread_mutex_t Lock;<br>+JNIEXPORT void * JNICALL<br>+JVM_RawMonitorCreate(void) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_RawMonitorDestroy(void *mon) {<br>+  NYI();<br>
+}<br>+<br>+JNIEXPORT jint JNICALL<br>+JVM_RawMonitorEnter(void *mon) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_RawMonitorExit(void *mon) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * java.lang.management support<br>
+ */<br>+JNIEXPORT void* JNICALL<br>+JVM_GetManagement(jint version) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * com.sun.tools.attach.VirtualMachine support<br>+ *<br>+ * Initialize the agent properties with the properties maintained in the VM.<br>
+ */<br>+JNIEXPORT jobject JNICALL<br>+JVM_InitAgentProperties(JNIEnv *env, jobject agent_props) {<br>+  NYI();<br>+}<br>+<br>+/* Generics reflection support.<br>+ *<br>+ * Returns information about the given class's EnclosingMethod<br>
+ * attribute, if present, or null if the class had no enclosing<br>+ * method.<br>+ *<br>+ * If non-null, the returned array contains three elements. Element 0<br>+ * is the java.lang.Class of which the enclosing method is a member,<br>
+ * and elements 1 and 2 are the java.lang.Strings for the enclosing<br>+ * method's name and descriptor, respectively.<br>+ */<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetEnclosingMethodInfo(JNIEnv* env, jclass ofClass) {<br>
+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns an array of the threadStatus values representing the<br>+ * given Java thread state.  Returns NULL if the VM version is<br>+ * incompatible with the JDK or doesn't support the given<br>
+ * Java thread state.<br>+ */<br>+JNIEXPORT jintArray JNICALL<br>+JVM_GetThreadStateValues(JNIEnv* env, jint javaThreadState) {<br>+  NYI();<br>+}<br>+<br>+/*<br>+ * Returns an array of the substate names representing the<br>
+ * given Java thread state.  Returns NULL if the VM version is<br>+ * incompatible with the JDK or the VM doesn't support<br>+ * the given Java thread state.<br>+ * values must be the jintArray returned from JVM_GetThreadStateValues<br>
+ * and javaThreadState.<br>+ */<br>+JNIEXPORT jobjectArray JNICALL<br>+JVM_GetThreadStateNames(JNIEnv* env, jint javaThreadState, jintArray values) {<br>+  NYI();<br>+}<br>+<br>+JNIEXPORT void JNICALL<br>+JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size) {<br>
+  NYI();<br>+}<br>-- <br>1.7.5.1<br><br>On Thu, Oct 27, 2011 at 3:10 AM, Will Dietz <span dir="ltr"><<a href="mailto:wdietz2@illinois.edu">wdietz2@illinois.edu</a>></span> wrote:<font color="#888888"><br>
~Will<br>
</font><br>_______________________________________________<br>
vmkit-commits mailing list<br>
<a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
<br><font color="#888888">
~Will</font><br>_______________________________________________<br>
vmkit-commits mailing list<br>
<a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
<br>_______________________________________________<br>
vmkit-commits mailing list<br><a href="mailto:vmkit-commits@cs.uiuc.edu">vmkit-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/vmkit-commits</a><br>
</blockquote><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Attached (it's just a large file with all the methods defined to NYI()).<br>

</blockquote></div><br>