1 /* src/native/vm/sun/jvm.c - HotSpot JVM interface functions
3 Copyright (C) 2007 R. Grafl, A. Krall, C. Kruegel,
4 C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
5 E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
6 J. Wenninger, Institut f. Computersprachen - TU Wien
8 This file is part of CACAO.
10 This program is free software; you can redistribute it and/or
11 modify it under the terms of the GNU General Public License as
12 published by the Free Software Foundation; either version 2, or (at
13 your option) any later version.
15 This program is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 $Id: jvm.c 8206 2007-07-15 14:26:33Z twisti $
41 #if defined(HAVE_SYS_IOCTL_H)
42 #define BSD_COMP /* Get FIONREAD on Solaris2 */
43 #include <sys/ioctl.h>
46 #include <sys/socket.h>
51 #include "mm/memory.h"
53 #include "native/jni.h"
54 #include "native/native.h"
56 #include "native/include/java_lang_AssertionStatusDirectives.h"
57 #include "native/include/java_lang_String.h" /* required by j.l.CL */
58 #include "native/include/java_nio_ByteBuffer.h" /* required by j.l.CL */
59 #include "native/include/java_lang_ClassLoader.h" /* required by j.l.C */
60 #include "native/include/java_lang_StackTraceElement.h"
61 #include "native/include/java_lang_Throwable.h"
62 #include "native/include/java_security_ProtectionDomain.h"
64 #include "native/vm/java_lang_Class.h"
65 #include "native/vm/java_lang_ClassLoader.h"
66 #include "native/vm/java_lang_Object.h"
67 #include "native/vm/java_lang_Runtime.h"
68 #include "native/vm/java_lang_String.h"
69 #include "native/vm/java_lang_Thread.h"
70 #include "native/vm/java_lang_reflect_Constructor.h"
71 #include "native/vm/java_lang_reflect_Method.h"
72 #include "native/vm/java_util_concurrent_atomic_AtomicLong.h"
74 #include "threads/lock-common.h"
76 #include "toolbox/logging.h"
78 #include "vm/builtin.h"
79 #include "vm/exceptions.h"
80 #include "vm/initialize.h"
81 #include "vm/properties.h"
82 #include "vm/stringlocal.h"
85 #include "vm/jit/stacktrace.h"
87 #include "vmcore/classcache.h"
88 #include "vmcore/options.h"
89 #include "vmcore/primitive.h"
92 /* debugging macro ************************************************************/
95 # define TRACEJVMCALLS(...) \
97 if (opt_TraceJVMCalls) { \
98 log_println(__VA_ARGS__); \
102 # define TRACEJVMCALLS(...)
107 /* Naming convention of RE build version string: n.n.n[_uu[c]][-<identifier>]-bxx */
108 unsigned int jvm_version; /* Consists of major, minor, micro (n.n.n) */
109 /* and build number (xx) */
110 unsigned int update_version : 8; /* Update release version (uu) */
111 unsigned int special_update_version : 8; /* Special update release version (c) */
112 unsigned int reserved1 : 16;
113 unsigned int reserved2;
115 /* The following bits represents JVM supports that JDK has dependency on.
116 * JDK can use these bits to determine which JVM version
117 * and support it has to maintain runtime compatibility.
119 * When a new bit is added in a minor or update release, make sure
120 * the new bit is also added in the main/baseline.
122 unsigned int is_attachable : 1;
130 * A structure used to a capture exception table entry in a Java method.
137 } JVM_ExceptionTableEntryType;
140 int jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args)
142 if ((intptr_t) count <= 0)
145 return vsnprintf(str, count, fmt, args);
149 int jio_snprintf(char *str, size_t count, const char *fmt, ...)
155 len = jio_vsnprintf(str, count, fmt, ap);
162 int jio_fprintf(FILE* f, const char *fmt, ...)
164 log_println("jio_fprintf: IMPLEMENT ME!");
168 int jio_vfprintf(FILE* f, const char *fmt, va_list args)
170 log_println("jio_vfprintf: IMPLEMENT ME!");
174 int jio_printf(const char *fmt, ...)
176 log_println("jio_printf: IMPLEMENT ME!");
180 /* JVM_GetInterfaceVersion */
182 jint JVM_GetInterfaceVersion()
184 /* This is defined in hotspot/src/share/vm/prims/jvm.h */
186 #define JVM_INTERFACE_VERSION 4
188 return JVM_INTERFACE_VERSION;
192 /* JVM_CurrentTimeMillis */
194 jlong JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored)
197 log_println("JVM_CurrentTimeMillis");
199 return (jlong) builtin_currenttimemillis();
205 jlong JVM_NanoTime(JNIEnv *env, jclass ignored)
208 log_println("JVM_NanoTime");
210 return (jlong) builtin_nanotime();
216 void JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos, jobject dst, jint dst_pos, jint length)
221 s = (java_arrayheader *) src;
222 d = (java_arrayheader *) dst;
225 log_println("JVM_ArrayCopy: src=%p, src_pos=%d, dst=%p, dst_pos=%d, length=%d", src, src_pos, dst, dst_pos, length);
228 (void) builtin_arraycopy(s, src_pos, d, dst_pos, length);
232 /* JVM_InitProperties */
234 jobject JVM_InitProperties(JNIEnv *env, jobject properties)
237 log_println("JVM_InitProperties: properties=%d", properties);
239 properties_system_add_all((java_objectheader *) properties);
245 void JVM_Exit(jint code)
247 log_println("JVM_Exit: IMPLEMENT ME!");
253 void JVM_Halt(jint code)
256 log_println("JVM_Halt: code=%d", code);
263 /* JVM_OnExit(void (*func)) */
265 void JVM_OnExit(void (*func)(void))
267 log_println("JVM_OnExit(void (*func): IMPLEMENT ME!");
276 log_println("JVM_GC");
278 _Jv_java_lang_Runtime_gc();
282 /* JVM_MaxObjectInspectionAge */
284 jlong JVM_MaxObjectInspectionAge(void)
286 log_println("JVM_MaxObjectInspectionAge: IMPLEMENT ME!");
290 /* JVM_TraceInstructions */
292 void JVM_TraceInstructions(jboolean on)
294 log_println("JVM_TraceInstructions: IMPLEMENT ME!");
298 /* JVM_TraceMethodCalls */
300 void JVM_TraceMethodCalls(jboolean on)
302 log_println("JVM_TraceMethodCalls: IMPLEMENT ME!");
306 /* JVM_TotalMemory */
308 jlong JVM_TotalMemory(void)
311 log_println("JVM_TotalMemory");
313 return _Jv_java_lang_Runtime_totalMemory();
319 jlong JVM_FreeMemory(void)
322 log_println("JVM_FreeMemory");
324 return _Jv_java_lang_Runtime_freeMemory();
330 jlong JVM_MaxMemory(void)
332 log_println("JVM_MaxMemory: IMPLEMENT ME!");
336 /* JVM_ActiveProcessorCount */
338 jint JVM_ActiveProcessorCount(void)
340 log_println("JVM_ActiveProcessorCount: IMPLEMENT ME!");
344 /* JVM_FillInStackTrace */
346 void JVM_FillInStackTrace(JNIEnv *env, jobject receiver)
348 java_lang_Throwable *o;
349 stacktracecontainer *stc;
352 log_println("JVM_FillInStackTrace: receiver=%p", receiver);
355 o = (java_lang_Throwable *) receiver;
357 stc = stacktrace_fillInStackTrace();
362 o->backtrace = (java_lang_Object *) stc;
366 /* JVM_PrintStackTrace */
368 void JVM_PrintStackTrace(JNIEnv *env, jobject receiver, jobject printable)
370 log_println("JVM_PrintStackTrace: IMPLEMENT ME!");
374 /* JVM_GetStackTraceDepth */
376 jint JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable)
378 java_lang_Throwable *o;
379 stacktracecontainer *stc;
380 stacktracebuffer *stb;
383 log_println("JVM_GetStackTraceDepth: throwable=%p", throwable);
386 o = (java_lang_Throwable *) throwable;
387 stc = (stacktracecontainer *) o->backtrace;
394 /* JVM_GetStackTraceElement */
396 jobject JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index)
398 java_lang_Throwable *t;
399 stacktracecontainer *stc;
400 stacktracebuffer *stb;
401 stacktrace_entry *ste;
402 java_lang_StackTraceElement *o;
403 java_lang_String *declaringclass;
404 java_lang_String *filename;
408 log_println("JVM_GetStackTraceElement: throwable=%p, index=%d", throwable, index);
411 t = (java_lang_Throwable *) throwable;
412 stc = (stacktracecontainer *) t->backtrace;
415 if ((index < 0) || (index >= stb->used)) {
416 /* XXX This should be an IndexOutOfBoundsException (check this
419 exceptions_throw_arrayindexoutofboundsexception();
423 ste = &(stb->entries[index]);
425 /* allocate a new StackTraceElement */
427 o = (java_lang_StackTraceElement *)
428 builtin_new(class_java_lang_StackTraceElement);
435 if (!(ste->method->flags & ACC_NATIVE)) {
436 if (ste->method->class->sourcefile)
437 filename = (java_lang_String *) javastring_new(ste->method->class->sourcefile);
444 /* get line number */
446 if (ste->method->flags & ACC_NATIVE)
449 linenumber = (ste->linenumber == 0) ? -1 : ste->linenumber;
451 /* get declaring class name */
454 _Jv_java_lang_Class_getName((java_lang_Class *) ste->method->class);
456 /* fill the java.lang.StackTraceElement element */
458 o->declaringClass = declaringclass;
459 o->methodName = (java_lang_String *) javastring_new(ste->method->name);
460 o->fileName = filename;
461 o->lineNumber = linenumber;
469 jint JVM_IHashCode(JNIEnv* env, jobject handle)
472 log_println("JVM_IHashCode: jobject=%p", handle);
474 return (jint) ((ptrint) handle);
478 /* JVM_MonitorWait */
480 void JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms)
483 log_println("JVM_MonitorWait: handle=%p, ms=%ld", handle, ms);
485 _Jv_java_lang_Object_wait((java_lang_Object *) handle, ms, 0);
489 /* JVM_MonitorNotify */
491 void JVM_MonitorNotify(JNIEnv* env, jobject handle)
494 log_println("JVM_MonitorNotify: IMPLEMENT ME!");
496 _Jv_java_lang_Object_notify((java_lang_Object *) handle);
500 /* JVM_MonitorNotifyAll */
502 void JVM_MonitorNotifyAll(JNIEnv* env, jobject handle)
505 log_println("JVM_MonitorNotifyAll: handle=%p", handle);
507 _Jv_java_lang_Object_notifyAll((java_lang_Object *) handle);
513 jobject JVM_Clone(JNIEnv* env, jobject handle)
516 log_println("JVM_Clone: handle=%p", handle);
518 return (jobject) builtin_clone(env, (java_objectheader *) handle);
522 /* JVM_InitializeCompiler */
524 void JVM_InitializeCompiler (JNIEnv *env, jclass compCls)
526 log_println("JVM_InitializeCompiler : IMPLEMENT ME!");
530 /* JVM_IsSilentCompiler */
532 jboolean JVM_IsSilentCompiler(JNIEnv *env, jclass compCls)
534 log_println("JVM_IsSilentCompiler: IMPLEMENT ME!");
538 /* JVM_CompileClass */
540 jboolean JVM_CompileClass(JNIEnv *env, jclass compCls, jclass cls)
542 log_println("JVM_CompileClass: IMPLEMENT ME!");
546 /* JVM_CompileClasses */
548 jboolean JVM_CompileClasses(JNIEnv *env, jclass cls, jstring jname)
550 log_println("JVM_CompileClasses: IMPLEMENT ME!");
554 /* JVM_CompilerCommand */
556 jobject JVM_CompilerCommand(JNIEnv *env, jclass compCls, jobject arg)
558 log_println("JVM_CompilerCommand: IMPLEMENT ME!");
562 /* JVM_EnableCompiler */
564 void JVM_EnableCompiler(JNIEnv *env, jclass compCls)
566 log_println("JVM_EnableCompiler: IMPLEMENT ME!");
570 /* JVM_DisableCompiler */
572 void JVM_DisableCompiler(JNIEnv *env, jclass compCls)
574 log_println("JVM_DisableCompiler: IMPLEMENT ME!");
578 /* JVM_GetLastErrorString */
580 jint JVM_GetLastErrorString(char *buf, int len)
606 char* JVM_NativePath(char* path)
609 log_println("JVM_NativePath: path=%s", path);
611 /* XXX is this correct? */
617 /* JVM_GetCallerClass */
619 jclass JVM_GetCallerClass(JNIEnv* env, int depth)
621 java_objectarray *oa;
624 log_println("JVM_GetCallerClass: depth=%d", depth);
627 oa = stacktrace_getClassContext();
632 if (oa->header.size < depth)
635 return (jclass) oa->data[depth - 1];
640 /* JVM_FindPrimitiveClass */
642 jclass JVM_FindPrimitiveClass(JNIEnv* env, const char* utf)
645 log_println("JVM_FindPrimitiveClass: utf=%s", utf);
647 return (jclass) primitive_class_get_by_name(utf_new_char(utf));
651 /* JVM_ResolveClass */
653 void JVM_ResolveClass(JNIEnv* env, jclass cls)
655 log_println("JVM_ResolveClass: IMPLEMENT ME!");
659 /* JVM_FindClassFromClassLoader */
661 jclass JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, jboolean init, jobject loader, jboolean throwError)
666 log_println("JVM_FindClassFromClassLoader: name=%s, init=%d, loader=%p, throwError=%d", name, init, loader, throwError);
669 c = load_class_from_classloader(utf_new_char(name), (java_objectheader *) loader);
675 if (!(c->state & CLASS_INITIALIZED))
676 if (!initialize_class(c))
683 /* JVM_FindClassFromClass */
685 jclass JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init, jclass from)
687 log_println("JVM_FindClassFromClass: IMPLEMENT ME!");
691 /* JVM_DefineClass */
693 jclass JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd)
695 log_println("JVM_DefineClass: IMPLEMENT ME!");
699 /* JVM_DefineClassWithSource */
701 jclass JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source)
704 log_println("JVM_DefineClassWithSource: name=%s, loader=%p, buf=%p, len=%d, pd=%p, source=%s", name, loader, buf, len, pd, source);
706 /* XXX do something with pd and source */
708 return (jclass) class_define(utf_new_char(name), (java_objectheader *) loader, len, (u1 *) buf);
713 /* JVM_FindLoadedClass */
715 jclass JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name)
721 cl = (classloader *) loader;
724 log_println("JVM_FindLoadedClass(loader=%p, name=%p)", loader, name);
727 u = javastring_toutf((java_objectheader *) name, true);
728 c = classcache_lookup(cl, u);
734 /* JVM_GetClassName */
736 jstring JVM_GetClassName(JNIEnv *env, jclass cls)
739 log_println("JVM_GetClassName: cls=%p", cls);
741 return (jstring) _Jv_java_lang_Class_getName((java_lang_Class *) cls);
745 /* JVM_GetClassInterfaces */
747 jobjectArray JVM_GetClassInterfaces(JNIEnv *env, jclass cls)
750 log_println("JVM_GetClassInterfaces: cls=%p", cls);
752 return (jobjectArray) _Jv_java_lang_Class_getInterfaces((java_lang_Class *) cls);
756 /* JVM_GetClassLoader */
758 jobject JVM_GetClassLoader(JNIEnv *env, jclass cls)
761 log_println("JVM_GetClassLoader: cls=%p", cls);
763 return (jobject) _Jv_java_lang_Class_getClassLoader((java_lang_Class *) cls);
767 /* JVM_IsInterface */
769 jboolean JVM_IsInterface(JNIEnv *env, jclass cls)
774 log_println("JVM_IsInterface: cls=%p", cls);
777 c = (classinfo *) cls;
779 return class_is_interface(c);
783 /* JVM_GetClassSigners */
785 jobjectArray JVM_GetClassSigners(JNIEnv *env, jclass cls)
787 log_println("JVM_GetClassSigners: IMPLEMENT ME!");
791 /* JVM_SetClassSigners */
793 void JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers)
795 log_println("JVM_SetClassSigners: IMPLEMENT ME!");
799 /* JVM_GetProtectionDomain */
801 jobject JVM_GetProtectionDomain(JNIEnv *env, jclass cls)
806 log_println("JVM_GetProtectionDomain: cls=%p");
809 c = (classinfo *) cls;
812 exceptions_throw_nullpointerexception();
816 /* Primitive types do not have a protection domain. */
818 if (class_is_primitive(c))
823 /* JVM_SetProtectionDomain */
825 void JVM_SetProtectionDomain(JNIEnv *env, jclass cls, jobject protection_domain)
827 log_println("JVM_SetProtectionDomain: IMPLEMENT ME!");
831 /* JVM_DoPrivileged */
833 jobject JVM_DoPrivileged(JNIEnv *env, jclass cls, jobject action, jobject context, jboolean wrapException)
835 java_objectheader *o;
838 java_objectheader *result;
839 java_objectheader *e;
842 log_println("JVM_DoPrivileged: action=%p, context=%p, wrapException=%d", action, context, wrapException);
845 o = (java_objectheader *) action;
848 if (action == NULL) {
849 exceptions_throw_nullpointerexception();
853 /* lookup run() method (throw no exceptions) */
855 m = class_resolveclassmethod(c, utf_run, utf_void__java_lang_Object, c,
858 if ((m == NULL) || !(m->flags & ACC_PUBLIC) || (m->flags & ACC_STATIC)) {
859 exceptions_throw_internalerror("No run method");
863 /* XXX It seems something with a privileged stack needs to be done
866 result = vm_call_method(m, o);
868 e = exceptions_get_and_clear_exception();
871 exceptions_throw_privilegedactionexception(e);
875 return (jobject) result;
879 /* JVM_GetInheritedAccessControlContext */
881 jobject JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls)
883 log_println("JVM_GetInheritedAccessControlContext: IMPLEMENT ME!");
887 /* JVM_GetStackAccessControlContext */
889 jobject JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls)
891 log_println("JVM_GetStackAccessControlContext: IMPLEMENT ME!");
895 /* JVM_IsArrayClass */
897 jboolean JVM_IsArrayClass(JNIEnv *env, jclass cls)
900 log_println("JVM_IsArrayClass: cls=%p", cls);
902 return class_is_array((classinfo *) cls);
906 /* JVM_IsPrimitiveClass */
908 jboolean JVM_IsPrimitiveClass(JNIEnv *env, jclass cls)
912 c = (classinfo *) cls;
915 log_println("JVM_IsPrimitiveClass(cls=%p)", cls);
918 return class_is_primitive(c);
922 /* JVM_GetComponentType */
924 jclass JVM_GetComponentType(JNIEnv *env, jclass cls)
927 log_println("JVM_GetComponentType: cls=%p", cls);
929 return (jclass) _Jv_java_lang_Class_getComponentType((java_lang_Class *) cls);
933 /* JVM_GetClassModifiers */
935 jint JVM_GetClassModifiers(JNIEnv *env, jclass cls)
940 log_println("JVM_GetClassModifiers: cls=%p", cls);
943 c = (classinfo *) cls;
945 /* XXX is this correct? */
947 return c->flags & ACC_CLASS_REFLECT_MASK;
951 /* JVM_GetDeclaredClasses */
953 jobjectArray JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass)
955 log_println("JVM_GetDeclaredClasses: IMPLEMENT ME!");
959 /* JVM_GetDeclaringClass */
961 jclass JVM_GetDeclaringClass(JNIEnv *env, jclass ofClass)
963 log_println("JVM_GetDeclaringClass: IMPLEMENT ME!");
967 /* JVM_GetClassSignature */
969 jstring JVM_GetClassSignature(JNIEnv *env, jclass cls)
971 log_println("JVM_GetClassSignature: IMPLEMENT ME!");
975 /* JVM_GetClassAnnotations */
977 jbyteArray JVM_GetClassAnnotations(JNIEnv *env, jclass cls)
979 log_println("JVM_GetClassAnnotations: IMPLEMENT ME!");
983 /* JVM_GetFieldAnnotations */
985 jbyteArray JVM_GetFieldAnnotations(JNIEnv *env, jobject field)
987 log_println("JVM_GetFieldAnnotations: IMPLEMENT ME!");
991 /* JVM_GetMethodAnnotations */
993 jbyteArray JVM_GetMethodAnnotations(JNIEnv *env, jobject method)
995 log_println("JVM_GetMethodAnnotations: IMPLEMENT ME!");
999 /* JVM_GetMethodDefaultAnnotationValue */
1001 jbyteArray JVM_GetMethodDefaultAnnotationValue(JNIEnv *env, jobject method)
1003 log_println("JVM_GetMethodDefaultAnnotationValue: IMPLEMENT ME!");
1007 /* JVM_GetMethodParameterAnnotations */
1009 jbyteArray JVM_GetMethodParameterAnnotations(JNIEnv *env, jobject method)
1011 log_println("JVM_GetMethodParameterAnnotations: IMPLEMENT ME!");
1015 /* JVM_GetClassDeclaredFields */
1017 jobjectArray JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, jboolean publicOnly)
1020 log_println("JVM_GetClassDeclaredFields: ofClass=%p, publicOnly=%d", ofClass, publicOnly);
1022 return (jobjectArray) _Jv_java_lang_Class_getDeclaredFields((java_lang_Class *) ofClass, publicOnly);
1026 /* JVM_GetClassDeclaredMethods */
1028 jobjectArray JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly)
1031 log_println("JVM_GetClassDeclaredMethods: ofClass=%p, publicOnly=%d", ofClass, publicOnly);
1033 return (jobjectArray) _Jv_java_lang_Class_getDeclaredMethods((java_lang_Class *) ofClass, publicOnly);
1037 /* JVM_GetClassDeclaredConstructors */
1039 jobjectArray JVM_GetClassDeclaredConstructors(JNIEnv *env, jclass ofClass, jboolean publicOnly)
1042 log_println("JVM_GetClassDeclaredConstructors: ofClass=%p, publicOnly=%d", ofClass, publicOnly);
1044 return (jobjectArray) _Jv_java_lang_Class_getDeclaredConstructors((java_lang_Class *) ofClass, publicOnly);
1048 /* JVM_GetClassAccessFlags */
1050 jint JVM_GetClassAccessFlags(JNIEnv *env, jclass cls)
1055 log_println("JVM_GetClassAccessFlags: cls=%p", cls);
1058 c = (classinfo *) cls;
1060 return c->flags & ACC_CLASS_REFLECT_MASK;
1064 /* JVM_GetClassConstantPool */
1066 jobject JVM_GetClassConstantPool(JNIEnv *env, jclass cls)
1068 log_println("JVM_GetClassConstantPool: IMPLEMENT ME!");
1072 /* JVM_ConstantPoolGetSize */
1074 jint JVM_ConstantPoolGetSize(JNIEnv *env, jobject unused, jobject jcpool)
1076 log_println("JVM_ConstantPoolGetSize: IMPLEMENT ME!");
1080 /* JVM_ConstantPoolGetClassAt */
1082 jclass JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1084 log_println("JVM_ConstantPoolGetClassAt: IMPLEMENT ME!");
1088 /* JVM_ConstantPoolGetClassAtIfLoaded */
1090 jclass JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1092 log_println("JVM_ConstantPoolGetClassAtIfLoaded: IMPLEMENT ME!");
1096 /* JVM_ConstantPoolGetMethodAt */
1098 jobject JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1100 log_println("JVM_ConstantPoolGetMethodAt: IMPLEMENT ME!");
1104 /* JVM_ConstantPoolGetMethodAtIfLoaded */
1106 jobject JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1108 log_println("JVM_ConstantPoolGetMethodAtIfLoaded: IMPLEMENT ME!");
1112 /* JVM_ConstantPoolGetFieldAt */
1114 jobject JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1116 log_println("JVM_ConstantPoolGetFieldAt: IMPLEMENT ME!");
1120 /* JVM_ConstantPoolGetFieldAtIfLoaded */
1122 jobject JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1124 log_println("JVM_ConstantPoolGetFieldAtIfLoaded: IMPLEMENT ME!");
1128 /* JVM_ConstantPoolGetMemberRefInfoAt */
1130 jobjectArray JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1132 log_println("JVM_ConstantPoolGetMemberRefInfoAt: IMPLEMENT ME!");
1136 /* JVM_ConstantPoolGetIntAt */
1138 jint JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1140 log_println("JVM_ConstantPoolGetIntAt: IMPLEMENT ME!");
1144 /* JVM_ConstantPoolGetLongAt */
1146 jlong JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1148 log_println("JVM_ConstantPoolGetLongAt: IMPLEMENT ME!");
1152 /* JVM_ConstantPoolGetFloatAt */
1154 jfloat JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1156 log_println("JVM_ConstantPoolGetFloatAt: IMPLEMENT ME!");
1160 /* JVM_ConstantPoolGetDoubleAt */
1162 jdouble JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1164 log_println("JVM_ConstantPoolGetDoubleAt: IMPLEMENT ME!");
1168 /* JVM_ConstantPoolGetStringAt */
1170 jstring JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1172 log_println("JVM_ConstantPoolGetStringAt: IMPLEMENT ME!");
1176 /* JVM_ConstantPoolGetUTF8At */
1178 jstring JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject unused, jobject jcpool, jint index)
1180 log_println("JVM_ConstantPoolGetUTF8At: IMPLEMENT ME!");
1184 /* JVM_DesiredAssertionStatus */
1186 jboolean JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls)
1188 log_println("JVM_DesiredAssertionStatus: cls=%p, IMPLEMENT ME!", cls);
1194 /* JVM_AssertionStatusDirectives */
1196 jobject JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused)
1199 java_lang_AssertionStatusDirectives *o;
1200 java_objectarray *classes;
1201 java_objectarray *packages;
1204 log_println("JVM_AssertionStatusDirectives");
1206 /* XXX this is not completely implemented */
1208 c = load_class_bootstrap(utf_new_char("java/lang/AssertionStatusDirectives"));
1213 o = (java_lang_AssertionStatusDirectives *) builtin_new(c);
1218 classes = builtin_anewarray(0, class_java_lang_Object);
1220 if (classes == NULL)
1223 packages = builtin_anewarray(0, class_java_lang_Object);
1225 if (packages == NULL)
1228 /* set instance fields */
1230 o->classes = classes;
1231 o->packages = packages;
1237 /* JVM_GetClassNameUTF */
1239 const char* JVM_GetClassNameUTF(JNIEnv *env, jclass cls)
1241 log_println("JVM_GetClassNameUTF: IMPLEMENT ME!");
1245 /* JVM_GetClassCPTypes */
1247 void JVM_GetClassCPTypes(JNIEnv *env, jclass cls, unsigned char *types)
1249 log_println("JVM_GetClassCPTypes: IMPLEMENT ME!");
1253 /* JVM_GetClassCPEntriesCount */
1255 jint JVM_GetClassCPEntriesCount(JNIEnv *env, jclass cls)
1257 log_println("JVM_GetClassCPEntriesCount: IMPLEMENT ME!");
1261 /* JVM_GetClassFieldsCount */
1263 jint JVM_GetClassFieldsCount(JNIEnv *env, jclass cls)
1265 log_println("JVM_GetClassFieldsCount: IMPLEMENT ME!");
1269 /* JVM_GetClassMethodsCount */
1271 jint JVM_GetClassMethodsCount(JNIEnv *env, jclass cls)
1273 log_println("JVM_GetClassMethodsCount: IMPLEMENT ME!");
1277 /* JVM_GetMethodIxExceptionIndexes */
1279 void JVM_GetMethodIxExceptionIndexes(JNIEnv *env, jclass cls, jint method_index, unsigned short *exceptions)
1281 log_println("JVM_GetMethodIxExceptionIndexes: IMPLEMENT ME!");
1285 /* JVM_GetMethodIxExceptionsCount */
1287 jint JVM_GetMethodIxExceptionsCount(JNIEnv *env, jclass cls, jint method_index)
1289 log_println("JVM_GetMethodIxExceptionsCount: IMPLEMENT ME!");
1293 /* JVM_GetMethodIxByteCode */
1295 void JVM_GetMethodIxByteCode(JNIEnv *env, jclass cls, jint method_index, unsigned char *code)
1297 log_println("JVM_GetMethodIxByteCode: IMPLEMENT ME!");
1301 /* JVM_GetMethodIxByteCodeLength */
1303 jint JVM_GetMethodIxByteCodeLength(JNIEnv *env, jclass cls, jint method_index)
1305 log_println("JVM_GetMethodIxByteCodeLength: IMPLEMENT ME!");
1309 /* JVM_GetMethodIxExceptionTableEntry */
1311 void JVM_GetMethodIxExceptionTableEntry(JNIEnv *env, jclass cls, jint method_index, jint entry_index, JVM_ExceptionTableEntryType *entry)
1313 log_println("JVM_GetMethodIxExceptionTableEntry: IMPLEMENT ME!");
1317 /* JVM_GetMethodIxExceptionTableLength */
1319 jint JVM_GetMethodIxExceptionTableLength(JNIEnv *env, jclass cls, int method_index)
1321 log_println("JVM_GetMethodIxExceptionTableLength: IMPLEMENT ME!");
1325 /* JVM_GetMethodIxModifiers */
1327 jint JVM_GetMethodIxModifiers(JNIEnv *env, jclass cls, int method_index)
1329 log_println("JVM_GetMethodIxModifiers: IMPLEMENT ME!");
1333 /* JVM_GetFieldIxModifiers */
1335 jint JVM_GetFieldIxModifiers(JNIEnv *env, jclass cls, int field_index)
1337 log_println("JVM_GetFieldIxModifiers: IMPLEMENT ME!");
1341 /* JVM_GetMethodIxLocalsCount */
1343 jint JVM_GetMethodIxLocalsCount(JNIEnv *env, jclass cls, int method_index)
1345 log_println("JVM_GetMethodIxLocalsCount: IMPLEMENT ME!");
1349 /* JVM_GetMethodIxArgsSize */
1351 jint JVM_GetMethodIxArgsSize(JNIEnv *env, jclass cls, int method_index)
1353 log_println("JVM_GetMethodIxArgsSize: IMPLEMENT ME!");
1357 /* JVM_GetMethodIxMaxStack */
1359 jint JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cls, int method_index)
1361 log_println("JVM_GetMethodIxMaxStack: IMPLEMENT ME!");
1365 /* JVM_IsConstructorIx */
1367 jboolean JVM_IsConstructorIx(JNIEnv *env, jclass cls, int method_index)
1369 log_println("JVM_IsConstructorIx: IMPLEMENT ME!");
1373 /* JVM_GetMethodIxNameUTF */
1375 const char* JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cls, jint method_index)
1377 log_println("JVM_GetMethodIxNameUTF: IMPLEMENT ME!");
1381 /* JVM_GetMethodIxSignatureUTF */
1383 const char* JVM_GetMethodIxSignatureUTF(JNIEnv *env, jclass cls, jint method_index)
1385 log_println("JVM_GetMethodIxSignatureUTF: IMPLEMENT ME!");
1389 /* JVM_GetCPFieldNameUTF */
1391 const char* JVM_GetCPFieldNameUTF(JNIEnv *env, jclass cls, jint cp_index)
1393 log_println("JVM_GetCPFieldNameUTF: IMPLEMENT ME!");
1397 /* JVM_GetCPMethodNameUTF */
1399 const char* JVM_GetCPMethodNameUTF(JNIEnv *env, jclass cls, jint cp_index)
1401 log_println("JVM_GetCPMethodNameUTF: IMPLEMENT ME!");
1405 /* JVM_GetCPMethodSignatureUTF */
1407 const char* JVM_GetCPMethodSignatureUTF(JNIEnv *env, jclass cls, jint cp_index)
1409 log_println("JVM_GetCPMethodSignatureUTF: IMPLEMENT ME!");
1413 /* JVM_GetCPFieldSignatureUTF */
1415 const char* JVM_GetCPFieldSignatureUTF(JNIEnv *env, jclass cls, jint cp_index)
1417 log_println("JVM_GetCPFieldSignatureUTF: IMPLEMENT ME!");
1421 /* JVM_GetCPClassNameUTF */
1423 const char* JVM_GetCPClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
1425 log_println("JVM_GetCPClassNameUTF: IMPLEMENT ME!");
1429 /* JVM_GetCPFieldClassNameUTF */
1431 const char* JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
1433 log_println("JVM_GetCPFieldClassNameUTF: IMPLEMENT ME!");
1437 /* JVM_GetCPMethodClassNameUTF */
1439 const char* JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
1441 log_println("JVM_GetCPMethodClassNameUTF: IMPLEMENT ME!");
1445 /* JVM_GetCPFieldModifiers */
1447 jint JVM_GetCPFieldModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls)
1449 log_println("JVM_GetCPFieldModifiers: IMPLEMENT ME!");
1453 /* JVM_GetCPMethodModifiers */
1455 jint JVM_GetCPMethodModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls)
1457 log_println("JVM_GetCPMethodModifiers: IMPLEMENT ME!");
1461 /* JVM_ReleaseUTF */
1463 void JVM_ReleaseUTF(const char *utf)
1465 log_println("JVM_ReleaseUTF: IMPLEMENT ME!");
1469 /* JVM_IsSameClassPackage */
1471 jboolean JVM_IsSameClassPackage(JNIEnv *env, jclass class1, jclass class2)
1473 log_println("JVM_IsSameClassPackage: IMPLEMENT ME!");
1479 jint JVM_Open(const char *fname, jint flags, jint mode)
1484 log_println("JVM_Open: fname=%s, flags=%d, mode=%d", fname, flags, mode);
1487 result = open(fname, flags, mode);
1495 /* XXX don't know what to do here */
1496 /* return JVM_EEXIST; */
1507 jint JVM_Close(jint fd)
1510 log_println("JVM_Close: fd=%d", fd);
1518 jint JVM_Read(jint fd, char *buf, jint nbytes)
1521 log_println("JVM_Read: fd=%d, buf=%p, nbytes=%d", fd, buf, nbytes);
1523 return read(fd, buf, nbytes);
1529 jint JVM_Write(jint fd, char *buf, jint nbytes)
1532 log_println("JVM_Write: fd=%d, buf=%s, nbytes=%d", fd, buf, nbytes);
1534 return write(fd, buf, nbytes);
1540 jint JVM_Available(jint fd, jlong *pbytes)
1542 #if defined(FIONREAD)
1547 if (ioctl(fd, FIONREAD, (char *) &n) != 0)
1553 #elif defined(HAVE_FSTAT)
1554 struct stat statBuffer;
1560 if ((fstat(fd, &statBuffer) == 0) && S_ISREG (statBuffer.st_mode)) {
1561 n = lseek (fd, 0, SEEK_CUR);
1564 *pbytes = statBuffer.st_size - n;
1576 #elif defined(HAVE_SELECT)
1577 fd_set filedescriptset;
1583 FD_ZERO(&filedescriptset);
1584 FD_SET(fd, &filedescriptset);
1585 memset(&tv, 0, sizeof(tv));
1587 switch (select(fd+1, &filedescriptset, NULL, NULL, &tv))
1594 result = CPNATIVE_OK;
1598 result = CPNATIVE_OK;
1611 jlong JVM_Lseek(jint fd, jlong offset, jint whence)
1614 log_println("JVM_Lseek: fd=%d, offset=%ld, whence=%d", fd, offset, whence);
1616 return (jlong) lseek(fd, (off_t) offset, whence);
1622 jint JVM_SetLength(jint fd, jlong length)
1624 log_println("JVM_SetLength: IMPLEMENT ME!");
1630 jint JVM_Sync(jint fd)
1632 log_println("JVM_Sync: IMPLEMENT ME!");
1636 /* JVM_StartThread */
1638 void JVM_StartThread(JNIEnv* env, jobject jthread)
1641 log_println("JVM_StartThread: jthread=%p", jthread);
1643 _Jv_java_lang_Thread_start((java_lang_Thread *) jthread, 0);
1647 /* JVM_StopThread */
1649 void JVM_StopThread(JNIEnv* env, jobject jthread, jobject throwable)
1651 log_println("JVM_StopThread: IMPLEMENT ME!");
1655 /* JVM_IsThreadAlive */
1657 jboolean JVM_IsThreadAlive(JNIEnv* env, jobject jthread)
1660 log_println("JVM_IsThreadAlive: jthread=%p", jthread);
1662 return _Jv_java_lang_Thread_isAlive((java_lang_Thread *) jthread);
1666 /* JVM_SuspendThread */
1668 void JVM_SuspendThread(JNIEnv* env, jobject jthread)
1670 log_println("JVM_SuspendThread: IMPLEMENT ME!");
1674 /* JVM_ResumeThread */
1676 void JVM_ResumeThread(JNIEnv* env, jobject jthread)
1678 log_println("JVM_ResumeThread: IMPLEMENT ME!");
1682 /* JVM_SetThreadPriority */
1684 void JVM_SetThreadPriority(JNIEnv* env, jobject jthread, jint prio)
1687 log_println("JVM_SetThreadPriority: jthread=%p, prio=%d", jthread, prio);
1689 _Jv_java_lang_Thread_setPriority((java_lang_Thread *) jthread, prio);
1695 void JVM_Yield(JNIEnv *env, jclass threadClass)
1697 log_println("JVM_Yield: IMPLEMENT ME!");
1703 void JVM_Sleep(JNIEnv* env, jclass threadClass, jlong millis)
1706 log_println("JVM_Sleep: threadClass=%p, millis=%ld", threadClass, millis);
1708 _Jv_java_lang_Thread_sleep(millis);
1712 /* JVM_CurrentThread */
1714 jobject JVM_CurrentThread(JNIEnv* env, jclass threadClass)
1717 log_println("JVM_CurrentThread: threadClass=%p", threadClass);
1719 return (jobject) _Jv_java_lang_Thread_currentThread();
1723 /* JVM_CountStackFrames */
1725 jint JVM_CountStackFrames(JNIEnv* env, jobject jthread)
1727 log_println("JVM_CountStackFrames: IMPLEMENT ME!");
1733 void JVM_Interrupt(JNIEnv* env, jobject jthread)
1735 log_println("JVM_Interrupt: IMPLEMENT ME!");
1739 /* JVM_IsInterrupted */
1741 jboolean JVM_IsInterrupted(JNIEnv* env, jobject jthread, jboolean clear_interrupted)
1744 log_println("JVM_IsInterrupted: jthread=%p, clear_interrupted=%d", jthread, clear_interrupted);
1746 /* XXX do something with clear_interrupted */
1747 return _Jv_java_lang_Thread_isInterrupted((java_lang_Thread *) jthread);
1753 jboolean JVM_HoldsLock(JNIEnv* env, jclass threadClass, jobject obj)
1755 log_println("JVM_HoldsLock: IMPLEMENT ME!");
1759 /* JVM_DumpAllStacks */
1761 void JVM_DumpAllStacks(JNIEnv* env, jclass unused)
1763 log_println("JVM_DumpAllStacks: IMPLEMENT ME!");
1767 /* JVM_CurrentLoadedClass */
1769 jclass JVM_CurrentLoadedClass(JNIEnv *env)
1771 log_println("JVM_CurrentLoadedClass: IMPLEMENT ME!");
1775 /* JVM_CurrentClassLoader */
1777 jobject JVM_CurrentClassLoader(JNIEnv *env)
1779 log_println("JVM_CurrentClassLoader: IMPLEMENT ME!");
1783 /* JVM_GetClassContext */
1785 jobjectArray JVM_GetClassContext(JNIEnv *env)
1788 log_println("JVM_GetClassContext");
1790 return (jobjectArray) stacktrace_getClassContext();
1794 /* JVM_ClassDepth */
1796 jint JVM_ClassDepth(JNIEnv *env, jstring name)
1798 log_println("JVM_ClassDepth: IMPLEMENT ME!");
1802 /* JVM_ClassLoaderDepth */
1804 jint JVM_ClassLoaderDepth(JNIEnv *env)
1806 log_println("JVM_ClassLoaderDepth: IMPLEMENT ME!");
1810 /* JVM_GetSystemPackage */
1812 jstring JVM_GetSystemPackage(JNIEnv *env, jstring name)
1814 log_println("JVM_GetSystemPackage: IMPLEMENT ME!");
1818 /* JVM_GetSystemPackages */
1820 jobjectArray JVM_GetSystemPackages(JNIEnv *env)
1822 log_println("JVM_GetSystemPackages: IMPLEMENT ME!");
1826 /* JVM_AllocateNewObject */
1828 jobject JVM_AllocateNewObject(JNIEnv *env, jobject receiver, jclass currClass, jclass initClass)
1830 log_println("JVM_AllocateNewObject: IMPLEMENT ME!");
1834 /* JVM_AllocateNewArray */
1836 jobject JVM_AllocateNewArray(JNIEnv *env, jobject obj, jclass currClass, jint length)
1838 log_println("JVM_AllocateNewArray: IMPLEMENT ME!");
1842 /* JVM_LatestUserDefinedLoader */
1844 jobject JVM_LatestUserDefinedLoader(JNIEnv *env)
1846 log_println("JVM_LatestUserDefinedLoader: IMPLEMENT ME!");
1850 /* JVM_LoadClass0 */
1852 jclass JVM_LoadClass0(JNIEnv *env, jobject receiver, jclass currClass, jstring currClassName)
1854 log_println("JVM_LoadClass0: IMPLEMENT ME!");
1858 /* JVM_GetArrayLength */
1860 jint JVM_GetArrayLength(JNIEnv *env, jobject arr)
1862 java_arrayheader *a;
1864 TRACEJVMCALLS("JVM_GetArrayLength(arr=%p)", arr);
1866 a = (java_arrayheader *) arr;
1869 exceptions_throw_nullpointerexception();
1873 if (!class_is_array(a->objheader.vftbl->class)) {
1874 /* exceptions_throw_illegalargumentexception("Argument is not an array"); */
1875 exceptions_throw_illegalargumentexception();
1883 /* JVM_GetArrayElement */
1885 jobject JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index)
1887 log_println("JVM_GetArrayElement: IMPLEMENT ME!");
1891 /* JVM_GetPrimitiveArrayElement */
1893 jvalue JVM_GetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jint wCode)
1895 log_println("JVM_GetPrimitiveArrayElement: IMPLEMENT ME!");
1899 /* JVM_SetArrayElement */
1901 void JVM_SetArrayElement(JNIEnv *env, jobject arr, jint index, jobject val)
1903 log_println("JVM_SetArrayElement: IMPLEMENT ME!");
1907 /* JVM_SetPrimitiveArrayElement */
1909 void JVM_SetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jvalue v, unsigned char vCode)
1911 log_println("JVM_SetPrimitiveArrayElement: IMPLEMENT ME!");
1917 jobject JVM_NewArray(JNIEnv *env, jclass eltClass, jint length)
1921 java_arrayheader *a;
1922 java_objectarray *oa;
1924 c = (classinfo *) eltClass;
1927 log_println("JVM_NewArray(eltClass=%p, length=%d)", eltClass, length);
1930 /* create primitive or object array */
1932 if (class_is_primitive(c)) {
1933 pc = primitive_arrayclass_get_by_name(c->name);
1934 a = builtin_newarray(length, pc);
1939 oa = builtin_anewarray(length, c);
1941 return (jobject) oa;
1946 /* JVM_NewMultiArray */
1948 jobject JVM_NewMultiArray(JNIEnv *env, jclass eltClass, jintArray dim)
1950 log_println("JVM_NewMultiArray: IMPLEMENT ME!");
1954 /* JVM_InitializeSocketLibrary */
1956 jint JVM_InitializeSocketLibrary()
1958 log_println("JVM_InitializeSocketLibrary: IMPLEMENT ME!");
1964 jint JVM_Socket(jint domain, jint type, jint protocol)
1967 log_println("JVM_Socket: domain=%d, type=%d, protocol=%d", domain, type, protocol);
1969 return socket(domain, type, protocol);
1973 /* JVM_SocketClose */
1975 jint JVM_SocketClose(jint fd)
1978 log_println("JVM_SocketClose: fd=%d", fd);
1984 /* JVM_SocketShutdown */
1986 jint JVM_SocketShutdown(jint fd, jint howto)
1989 log_println("JVM_SocketShutdown: fd=%d, howto=%d", fd, howto);
1991 return shutdown(fd, howto);
1997 jint JVM_Recv(jint fd, char *buf, jint nBytes, jint flags)
1999 log_println("JVM_Recv: IMPLEMENT ME!");
2005 jint JVM_Send(jint fd, char *buf, jint nBytes, jint flags)
2007 log_println("JVM_Send: IMPLEMENT ME!");
2013 jint JVM_Timeout(int fd, long timeout)
2015 log_println("JVM_Timeout: IMPLEMENT ME!");
2021 jint JVM_Listen(jint fd, jint count)
2024 log_println("JVM_Listen: fd=%d, count=%d", fd, count);
2026 return listen(fd, count);
2032 jint JVM_Connect(jint fd, struct sockaddr *him, jint len)
2035 log_println("JVM_Connect: fd=%d, him=%p, len=%d", fd, him, len);
2037 return connect(fd, him, len);
2043 jint JVM_Bind(jint fd, struct sockaddr *him, jint len)
2045 log_println("JVM_Bind: IMPLEMENT ME!");
2051 jint JVM_Accept(jint fd, struct sockaddr *him, jint *len)
2054 log_println("JVM_Accept: fd=%d, him=%p, len=%p", fd, him, len);
2056 return accept(fd, him, (socklen_t *) len);
2062 jint JVM_RecvFrom(jint fd, char *buf, int nBytes, int flags, struct sockaddr *from, int *fromlen)
2064 log_println("JVM_RecvFrom: IMPLEMENT ME!");
2068 /* JVM_GetSockName */
2070 jint JVM_GetSockName(jint fd, struct sockaddr *him, int *len)
2073 log_println("JVM_GetSockName: fd=%d, him=%p, len=%p", fd, him, len);
2075 return getsockname(fd, him, (socklen_t *) len);
2081 jint JVM_SendTo(jint fd, char *buf, int len, int flags, struct sockaddr *to, int tolen)
2083 log_println("JVM_SendTo: IMPLEMENT ME!");
2087 /* JVM_SocketAvailable */
2089 jint JVM_SocketAvailable(jint fd, jint *pbytes)
2091 log_println("JVM_SocketAvailable: IMPLEMENT ME!");
2095 /* JVM_GetSockOpt */
2097 jint JVM_GetSockOpt(jint fd, int level, int optname, char *optval, int *optlen)
2099 log_println("JVM_GetSockOpt: IMPLEMENT ME!");
2103 /* JVM_SetSockOpt */
2105 jint JVM_SetSockOpt(jint fd, int level, int optname, const char *optval, int optlen)
2108 log_println("JVM_SetSockOpt: fd=%d, level=%d, optname=%d, optval=%s, optlen=%d", fd, level, optname, optval, optlen);
2110 return setsockopt(fd, level, optname, optval, optlen);
2114 /* JVM_GetHostName */
2116 int JVM_GetHostName(char* name, int namelen)
2119 log_println("JVM_GetHostName: name=%s, namelen=%d", name, namelen);
2121 return gethostname(name, namelen);
2125 /* JVM_GetHostByAddr */
2127 struct hostent* JVM_GetHostByAddr(const char* name, int len, int type)
2129 log_println("JVM_GetHostByAddr: IMPLEMENT ME!");
2133 /* JVM_GetHostByName */
2135 struct hostent* JVM_GetHostByName(char* name)
2137 log_println("JVM_GetHostByName: IMPLEMENT ME!");
2141 /* JVM_GetProtoByName */
2143 struct protoent* JVM_GetProtoByName(char* name)
2145 log_println("JVM_GetProtoByName: IMPLEMENT ME!");
2149 /* JVM_LoadLibrary */
2151 void* JVM_LoadLibrary(const char* name)
2154 log_println("JVM_LoadLibrary: name=%s", name);
2156 return native_library_open(utf_new_char(name));
2160 /* JVM_UnloadLibrary */
2162 void JVM_UnloadLibrary(void* handle)
2164 log_println("JVM_UnloadLibrary: IMPLEMENT ME!");
2168 /* JVM_FindLibraryEntry */
2170 void* JVM_FindLibraryEntry(void* handle, const char* name)
2175 log_println("JVM_FindLibraryEntry: handle=%p, name=%s", handle, name);
2178 symbol = lt_dlsym(handle, name);
2186 jboolean JVM_IsNaN(jdouble a)
2188 log_println("JVM_IsNaN: IMPLEMENT ME!");
2192 /* JVM_IsSupportedJNIVersion */
2194 jboolean JVM_IsSupportedJNIVersion(jint version)
2197 log_println("JVM_IsSupportedJNIVersion: version=%d", version);
2200 case JNI_VERSION_1_1:
2201 case JNI_VERSION_1_2:
2202 case JNI_VERSION_1_4:
2210 /* JVM_InternString */
2212 jstring JVM_InternString(JNIEnv *env, jstring str)
2215 log_println("JVM_InternString: str=%p", str);
2217 return (jstring) _Jv_java_lang_String_intern((java_lang_String *) str);
2221 /* JVM_RawMonitorCreate */
2223 JNIEXPORT void* JNICALL JVM_RawMonitorCreate(void)
2225 java_objectheader *o;
2228 log_println("JVM_RawMonitorCreate");
2231 o = NEW(java_objectheader);
2233 lock_init_object_lock(o);
2239 /* JVM_RawMonitorDestroy */
2241 JNIEXPORT void JNICALL JVM_RawMonitorDestroy(void *mon)
2244 log_println("JVM_RawMonitorDestroy: mon=%p", mon);
2246 FREE(mon, java_objectheader);
2250 /* JVM_RawMonitorEnter */
2252 JNIEXPORT jint JNICALL JVM_RawMonitorEnter(void *mon)
2255 log_println("JVM_RawMonitorEnter: mon=%p", mon);
2257 (void) lock_monitor_enter((java_objectheader *) mon);
2263 /* JVM_RawMonitorExit */
2265 JNIEXPORT void JNICALL JVM_RawMonitorExit(void *mon)
2268 log_println("JVM_RawMonitorExit: mon=%p", mon);
2270 (void) lock_monitor_exit((java_objectheader *) mon);
2274 /* JVM_SetPrimitiveFieldValues */
2276 void JVM_SetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)
2278 log_println("JVM_SetPrimitiveFieldValues: IMPLEMENT ME!");
2282 /* JVM_GetPrimitiveFieldValues */
2284 void JVM_GetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)
2286 log_println("JVM_GetPrimitiveFieldValues: IMPLEMENT ME!");
2290 /* JVM_AccessVMBooleanFlag */
2292 jboolean JVM_AccessVMBooleanFlag(const char* name, jboolean* value, jboolean is_get)
2294 log_println("JVM_AccessVMBooleanFlag: IMPLEMENT ME!");
2298 /* JVM_AccessVMIntFlag */
2300 jboolean JVM_AccessVMIntFlag(const char* name, jint* value, jboolean is_get)
2302 log_println("JVM_AccessVMIntFlag: IMPLEMENT ME!");
2306 /* JVM_VMBreakPoint */
2308 void JVM_VMBreakPoint(JNIEnv *env, jobject obj)
2310 log_println("JVM_VMBreakPoint: IMPLEMENT ME!");
2314 /* JVM_GetClassFields */
2316 jobjectArray JVM_GetClassFields(JNIEnv *env, jclass cls, jint which)
2318 log_println("JVM_GetClassFields: IMPLEMENT ME!");
2322 /* JVM_GetClassMethods */
2324 jobjectArray JVM_GetClassMethods(JNIEnv *env, jclass cls, jint which)
2326 log_println("JVM_GetClassMethods: IMPLEMENT ME!");
2330 /* JVM_GetClassConstructors */
2332 jobjectArray JVM_GetClassConstructors(JNIEnv *env, jclass cls, jint which)
2334 log_println("JVM_GetClassConstructors: IMPLEMENT ME!");
2338 /* JVM_GetClassField */
2340 jobject JVM_GetClassField(JNIEnv *env, jclass cls, jstring name, jint which)
2342 log_println("JVM_GetClassField: IMPLEMENT ME!");
2346 /* JVM_GetClassMethod */
2348 jobject JVM_GetClassMethod(JNIEnv *env, jclass cls, jstring name, jobjectArray types, jint which)
2350 log_println("JVM_GetClassMethod: IMPLEMENT ME!");
2354 /* JVM_GetClassConstructor */
2356 jobject JVM_GetClassConstructor(JNIEnv *env, jclass cls, jobjectArray types, jint which)
2358 log_println("JVM_GetClassConstructor: IMPLEMENT ME!");
2362 /* JVM_NewInstance */
2364 jobject JVM_NewInstance(JNIEnv *env, jclass cls)
2366 log_println("JVM_NewInstance: IMPLEMENT ME!");
2372 jobject JVM_GetField(JNIEnv *env, jobject field, jobject obj)
2374 log_println("JVM_GetField: IMPLEMENT ME!");
2378 /* JVM_GetPrimitiveField */
2380 jvalue JVM_GetPrimitiveField(JNIEnv *env, jobject field, jobject obj, unsigned char wCode)
2382 log_println("JVM_GetPrimitiveField: IMPLEMENT ME!");
2388 void JVM_SetField(JNIEnv *env, jobject field, jobject obj, jobject val)
2390 log_println("JVM_SetField: IMPLEMENT ME!");
2394 /* JVM_SetPrimitiveField */
2396 void JVM_SetPrimitiveField(JNIEnv *env, jobject field, jobject obj, jvalue v, unsigned char vCode)
2398 log_println("JVM_SetPrimitiveField: IMPLEMENT ME!");
2402 /* JVM_InvokeMethod */
2404 jobject JVM_InvokeMethod(JNIEnv *env, jobject method, jobject obj, jobjectArray args0)
2407 log_println("JVM_InvokeMethod: method=%p, obj=%p, args0=%p", method, obj, args0);
2409 return (jobject) _Jv_java_lang_reflect_Method_invoke((java_lang_reflect_Method *) method, (java_lang_Object *) obj, (java_objectarray *) args0);
2413 /* JVM_NewInstanceFromConstructor */
2415 jobject JVM_NewInstanceFromConstructor(JNIEnv *env, jobject c, jobjectArray args0)
2418 log_println("JVM_NewInstanceFromConstructor: c=%p, args0=%p", c, args0);
2420 return (jobject) _Jv_java_lang_reflect_Constructor_newInstance(env, (java_lang_reflect_Constructor *) c, (java_objectarray *) args0);
2424 /* JVM_SupportsCX8 */
2426 jboolean JVM_SupportsCX8()
2429 log_println("JVM_SupportsCX8");
2431 return _Jv_java_util_concurrent_atomic_AtomicLong_VMSupportsCS8(NULL, NULL);
2437 jboolean JVM_CX8Field(JNIEnv *env, jobject obj, jfieldID fid, jlong oldVal, jlong newVal)
2439 log_println("JVM_CX8Field: IMPLEMENT ME!");
2443 /* JVM_GetAllThreads */
2445 jobjectArray JVM_GetAllThreads(JNIEnv *env, jclass dummy)
2447 log_println("JVM_GetAllThreads: IMPLEMENT ME!");
2451 /* JVM_DumpThreads */
2453 jobjectArray JVM_DumpThreads(JNIEnv *env, jclass threadClass, jobjectArray threads)
2455 log_println("JVM_DumpThreads: IMPLEMENT ME!");
2459 /* JVM_GetManagement */
2461 void* JVM_GetManagement(jint version)
2463 log_println("JVM_GetManagement: IMPLEMENT ME!");
2467 /* JVM_InitAgentProperties */
2469 jobject JVM_InitAgentProperties(JNIEnv *env, jobject properties)
2471 log_println("JVM_InitAgentProperties: IMPLEMENT ME!");
2475 /* JVM_GetEnclosingMethodInfo */
2477 jobjectArray JVM_GetEnclosingMethodInfo(JNIEnv *env, jclass ofClass)
2479 log_println("JVM_GetEnclosingMethodInfo: IMPLEMENT ME!");
2483 /* JVM_GetThreadStateValues */
2485 jintArray JVM_GetThreadStateValues(JNIEnv* env, jint javaThreadState)
2487 log_println("JVM_GetThreadStateValues: IMPLEMENT ME!");
2491 /* JVM_GetThreadStateValues */
2493 jobjectArray JVM_GetThreadStateNames(JNIEnv* env, jint javaThreadState, jintArray values)
2495 log_println("JVM_GetThreadStateValues: IMPLEMENT ME!");
2499 /* JVM_GetVersionInfo */
2501 void JVM_GetVersionInfo(JNIEnv* env, jvm_version_info* info, size_t info_size)
2503 log_println("JVM_GetVersionInfo: IMPLEMENT ME!");
2507 /* OS: JVM_RegisterSignal */
2509 void* JVM_RegisterSignal(jint sig, void* handler)
2511 log_println("JVM_RegisterSignal: sig=%d, handler=%p, IMPLEMENT ME!", sig, handler);
2516 /* OS: JVM_FindSignal */
2518 jint JVM_FindSignal(const char *name)
2520 log_println("JVM_FindSignal: name=%s", name);
2526 * These are local overrides for various environment variables in Emacs.
2527 * Please do not remove this and leave it at the end of the file, where
2528 * Emacs will automagically detect them.
2529 * ---------------------------------------------------------------------
2532 * indent-tabs-mode: t