38 #if defined(HAVE_SYS_IOCTL_H)
40 #include <sys/ioctl.h>
43 #include <sys/types.h>
51 #include INCLUDE_JVM_MD_H
52 #include INCLUDE_JVM_H
54 #include "fdlibm/fdlibm.h"
63 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
77 #if defined(ENABLE_ASSERTION)
105 # define TRACEJVMCALLS(x) \
107 if (opt_TraceJVMCalls || opt_TraceJVMCallsVerbose) { \
112 # define TRACEJVMCALLSENTER(x) \
114 if (opt_TraceJVMCalls || opt_TraceJVMCallsVerbose) { \
120 # define TRACEJVMCALLSEXIT(x) \
122 if (opt_TraceJVMCalls || opt_TraceJVMCallsVerbose) { \
128 # define TRACEJVMCALLSVERBOSE(x) \
130 if (opt_TraceJVMCallsVerbose) { \
135 # define PRINTJVMWARNINGS(x) \
137 if (opt_PrintWarnings) { \
144 # define TRACEJVMCALLS(x)
145 # define TRACEJVMCALLSENTER(x)
146 # define TRACEJVMCALLSEXIT(x)
147 # define TRACEJVMCALLSVERBOSE(x)
148 # define PRINTJVMWARNINGS(x)
158 if ((intptr_t) count <= 0)
161 return vsnprintf(str, count, fmt, args);
208 #define JVM_INTERFACE_VERSION 4
218 TRACEJVMCALLS((
"JVM_CurrentTimeMillis(env=%p, ignored=%p)", env, ignored));
228 TRACEJVMCALLS((
"JVM_NanoTime(env=%p, ignored=%p)", env, ignored));
244 TRACEJVMCALLSVERBOSE((
"JVM_ArrayCopy(env=%p, ignored=%p, src=%p, src_pos=%d, dst=%p, dst_pos=%d, length=%d)", env, ignored, src, src_pos, dst, dst_pos, length));
257 TRACEJVMCALLS((
"JVM_InitProperties(env=%p, properties=%p)", env, properties));
299 log_println(
"JVM_OnExit(void (*func): IMPLEMENT ME!");
317 log_println(
"JVM_MaxObjectInspectionAge: IMPLEMENT ME!");
327 log_println(
"JVM_TraceInstructions: IMPLEMENT ME!");
335 log_println(
"JVM_TraceMethodCalls: IMPLEMENT ME!");
383 TRACEJVMCALLS((
"JVM_FillInStackTrace(env=%p, receiver=%p)", env, receiver));
406 TRACEJVMCALLS((
"JVM_GetStackTraceDepth(env=%p, throwable=%p)", env, throwable));
439 TRACEJVMCALLS((
"JVM_GetStackTraceElement(env=%p, throwable=%p, index=%d)", env, throwable, index));
456 TRACEJVMCALLS((
"JVM_IHashCode(env=%p, jobject=%p)", env, handle));
468 TRACEJVMCALLS((
"JVM_MonitorWait(env=%p, handle=%p, ms=%ld)", env, handle, ms));
483 TRACEJVMCALLS((
"JVM_MonitorNotify(env=%p, handle=%p)", env, handle));
493 TRACEJVMCALLS((
"JVM_MonitorNotifyAll(env=%p, handle=%p)", env, handle));
503 TRACEJVMCALLS((
"JVM_Clone(env=%p, handle=%p)", env, handle));
513 log_println(
"JVM_InitializeCompiler : IMPLEMENT ME!");
521 log_println(
"JVM_IsSilentCompiler: IMPLEMENT ME!");
561 TRACEJVMCALLS((
"JVM_EnableCompiler(env=%p, compCls=%p)", env, compCls));
570 TRACEJVMCALLS((
"JVM_DisableCompiler(env=%p, compCls=%p)", env, compCls));
579 TRACEJVMCALLS((
"JVM_GetLastErrorString(buf=%p, len=%d", buf, len));
581 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
583 return hpi.
get_system().GetLastErrorString(buf, len);
597 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
599 return hpi.
get_file().NativePath(path);
612 TRACEJVMCALLS((
"JVM_GetCallerClass(env=%p, depth=%d)", env, depth));
624 TRACEJVMCALLS((
"JVM_FindPrimitiveClass(env=%p, s=%s)", env, s));
637 TRACEJVMCALLS((
"JVM_ResolveClass(env=%p, cls=%p)", env, cls));
646 TRACEJVMCALLS((
"JVM_FindClassFromBootLoader(name=%s)", name));
662 TRACEJVMCALLS((
"JVM_FindClassFromCaller(name=%s, init=%d, loader=%p, caller=%p)", name, init, loader, caller));
683 TRACEJVMCALLS((
"JVM_FindClassFromClassLoader(name=%s, init=%d, loader=%p, throwError=%d)", name, init, loader, throwError));
688 assert(throwError ==
false);
711 log_println(
"JVM_FindClassFromClass: IMPLEMENT ME!");
731 TRACEJVMCALLS((
"JVM_DefineClassWithSource(env=%p, name=%s, loader=%p, buf=%p, len=%d, pd=%p, source=%s)", env, name, loader, buf, len, pd, source));
748 TRACEJVMCALLS((
"JVM_FindLoadedClass(env=%p, loader=%p, name=%p)", env, loader, name));
764 TRACEJVMCALLS((
"JVM_GetClassName(env=%p, cls=%p)", env, cls));
779 TRACEJVMCALLS((
"JVM_GetClassInterfaces(env=%p, cls=%p)", env, cls));
813 TRACEJVMCALLS((
"JVM_IsInterface(env=%p, cls=%p)", env, cls));
835 TRACEJVMCALLS((
"JVM_SetClassSigners(env=%p, cls=%p, signers=%p)", env, cls, signers));
860 TRACEJVMCALLS((
"JVM_GetProtectionDomain(env=%p, cls=%p)", env, cls));
874 return (
jobject) c->protectiondomain;
882 log_println(
"JVM_SetProtectionDomain: IMPLEMENT ME!");
896 TRACEJVMCALLS((
"JVM_DoPrivileged(env=%p, cls=%p, action=%p, context=%p, wrapException=%d)", env, cls, action, context, wrapException));
901 if (action == NULL) {
941 log_println(
"JVM_GetInheritedAccessControlContext: IMPLEMENT ME!");
951 TRACEJVMCALLS((
"JVM_GetStackAccessControlContext(env=%p, cls=%p): IMPLEMENT ME!", env, cls));
967 TRACEJVMCALLS((
"JVM_IsArrayClass(env=%p, cls=%p)", env, cls));
981 TRACEJVMCALLS((
"JVM_IsPrimitiveClass(env=%p, cls=%p)", env, cls));
996 TRACEJVMCALLS((
"JVM_GetComponentType(env=%p, cls=%p)", env, cls));
1013 TRACEJVMCALLS((
"JVM_GetClassModifiers(env=%p, cls=%p)", env, cls));
1030 TRACEJVMCALLS((
"JVM_GetDeclaredClasses(env=%p, ofClass=%p)", env, ofClass));
1047 TRACEJVMCALLS((
"JVM_GetDeclaringClass(env=%p, ofClass=%p)", env, ofClass));
1061 TRACEJVMCALLS((
"JVM_GetClassSignature(env=%p, cls=%p)", env, cls));
1082 TRACEJVMCALLS((
"JVM_GetClassAnnotations(env=%p, cls=%p)", env, cls));
1102 TRACEJVMCALLS((
"JVM_GetFieldAnnotations(env=%p, field=%p)", env, field));
1119 TRACEJVMCALLS((
"JVM_GetMethodAnnotations(env=%p, method=%p)", env, method));
1136 TRACEJVMCALLS((
"JVM_GetMethodDefaultAnnotationValue(env=%p, method=%p)", env, method));
1145 return (
jbyteArray) jlrm.get_annotationDefault();
1153 TRACEJVMCALLS((
"JVM_GetMethodParameterAnnotations(env=%p, method=%p)", env, method));
1162 return (
jbyteArray) jlrm.get_parameterAnnotations();
1173 TRACEJVMCALLS((
"JVM_GetClassDeclaredFields(env=%p, ofClass=%p, publicOnly=%d)", env, ofClass, publicOnly));
1187 TRACEJVMCALLS((
"JVM_GetClassDeclaredMethods(env=%p, ofClass=%p, publicOnly=%d)", env, ofClass, publicOnly));
1204 TRACEJVMCALLS((
"JVM_GetClassDeclaredConstructors(env=%p, ofClass=%p, publicOnly=%d)", env, ofClass, publicOnly));
1220 TRACEJVMCALLS((
"JVM_GetClassAccessFlags(env=%p, cls=%p)", env, cls));
1234 #if defined(ENABLE_ANNOTATIONS)
1235 TRACEJVMCALLS((
"JVM_GetClassConstantPool(env=%p, cls=%p)", env, cls));
1246 log_println(
"JVM_GetClassConstantPool(env=%p, cls=%p): not implemented in this configuration!", env, cls);
1258 TRACEJVMCALLS((
"JVM_ConstantPoolGetSize(env=%p, unused=%p, jcpool=%p)", env, unused, jcpool));
1274 TRACEJVMCALLS((
"JVM_ConstantPoolGetClassAt(env=%p, jcpool=%p, index=%d)", env, jcpool, index));
1299 TRACEJVMCALLS((
"JVM_ConstantPoolGetClassAtIfLoaded(env=%p, unused=%p, jcpool=%p, index=%d)", env, unused, jcpool, index));
1329 TRACEJVMCALLS((
"JVM_ConstantPoolGetMethodAt: jcpool=%p, index=%d", jcpool, index));
1355 TRACEJVMCALLS((
"JVM_ConstantPoolGetMethodAtIfLoaded: jcpool=%p, index=%d", jcpool, index));
1387 TRACEJVMCALLS((
"JVM_ConstantPoolGetFieldAt: jcpool=%p, index=%d", jcpool, index));
1412 TRACEJVMCALLS((
"JVM_ConstantPoolGetFieldAtIfLoaded: jcpool=%p, index=%d", jcpool, index));
1441 log_println(
"JVM_ConstantPoolGetMemberRefInfoAt: jcpool=%p, index=%d, IMPLEMENT ME!", jcpool, index);
1453 TRACEJVMCALLS((
"JVM_ConstantPoolGetIntAt: jcpool=%p, index=%d", jcpool, index));
1471 TRACEJVMCALLS((
"JVM_ConstantPoolGetLongAt: jcpool=%p, index=%d", jcpool, index));
1489 TRACEJVMCALLS((
"JVM_ConstantPoolGetFloatAt: jcpool=%p, index=%d", jcpool, index));
1507 TRACEJVMCALLS((
"JVM_ConstantPoolGetDoubleAt: jcpool=%p, index=%d", jcpool, index));
1528 TRACEJVMCALLS((
"JVM_ConstantPoolGetStringAt: jcpool=%p, index=%d", jcpool, index));
1550 TRACEJVMCALLS((
"JVM_ConstantPoolGetUTF8At: jcpool=%p, index=%d", jcpool, index));
1569 #if defined(ENABLE_ASSERTION)
1573 TRACEJVMCALLS((
"JVM_DesiredAssertionStatus(env=%p, unused=%p, cls=%p)", env, unused, cls));
1591 status = (jboolean)item->
enabled;
1593 else if (name == c->
name) {
1594 status = (jboolean)item->
enabled;
1601 return (jboolean)
false;
1610 #if defined(ENABLE_ASSERTION)
1615 TRACEJVMCALLS((
"JVM_AssertionStatusDirectives(env=%p, unused=%p)", env, unused));
1617 #if defined(ENABLE_ASSERTION)
1625 #if defined(ENABLE_ASSERTION)
1633 #if defined(ENABLE_ASSERTION)
1641 #if defined(ENABLE_ASSERTION)
1649 #if defined(ENABLE_ASSERTION)
1680 java_lang_AssertionStatusDirectives jlasd(
1686 return (
jobject) jlasd.get_handle();
1694 log_println(
"JVM_GetClassNameUTF: IMPLEMENT ME!");
1704 log_println(
"JVM_GetClassCPTypes: IMPLEMENT ME!");
1712 log_println(
"JVM_GetClassCPEntriesCount: IMPLEMENT ME!");
1722 log_println(
"JVM_GetClassFieldsCount: IMPLEMENT ME!");
1732 log_println(
"JVM_GetClassMethodsCount: IMPLEMENT ME!");
1742 log_println(
"JVM_GetMethodIxExceptionIndexes: IMPLEMENT ME!");
1750 log_println(
"JVM_GetMethodIxExceptionsCount: IMPLEMENT ME!");
1760 log_println(
"JVM_GetMethodIxByteCode: IMPLEMENT ME!");
1768 log_println(
"JVM_GetMethodIxByteCodeLength: IMPLEMENT ME!");
1778 log_println(
"JVM_GetMethodIxExceptionTableEntry: IMPLEMENT ME!");
1786 log_println(
"JVM_GetMethodIxExceptionTableLength: IMPLEMENT ME!");
1796 log_println(
"JVM_GetMethodIxModifiers: IMPLEMENT ME!");
1806 log_println(
"JVM_GetFieldIxModifiers: IMPLEMENT ME!");
1816 log_println(
"JVM_GetMethodIxLocalsCount: IMPLEMENT ME!");
1826 log_println(
"JVM_GetMethodIxArgsSize: IMPLEMENT ME!");
1836 log_println(
"JVM_GetMethodIxMaxStack: IMPLEMENT ME!");
1846 log_println(
"JVM_IsConstructorIx: IMPLEMENT ME!");
1856 log_println(
"JVM_GetMethodIxNameUTF: IMPLEMENT ME!");
1866 log_println(
"JVM_GetMethodIxSignatureUTF: IMPLEMENT ME!");
1876 log_println(
"JVM_GetCPFieldNameUTF: IMPLEMENT ME!");
1886 log_println(
"JVM_GetCPMethodNameUTF: IMPLEMENT ME!");
1896 log_println(
"JVM_GetCPMethodSignatureUTF: IMPLEMENT ME!");
1906 log_println(
"JVM_GetCPFieldSignatureUTF: IMPLEMENT ME!");
1916 log_println(
"JVM_GetCPClassNameUTF: IMPLEMENT ME!");
1926 log_println(
"JVM_GetCPFieldClassNameUTF: IMPLEMENT ME!");
1936 log_println(
"JVM_GetCPMethodClassNameUTF: IMPLEMENT ME!");
1946 log_println(
"JVM_GetCPFieldModifiers: IMPLEMENT ME!");
1956 log_println(
"JVM_GetCPMethodModifiers: IMPLEMENT ME!");
1974 log_println(
"JVM_IsSameClassPackage: IMPLEMENT ME!");
1981 #ifdef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
1984 int sysFfileMode(
int fd,
int *mode)
1986 struct stat64 buf64;
1987 int ret = fstat64(fd, &buf64);
1988 (*mode) = buf64.st_mode;
1992 int open64_w(
const char *path,
int oflag,
int mode)
1994 int fd = open64(path, oflag, mode);
1995 if (fd == -1)
return -1;
2000 if (sysFfileMode(fd, &st_mode) != -1) {
2001 if ((st_mode & S_IFMT) == S_IFDIR) {
2036 int flags = fcntl(fd, F_GETFD);
2038 fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
2047 #define O_DELETE 0x10000
2053 int sysOpen(
const char *path,
int oflag,
int mode)
2056 int del = (oflag & O_DELETE);
2057 oflag = oflag & ~O_DELETE;
2058 fd = open64_w(path, oflag, mode);
2071 #define JVM_EEXIST -100
2073 jint
JVM_Open(
const char* fname, jint flags, jint mode)
2077 TRACEJVMCALLS((
"JVM_Open(fname=%s, flags=%d, mode=%d)", fname, flags, mode));
2079 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2081 result = hpi.
get_file().Open(fname, flags, mode);
2083 result = sysOpen(fname, flags, mode);
2106 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2119 TRACEJVMCALLS((
"JVM_Read(fd=%d, buf=%p, nbytes=%d)", fd, buf, nbytes));
2121 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2123 return (jint) hpi.
get_file().Read(fd, buf, nbytes);
2125 return read(fd, buf, nbytes);
2134 TRACEJVMCALLS((
"JVM_Write(fd=%d, buf=%s, nbytes=%d)", fd, buf, nbytes));
2136 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2138 return (jint) hpi.
get_file().Write(fd, buf, nbytes);
2140 return write(fd,buf,nbytes);
2149 TRACEJVMCALLS((
"JVM_Available(fd=%d, pbytes=%p)", fd, pbytes));
2151 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2153 return hpi.
get_file().Available(fd, pbytes);
2158 if (sysFfileMode(fd, &mode) >= 0)
2159 if (S_ISCHR(mode) || S_ISFIFO(mode) || S_ISSOCK(mode)) {
2166 if ((cur = lseek64(fd, 0L, SEEK_CUR)) == -1)
2168 else if ((end = lseek64(fd, 0L, SEEK_END)) == -1)
2170 else if (lseek64(fd, cur, SEEK_SET) == -1)
2172 *pbytes = end - cur;
2182 TRACEJVMCALLS((
"JVM_Lseek(fd=%d, offset=%ld, whence=%d)", fd, offset, whence));
2184 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2186 return hpi.
get_file().Seek(fd, (off_t) offset, whence);
2188 return lseek64(fd, (off_t) offset, whence);
2197 TRACEJVMCALLS((
"JVM_SetLength(fd=%d, length=%ld)", length));
2199 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2201 return hpi.
get_file().SetLength(fd, length);
2203 return ftruncate64(fd, length);
2214 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2227 TRACEJVMCALLS((
"JVM_StartThread(env=%p, jthread=%p)", env, jthread));
2237 log_println(
"JVM_StopThread: Deprecated. Not implemented.");
2249 TRACEJVMCALLS((
"JVM_IsThreadAlive(env=%p, jthread=%p)", env, jthread));
2272 TRACEJVMCALLS((
"JVM_SuspendThread(env=%p, jthread=%p)", env, jthread));
2275 log_println(
"JVM_SuspendThread: Deprecated, do not use!");
2296 TRACEJVMCALLS((
"JVM_ResumeThread(env=%p, jthread=%p)", env, jthread));
2299 log_println(
"JVM_ResumeThread: Deprecated, do not use!");
2320 TRACEJVMCALLS((
"JVM_SetThreadPriority(env=%p, jthread=%p, prio=%d)", env, jthread, prio));
2339 TRACEJVMCALLS((
"JVM_SetNativeThreadName(env=%p, cls=%p, name=%p)", env, cls, name));
2347 TRACEJVMCALLS((
"JVM_Yield(env=%p, threadClass=%p)", env, threadClass));
2357 TRACEJVMCALLS((
"JVM_Sleep(env=%p, threadClass=%p, millis=%ld)", env, threadClass, millis));
2381 log_println(
"JVM_CountStackFrames: Deprecated. Not implemented.");
2394 TRACEJVMCALLS((
"JVM_Interrupt(env=%p, jthread=%p)", env, jthread));
2414 jboolean interrupted;
2416 TRACEJVMCALLS((
"JVM_IsInterrupted(env=%p, jthread=%p, clear_interrupted=%d)", env, jthread, clear_interrupted));
2428 if (interrupted && clear_interrupted)
2442 TRACEJVMCALLS((
"JVM_HoldsLock(env=%p, threadClass=%p, obj=%p)", env, threadClass, obj));
2469 log_println(
"JVM_CurrentLoadedClass: IMPLEMENT ME!");
2480 PRINTJVMWARNINGS((
"JVM_CurrentClassLoader is deprecated, do not use it."));
2510 log_println(
"JVM_ClassLoaderDepth: IMPLEMENT ME!");
2520 TRACEJVMCALLS((
"JVM_GetSystemPackage(env=%p, name=%p)", env, name));
2539 int num = packages.size();
2542 std::set<Utf8String>::const_iterator it = packages.begin();
2543 for (
int i=0; it != packages.end(); ++it,
i++) {
2546 std::vector<char> temp;
2547 temp.reserve(it->size() + 1);
2548 const char *end = it->end();
2549 for (
const char *c = it->begin(); c != end; ++c)
2550 temp.push_back(*c ==
'.' ?
'/' : *c);
2551 temp.push_back(
'/');
2567 log_println(
"JVM_AllocateNewObject: IMPLEMENT ME!");
2577 log_println(
"JVM_AllocateNewArray: IMPLEMENT ME!");
2587 TRACEJVMCALLS((
"JVM_LatestUserDefinedLoader(env=%p)", env));
2629 TRACEJVMCALLS((
"JVM_GetArrayElement(env=%p, arr=%p, index=%d)", env, arr, index));
2648 log_println(
"JVM_GetPrimitiveArrayElement: IMPLEMENT ME!");
2660 TRACEJVMCALLS((
"JVM_SetArrayElement(env=%p, arr=%p, index=%d, val=%p)", env, arr, index, val));
2672 log_println(
"JVM_SetPrimitiveArrayElement: IMPLEMENT ME!");
2680 TRACEJVMCALLS((
"JVM_NewArray(env=%p, eltClass=%p, length=%d)", env, eltClass, length));
2682 if (eltClass == NULL) {
2703 Array a(length, pc);
2727 TRACEJVMCALLS((
"JVM_NewMultiArray(env=%p, eltClass=%p, dim=%p)", env, eltClass, dim));
2729 if (eltClass == NULL) {
2749 if ((length <= 0) || (length > 255)) {
2756 dims =
MNEW(
long, length);
2758 for (i = 0; i <
length; i++) {
2760 dims[
i] = (long) value;
2797 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
2810 TRACEJVMCALLS((
"JVM_Socket(domain=%d, type=%d, protocol=%d)", domain, type, protocol));
2830 TRACEJVMCALLS((
"JVM_SocketShutdown(fd=%d, howto=%d)", fd, howto));
2838 jint
JVM_Recv(jint fd,
char *buf, jint nBytes, jint flags)
2848 jint
JVM_Send(jint fd,
char *buf, jint nBytes, jint flags)
2850 TRACEJVMCALLSENTER((
"JVM_Send(fd=%d, buf=%p, nBytes=%d, flags=%d", fd, buf, nBytes, flags));
2852 int result =
os::send(fd, buf, nBytes, flags);
2884 TRACEJVMCALLS((
"JVM_Connect(fd=%d, him=%p, len=%d)", fd, him, len));
2904 TRACEJVMCALLS((
"JVM_Accept(fd=%d, him=%p, len=%p)", fd, him, len));
2906 return os::accept(fd, him, (socklen_t *) len);
2912 jint
JVM_RecvFrom(jint fd,
char *buf,
int nBytes,
int flags,
struct sockaddr *
from,
int *fromlen)
2924 TRACEJVMCALLS((
"JVM_GetSockName(fd=%d, him=%p, len=%p)", fd, him, len));
2932 jint
JVM_SendTo(jint fd,
char *buf,
int len,
int flags,
struct sockaddr *to,
int tolen)
2944 #if defined(FIONREAD)
2950 result = ioctl(fd, FIONREAD, &bytes);
2959 # error FIONREAD not defined
2965 TRACEJVMCALLS((
"JVM_SocketAvailable(fd=%d, pbytes=%p)", fd, pbytes));
2974 TRACEJVMCALLS((
"JVM_GetSockOpt(fd=%d, level=%d, optname=%d, optval=%s, optlen=%p)", fd, level, optname, optval, optlen));
2976 return os::getsockopt(fd, level, optname, optval, (socklen_t *) optlen);
2984 TRACEJVMCALLS((
"JVM_SetSockOpt(fd=%d, level=%d, optname=%d, optval=%s, optlen=%d)", fd, level, optname, optval, optlen));
3045 void* handle = nl.
open();
3072 #ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7
3074 symbol = hpi.
get_library().FindLibraryEntry(handle, name);
3078 symbol = dlsym(handle, name);
3108 TRACEJVMCALLS((
"JVM_IsSupportedJNIVersion(version=%d)", version));
3118 TRACEJVMCALLS((
"JVM_InternString(env=%p, str=%p)", env, str));
3142 delete ((
Mutex*) mon);
3152 ((
Mutex*) mon)->lock();
3164 ((
Mutex*) mon)->unlock();
3172 log_println(
"JVM_SetPrimitiveFieldValues: IMPLEMENT ME!");
3180 log_println(
"JVM_GetPrimitiveFieldValues: IMPLEMENT ME!");
3188 log_println(
"JVM_AccessVMBooleanFlag: IMPLEMENT ME!");
3198 log_println(
"JVM_AccessVMIntFlag: IMPLEMENT ME!");
3226 log_println(
"JVM_GetClassMethods: IMPLEMENT ME!");
3236 log_println(
"JVM_GetClassConstructors: IMPLEMENT ME!");
3266 log_println(
"JVM_GetClassConstructor: IMPLEMENT ME!");
3298 log_println(
"JVM_GetPrimitiveField: IMPLEMENT ME!");
3318 log_println(
"JVM_SetPrimitiveField: IMPLEMENT ME!");
3326 TRACEJVMCALLS((
"JVM_InvokeMethod(env=%p, method=%p, obj=%p, args0=%p)", env, method, obj, args0));
3340 TRACEJVMCALLS((
"JVM_NewInstanceFromConstructor(env=%p, c=%p, args0=%p)", env, con, args0));
3380 int32_t
length = active_threads.size();
3409 TRACEJVMCALLS((
"JVM_DumpThreads((env=%p, threadClass=%p, threads=%p)", env, threadClass, threads));
3411 if (threads == NULL) {
3435 for (i = 0; i <
length; i++) {
3475 log_println(
"JVM_InitAgentProperties: IMPLEMENT ME!");
3485 TRACEJVMCALLS((
"JVM_GetEnclosingMethodInfo(env=%p, ofClass=%p)", env, ofClass));
3514 TRACEJVMCALLS((
"JVM_GetThreadStateValues(env=%p, javaThreadState=%d)",
3515 env, javaThreadState));
3524 switch (javaThreadState) {
3608 TRACEJVMCALLS((
"JVM_GetThreadStateNames(env=%p, javaThreadState=%d, values=%p)",
3609 env, javaThreadState, values));
3620 if (values == NULL) {
3625 switch (javaThreadState) {
3640 oa.set_element(0, s);
3641 return oa.get_handle();
3750 TRACEJVMCALLS((
"JVM_GetVersionInfo(env=%p, info=%p, info_size=%zd)", env, info, info_size));
3752 memset(info, 0, info_size);
3754 info->jvm_version = ((VERSION_MAJOR & 0xff) << 24) | ((VERSION_MINOR & 0xff) << 16) | (VERSION_MICRO & 0xff);
3755 info->update_version = 0;
3756 info->special_update_version = 0;
3757 info->is_attach_supported = 0;
3758 info->is_kernel_jvm = 0;
3768 TRACEJVMCALLS((
"JVM_RegisterSignal(sig=%d, handler=%p)", sig, handler));
3770 if (handler == (
void *) 2)
3809 log_println(
"JVM_RaiseSignal: IMPLEMENT ME! sig=%s", sig);
3821 #if defined(__LINUX__)
3822 if (strcmp(name,
"HUP") == 0)
3825 if (strcmp(name,
"INT") == 0)
3828 if (strcmp(name,
"TERM") == 0)
3830 #elif defined(__SOLARIS__)
3833 if (os::str2sig(name, &signum) == -1)
3838 # error Not implemented for this OS.
void exceptions_throw_illegalargumentexception(void)
jobject JVM_GetProtectionDomain(JNIEnv *env, jclass cls)
java_handle_objectarray_t * class_get_declaredfields(classinfo *c, bool publicOnly)
jobject JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused)
jobjectArray JVM_GetClassDeclaredConstructors(JNIEnv *env, jclass ofClass, jboolean publicOnly)
jfloat JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
bool builtin_instanceof(java_handle_t *o, classinfo *c)
jint JVM_Open(const char *fname, jint flags, jint mode)
jclass JVM_FindClassFromCaller(JNIEnv *env, const char *name, jboolean init, jobject loader, jclass caller)
jint JVM_Accept(jint fd, struct sockaddr *him, jint *len)
void * JVM_GetManagement(jint version)
jstring JVM_GetClassName(JNIEnv *env, jclass cls)
JNIEnv jthread jmethodID jlocation jclass jobject jfieldID field
jobject JVM_GetStackAccessControlContext(JNIEnv *env, jclass cls)
JNIEnv jclass jobject const char jobject protection_domain
classinfo * stacktrace_get_caller_class(int depth)
static int processors_online()
Returns the number of online processors in the system.
methodinfo * class_resolveclassmethod(classinfo *c, Utf8String name, Utf8String desc, classinfo *referer, bool throwexception)
official tags from JVM spec
static int socket(int domain, int type, int protocol)
virtual java_handle_t * get_handle() const
void * open()
Open this native library.
void threads_thread_interrupt(threadobject *t)
const char * JVM_GetCPMethodNameUTF(JNIEnv *env, jclass cls, jint cp_index)
jobjectArray JVM_GetClassDeclaredFields(JNIEnv *env, jclass ofClass, jboolean publicOnly)
bool threads_suspend_thread(threadobject *thread, SuspendReason reason)
Suspend the passed thread.
void * class_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype)
const char * JVM_GetClassNameUTF(JNIEnv *env, jclass cls)
classinfo * classcache_lookup(classloader_t *initloader, Utf8String classname)
jint _JVM_SocketAvailable(jint fd, jint *pbytes)
classloader_t * stacktrace_first_nonsystem_classloader(void)
Returns the first non-system (user-defined) classloader on the stack.
const char * JVM_GetCPClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
classinfo * class_java_lang_RuntimeException
jboolean JVM_RaiseSignal(jint sig)
jobject JVM_CurrentClassLoader(JNIEnv *env)
jboolean JVM_CompileClass(JNIEnv *env, jclass compCls, jclass cls)
jint JVM_Bind(jint fd, struct sockaddr *him, jint len)
void JVM_InitializeCompiler(JNIEnv *env, jclass compCls)
void JVM_UnloadLibrary(void *handle)
int32_t get_hashcode() const
void JVM_TraceMethodCalls(jboolean on)
struct protoent * JVM_GetProtoByName(char *name)
Utf8String to_utf8() const
jobjectArray JVM_GetAllThreads(JNIEnv *env, jclass dummy)
jint JVM_Send(jint fd, char *buf, jint nBytes, jint flags)
jlong JVM_FreeMemory(void)
methodinfo * class_get_enclosingmethod_raw(classinfo *c)
virtual java_handle_array_t * get_handle() const
JNIEXPORT void JNICALL JVM_RawMonitorExit(void *mon)
const char * JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
void JVM_GetClassCPTypes(JNIEnv *env, jclass cls, unsigned char *types)
jint JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cls, int method_index)
jint JVM_SetSockOpt(jint fd, int level, int optname, const char *optval, int optlen)
JavaString intern() const
jint JVM_RecvFrom(jint fd, char *buf, int nBytes, int flags, struct sockaddr *from, int *fromlen)
static void * get_jmm_interface(int version)
Return the requested management interface.
static Utf8String from_utf8_slash_to_dot(const char *, size_t)
void JVM_GetVersionInfo(JNIEnv *env, jvm_version_info *info, size_t info_size)
void close()
Close this native library.
jstring JVM_GetClassSignature(JNIEnv *env, jclass cls)
classloader_t * stacktrace_first_nonnull_classloader(void)
Returns the first non-null (user-defined) classloader on the stack.
jboolean JVM_CompileClasses(JNIEnv *env, jclass cls, jstring jname)
static int listen(int sockfd, int backlog)
jobject JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
void JVM_GetMethodIxByteCode(JNIEnv *env, jclass cls, jint method_index, unsigned char *code)
JNIEXPORT void JNICALL JVM_RawMonitorDestroy(void *mon)
static JavaString from_utf8(Utf8String)
jboolean JVM_CX8Field(JNIEnv *env, jobject obj, jfieldID fid, jlong oldVal, jlong newVal)
void JVM_GetMethodIxExceptionIndexes(JNIEnv *env, jclass cls, jint method_index, unsigned short *exceptions)
int jio_vfprintf(FILE *f, const char *fmt, va_list args)
jobject JVM_NewArray(JNIEnv *env, jclass eltClass, jint length)
jint JVM_GetArrayLength(JNIEnv *env, jobject arr)
jobject JVM_GetClassField(JNIEnv *env, jclass cls, jstring name, jint which)
jint JVM_ClassLoaderDepth(JNIEnv *env)
jclass JVM_FindClassFromBootLoader(JNIEnv *env, const char *name)
classinfo * class_array_of(classinfo *component, bool link)
int32_t class_get_modifiers(classinfo *c, bool ignoreInnerClassesAttrib)
void signal_register_signal(int signum, functionptr handler, int flags)
HPI_FileInterface & get_file() const
static java_handle_t * thread_get_current_object(void)
void get_active_java_threads(List< threadobject * > &list)
Fills the passed list with all currently active threads which should be visible to Java...
#define JVM_INTERFACE_VERSION
bool resolve_classref(methodinfo *refmethod, constant_classref *ref, resolve_mode_t mode, bool checkaccess, bool link, classinfo **result)
Utf8String class_get_signature(classinfo *c)
OpenJDK sun/reflect/ConstantPool.
classinfo * class_get_declaringclass(classinfo *c)
int jio_vsnprintf(char *str, size_t count, const char *fmt, va_list args)
classloader_t * classloader
Actual implementation of access class for Java Object arrays.
jclass JVM_CurrentLoadedClass(JNIEnv *env)
jint JVM_GetMethodIxModifiers(JNIEnv *env, jclass cls, int method_index)
List< assertion_name_t * > * list_assertion_names
void JVM_MonitorWait(JNIEnv *env, jobject handle, jlong ms)
static int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
jint JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
void JVM_FillInStackTrace(JNIEnv *env, jobject receiver)
struct hostent * JVM_GetHostByName(char *name)
jobjectArray JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass)
T get_element(int32_t index)
jint JVM_Read(jint fd, char *buf, jint nbytes)
GNU Classpath java/lang/reflect/Field.
jlong JVM_MaxObjectInspectionAge(void)
union constant_FMIref::@26 p
Actual implementations of common Java array access classes.
jint JVM_CountStackFrames(JNIEnv *env, jobject jthread)
jint JVM_GetMethodIxExceptionTableLength(JNIEnv *env, jclass cls, int method_index)
jobject JVM_AllocateNewArray(JNIEnv *env, jobject obj, jclass currClass, jint length)
jobject JVM_GetStackTraceElement(JNIEnv *env, jobject throwable, jint index)
jobject JVM_CompilerCommand(JNIEnv *env, jclass compCls, jobject arg)
jclass JVM_FindPrimitiveClass(JNIEnv *env, const char *s)
Dummy implementation of a mutex.
int64_t opt_MaxDirectMemorySize
jclass JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jint JVM_SendTo(jint fd, char *buf, int len, int flags, struct sockaddr *to, int tolen)
#define LLNI_CRITICAL_END
jclass JVM_GetComponentType(JNIEnv *env, jclass cls)
#define TRACEJVMCALLSEXIT(x)
java_handle_t * vm_call_method(methodinfo *m, java_handle_t *o,...)
jobject JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index)
jobjectArray JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly)
jint JVM_GetMethodIxByteCodeLength(JNIEnv *env, jclass cls, jint method_index)
jstring JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject unused, jobject jcpool, jint index)
static bool class_is_array(classinfo *c)
static int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
static classinfo * get_class_by_name(Utf8String name)
Returns the primitive class of the given class name.
JNIEnv jclass jobject const char * name
void threads_set_thread_priority(threadobject *t, int priority)
void set_element(int32_t index, T value)
classinfo * class_java_lang_Object
jint JVM_GetClassFieldsCount(JNIEnv *env, jclass cls)
void log_println(const char *text,...)
jboolean JVM_IsInterrupted(JNIEnv *env, jobject jthread, jboolean clear_interrupted)
void JVM_MonitorNotify(JNIEnv *env, jobject handle)
JNIEnv jthread jobject jlong timeout
void JVM_Yield(JNIEnv *env, jclass threadClass)
jobject JVM_AllocateNewObject(JNIEnv *env, jobject receiver, jclass currClass, jclass initClass)
jobject JVM_LatestUserDefinedLoader(JNIEnv *env)
jclass JVM_FindClassFromClass(JNIEnv *env, const char *name, jboolean init, jclass from)
static classloader_t * class_get_classloader(classinfo *c)
void JVM_ResolveClass(JNIEnv *env, jclass cls)
static std::set< Utf8String > & packages()
jobjectArray JVM_GetClassMethods(JNIEnv *env, jclass cls, jint which)
jbyteArray JVM_GetMethodDefaultAnnotationValue(JNIEnv *env, jobject method)
const char * JVM_GetCPMethodSignatureUTF(JNIEnv *env, jclass cls, jint cp_index)
void vm_shutdown()
Hook point before the VM is actually destroyed.
jobjectArray JVM_GetClassContext(JNIEnv *env)
s8 gc_get_free_bytes(void)
classinfo * class_multiarray_of(s4 dim, classinfo *element, bool link)
jobject JVM_InitAgentProperties(JNIEnv *env, jobject properties)
void JVM_SetClassSigners(JNIEnv *env, jclass cls, jobjectArray signers)
HPI_SystemInterface & get_system() const
jobjectArray JVM_GetClassConstructors(JNIEnv *env, jclass cls, jint which)
s8 gc_get_max_heap_size(void)
classloader_t * loader_hashtable_classloader_add(java_handle_t *cl)
void JVM_Sleep(JNIEnv *env, jclass threadClass, jlong millis)
void JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos, jobject dst, jint dst_pos, jint length)
static int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
GNU Classpath java/lang/reflect/Constructor.
jint JVM_FindSignal(const char *name)
void(* functionptr)(void)
bool assertion_user_enabled
jint JVM_GetSockOpt(jint fd, int level, int optname, char *optval, int *optlen)
const char * JVM_GetMethodIxSignatureUTF(JNIEnv *env, jclass cls, jint method_index)
classinfo * class_sun_reflect_ConstantPool
jlong JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jboolean JVM_AccessVMBooleanFlag(const char *name, jboolean *value, jboolean is_get)
java_handle_t * invoke(java_handle_t *o, java_handle_objectarray_t *args)
Invokes the given method.
java_handle_t * stacktrace_get_StackTraceElement(stacktrace_t *st, int32_t index)
Creates a java.lang.StackTraceElement for one element of the given stacktrace.
java_handle_objectarray_t * class_get_declaredconstructors(classinfo *c, bool publicOnly)
Return an array of declared constructors of the given class.
jobject JVM_CurrentThread(JNIEnv *env, jclass threadClass)
jboolean JVM_SupportsCX8()
java_handle_t * class_get_classname(classinfo *c)
Returns the classname of the class, where slashes ('/') are replaced by dots ('.
#define LLNI_classinfo_wrap(classinfo)
#define LLNI_class_get(obj, variable)
java_handle_objectarray_t * stacktrace_get_StackTraceElements(stacktrace_t *st)
Creates a complete array of java.lang.StackTraceElement objects for the given stacktrace.
void lock_notify_all_object(java_handle_t *o)
static int getsockname(int s, struct sockaddr *name, socklen_t *namelen)
void threads_thread_start(java_handle_t *object)
JNIEXPORT jint JNICALL JVM_RawMonitorEnter(void *mon)
Host Porting Interface (HPI).
const char * JVM_GetCPFieldSignatureUTF(JNIEnv *env, jclass cls, jint cp_index)
int JVM_GetHostName(char *name, int namelen)
jlong jlong jlong jlong jint depth
void JVM_SuspendThread(JNIEnv *env, jobject jthread)
jobject JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jobject JVM_NewInstance(JNIEnv *env, jclass cls)
jint JVM_IHashCode(JNIEnv *env, jobject handle)
int jio_fprintf(FILE *f, const char *fmt,...)
java_handle_objectarray_t * class_get_declaredclasses(classinfo *c, bool publicOnly)
jobject JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jboolean JVM_AccessVMIntFlag(const char *name, jint *value, jboolean is_get)
static ThreadList * get()
Provides access to singleton.
void JVM_GetMethodIxExceptionTableEntry(JNIEnv *env, jclass cls, jint method_index, jint entry_index, JVM_ExceptionTableEntryType *entry)
void JVM_Interrupt(JNIEnv *env, jobject jthread)
int32_t get_length() const
jint JVM_SocketAvailable(jint fd, jint *pbytes)
jboolean JVM_IsSupportedJNIVersion(jint version)
jclass JVM_FindClassFromClassLoader(JNIEnv *env, const char *name, jboolean init, jobject loader, jboolean throwError)
JNIEnv jthread jmethodID method
java_handle_objectarray_t * class_get_interfaces(classinfo *c)
void JVM_SetProtectionDomain(JNIEnv *env, jclass cls, jobject protection_domain)
stacktrace_t * stacktrace_get_of_thread(threadobject *t)
Creates a stacktrace for the given thread.
jint JVM_GetCPMethodModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls)
jdouble JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jobject JVM_DoPrivileged(JNIEnv *env, jclass cls, jobject action, jobject context, jboolean wrapException)
java_handle_bytearray_t * class_get_annotations(classinfo *c)
jboolean JVM_IsArrayClass(JNIEnv *env, jclass cls)
jint JVM_ConstantPoolGetSize(JNIEnv *env, jobject unused, jobject jcpool)
jint JVM_SocketShutdown(jint fd, jint howto)
void JVM_SetThreadPriority(JNIEnv *env, jobject jthread, jint prio)
static void version(bool opt_exit)
void JVM_ReleaseUTF(const char *utf)
java_handle_objectarray_t * class_get_declaredmethods(classinfo *c, bool publicOnly)
char * JVM_NativePath(char *path)
void lock_notify_object(java_handle_t *o)
void JVM_VMBreakPoint(JNIEnv *env, jobject obj)
static int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen)
void exceptions_throw_nullpointerexception(void)
jboolean JVM_IsThreadAlive(JNIEnv *env, jobject jthread)
void JVM_MonitorNotifyAll(JNIEnv *env, jobject handle)
GNU Classpath java/lang/reflect/Method.
static bool class_is_interface(classinfo *c)
s8 builtin_nanotime(void)
void JVM_EnableCompiler(JNIEnv *env, jclass compCls)
jint JVM_Listen(jint fd, jint count)
void exceptions_throw_internalerror(const char *message,...)
jclass JVM_GetCallerClass(JNIEnv *env, int depth)
void JVM_StartThread(JNIEnv *env, jobject jthread)
jint JVM_GetCPFieldModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls)
jint JVM_GetClassMethodsCount(JNIEnv *env, jclass cls)
java_handle_objectarray_t * stacktrace_getClassContext(void)
jclass JVM_LoadClass0(JNIEnv *env, jobject receiver, jclass currClass, jstring currClassName)
int jio_snprintf(char *str, size_t count, const char *fmt,...)
#define TRACEJVMCALLSENTER(x)
Properties & get_properties()
jobject JVM_NewInstanceFromConstructor(JNIEnv *env, jobject con, jobjectArray args0)
static Utf8String find(Utf8String packagename)
Find a package in the list.
jlong JVM_NanoTime(JNIEnv *env, jclass ignored)
static Utf8String from_utf8(const char *, size_t)
JNIEXPORT void *JNICALL JVM_RawMonitorCreate(void)
jobject JVM_InitProperties(JNIEnv *env, jobject properties)
bool thread_is_interrupted(threadobject *t)
int32_t assertion_class_count
jobjectArray JVM_GetClassFields(JNIEnv *env, jclass cls, jint which)
Fieldref, Methodref and InterfaceMethodref.
jint JVM_InitializeSocketLibrary()
jint JVM_GetSockName(jint fd, struct sockaddr *him, int *len)
void JVM_SetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jvalue v, unsigned char vCode)
jclass JVM_GetDeclaringClass(JNIEnv *env, jclass ofClass)
jobject JVM_GetField(JNIEnv *env, jobject field, jobject obj)
JNIEnv jclass jobject loader
GNU Classpath java/lang/Throwable.
jboolean JVM_IsSameClassPackage(JNIEnv *env, jclass class1, jclass class2)
jlong JVM_Lseek(jint fd, jlong offset, jint whence)
jint JVM_Write(jint fd, char *buf, jint nbytes)
Represents a native library.
#define TRACEJVMCALLSVERBOSE(x)
jint JVM_GetLastErrorString(char *buf, int len)
bool initialize_class(classinfo *c)
void JVM_PrintStackTrace(JNIEnv *env, jobject receiver, jobject printable)
void JVM_SetField(JNIEnv *env, jobject field, jobject obj, jobject val)
jlong JVM_MaxMemory(void)
void lock_wait_for_object(java_handle_t *o, s8 millis, s4 nanos)
void fill(java_handle_t *p)
Fill the given Java system properties with all properties from the internal properties map...
jint JVM_GetMethodIxExceptionsCount(JNIEnv *env, jclass cls, jint method_index)
jobjectArray JVM_GetThreadStateNames(JNIEnv *env, jint javaThreadState, jintArray values)
threadobject * thread_get_thread(java_handle_t *h)
jstring JVM_GetSystemPackage(JNIEnv *env, jstring name)
bool threads_thread_is_alive(threadobject *t)
jboolean JVM_IsPrimitiveClass(JNIEnv *env, jclass cls)
jvalue JVM_GetPrimitiveArrayElement(JNIEnv *env, jobject arr, jint index, jint wCode)
void exceptions_throw_privilegedactionexception(java_handle_t *exception)
jint JVM_ActiveProcessorCount(void)
static const std::set< Utf8String > & packages()
jobjectArray JVM_GetSystemPackages(JNIEnv *env)
java_handle_t * native_new_and_init(classinfo *c)
Registers a new native agent by specified by it's library name and with an optional options string...
This is a generic accessor class for Java arrays (of unspecified type), which can be used to safely o...
#define LLNI_classinfo_field_set(cls, field, variable)
static ssize_t send(int s, const void *buf, size_t len, int flags)
jobjectArray JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
classinfo * class_java_lang_String
void thread_set_interrupted(threadobject *t, bool interrupted)
HPI_LibraryInterface & get_library() const
jint JVM_GetStackTraceDepth(JNIEnv *env, jobject throwable)
byte_iterator begin() const
java_handle_t * new_instance(java_handle_objectarray_t *args)
Constructs a Java object with the given java.lang.reflect.Constructor.
struct hostent * JVM_GetHostByAddr(const char *name, int len, int type)
jobject JVM_GetClassLoader(JNIEnv *env, jclass cls)
s8 gc_get_heap_size(void)
void JVM_ResumeThread(JNIEnv *env, jobject jthread)
jclass JVM_DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd)
jint JVM_GetInterfaceVersion()
jclass JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
jobject JVM_GetClassConstantPool(JNIEnv *env, jclass cls)
jint JVM_Connect(jint fd, struct sockaddr *him, jint len)
jint JVM_SetLength(jint fd, jlong length)
static int shutdown(int s, int how)
void JVM_DisableCompiler(JNIEnv *env, jclass compCls)
bool lock_is_held_by_current_thread(java_handle_t *o)
jobjectArray JVM_GetClassInterfaces(JNIEnv *env, jclass cls)
classinfo * class_java_lang_Exception
jint JVM_GetMethodIxArgsSize(JNIEnv *env, jclass cls, int method_index)
jlong JVM_TotalMemory(void)
jint JVM_GetMethodIxLocalsCount(JNIEnv *env, jclass cls, int method_index)
bool assertion_system_enabled
void * JVM_RegisterSignal(jint sig, void *handler)
void builtin_arraycopy(java_handle_t *src, s4 srcStart, java_handle_t *dest, s4 destStart, s4 len)
jlong JVM_CurrentTimeMillis(JNIEnv *env, jclass ignored)
static classinfo * get_arrayclass_by_name(Utf8String name)
Returns the primitive array-class of the given primitive class name.
jobject JVM_GetInheritedAccessControlContext(JNIEnv *env, jclass cls)
void JVM_TraceInstructions(jboolean on)
#define LLNI_CRITICAL_START
void exceptions_clear_exception(void)
java_handle_objectarray_t * builtin_multianewarray(int n, java_handle_t *arrayclazz, long *dims)
jboolean JVM_IsSilentCompiler(JNIEnv *env, jclass compCls)
void JVM_DumpAllStacks(JNIEnv *env, jclass unused)
jint JVM_GetFieldIxModifiers(JNIEnv *env, jclass cls, int field_index)
constant_classref * classref
jbyteArray JVM_GetFieldAnnotations(JNIEnv *env, jobject field)
jobject JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
void JVM_SetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)
void JVM_SetPrimitiveField(JNIEnv *env, jobject field, jobject obj, jvalue v, unsigned char vCode)
java_handle_t * exceptions_get_exception(void)
void * JVM_FindLibraryEntry(void *handle, const char *name)
void JVM_SetArrayElement(JNIEnv *env, jobject arr, jint index, jobject val)
jclass JVM_FindLoadedClass(JNIEnv *env, jobject loader, jstring name)
jintArray JVM_GetThreadStateValues(JNIEnv *env, jint javaThreadState)
s8 builtin_currenttimemillis(void)
jobjectArray JVM_DumpThreads(JNIEnv *env, jclass threadClass, jobjectArray threads)
jint JVM_Available(jint fd, jlong *pbytes)
classinfo * load_class_from_classloader(Utf8String name, classloader_t *cl)
jobject JVM_Clone(JNIEnv *env, jobject handle)
classinfo * resolve_classref_eager(constant_classref *ref)
jint JVM_GetClassCPEntriesCount(JNIEnv *env, jclass cls)
jint JVM_GetClassModifiers(JNIEnv *env, jclass cls)
java_handle_t * builtin_clone(void *env, java_handle_t *o)
void JVM_OnExit(void(*func)(void))
classinfo * class_java_lang_Thread
jvalue JVM_GetPrimitiveField(JNIEnv *env, jobject field, jobject obj, unsigned char wCode)
#define LLNI_classinfo_unwrap(clazz)
void JVM_SetNativeThreadName(JNIEnv *env, jclass cls, jobject name)
jint JVM_Timeout(int fd, long timeout)
jboolean JVM_IsConstructorIx(JNIEnv *env, jclass cls, int method_index)
classinfo * class_java_lang_StackTraceElement
static bool class_is_primitive(classinfo *c)
jstring JVM_InternString(JNIEnv *env, jstring str)
void threads_sleep(int64_t millis, int32_t nanos)
jobjectArray JVM_GetClassSigners(JNIEnv *env, jclass cls)
jint JVM_GetClassAccessFlags(JNIEnv *env, jclass cls)
jbyteArray JVM_GetClassAnnotations(JNIEnv *env, jclass cls)
jint JVM_Recv(jint fd, char *buf, jint nBytes, jint flags)
jint JVM_ClassDepth(JNIEnv *env, jstring name)
void JVM_StopThread(JNIEnv *env, jobject jthread, jobject throwable)
java_handle_t * get_boxed_element(int32_t index)
Returns a boxed element of the given Java array.
jbyteArray JVM_GetMethodParameterAnnotations(JNIEnv *env, jobject method)
jint JVM_SocketClose(jint fd)
bool jni_version_check(int version)
jboolean JVM_IsInterface(JNIEnv *env, jclass cls)
void * JVM_LoadLibrary(const char *name)
jint JVM_Socket(jint domain, jint type, jint protocol)
const char * JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cls, jint cp_index)
static JavaString literal(Utf8String)
jobjectArray JVM_GetEnclosingMethodInfo(JNIEnv *env, jclass ofClass)
const char * JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cls, jint method_index)
int initialize_socket_library()
Initialize the Host Porting Interface (HPI) socket library.
static void put(java_handle_t *p, const char *key, const char *value)
Add the given property to the given Java system properties.
const char const void jint length
const char * JVM_GetCPFieldNameUTF(JNIEnv *env, jclass cls, jint cp_index)
int32_t assertion_package_count
jbyteArray JVM_GetMethodAnnotations(JNIEnv *env, jobject method)
classinfo * class_define(Utf8String name, classloader_t *cl, int32_t length, uint8_t *data, java_handle_t *pd)
void signal_thread_handler(int sig)
jobject JVM_NewMultiArray(JNIEnv *env, jclass eltClass, jintArray dim)
static int gethostname(char *name, size_t len)
jboolean JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls)
classinfo * class_get_componenttype(classinfo *c)
java_handle_bytearray_t * stacktrace_get_current(void)
jboolean JVM_IsNaN(jdouble d)
jboolean JVM_HoldsLock(JNIEnv *env, jclass threadClass, jobject obj)
jstring JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject unused, jobject jcpool, jint index)
int jio_printf(const char *fmt,...)
jobject JVM_InvokeMethod(JNIEnv *env, jobject method, jobject obj, jobjectArray args0)
static VM * get_current()
void JVM_GetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)
#define PRINTJVMWARNINGS(x)
jclass JVM_DefineClassWithSource(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd, const char *source)
bool threads_resume_thread(threadobject *thread, SuspendReason reason)
Resumes execution of the passed thread.
void set_boxed_element(int32_t index, java_handle_t *o)
Sets a boxed element in the given Java array.
jobject JVM_GetClassMethod(JNIEnv *env, jclass cls, jstring name, jobjectArray types, jint which)
Utf8String to_utf8_dot_to_slash() const
jobject JVM_GetClassConstructor(JNIEnv *env, jclass cls, jobjectArray types, jint which)