diff --git a/rvm/src/org/jikesrvm/runtime/BootRecord.java b/rvm/src/org/jikesrvm/runtime/BootRecord.java index c45ffab43..b61944a3f 100644 --- a/rvm/src/org/jikesrvm/runtime/BootRecord.java +++ b/rvm/src/org/jikesrvm/runtime/BootRecord.java @@ -13,6 +13,7 @@ package org.jikesrvm.runtime; import org.jikesrvm.VM; +import org.jikesrvm.jni.FunctionTable; import org.jikesrvm.mm.mminterface.MemoryManager; import org.vmmagic.pragma.Entrypoint; import org.vmmagic.pragma.Uninterruptible; @@ -175,10 +176,16 @@ public void setHeapRange(int id, Address start, Address end) { /** * address of JavaVM, used by JNI_OnLoad and JNIEnv.GetJavaVM, - * defined in Sys.C + * defined in jvm.c */ public Address sysJavaVM; + /** + * Reference to JNI function table + */ + @Untraced + public FunctionTable JNIFunctions; + // Additional RVM entrypoints // /** @@ -293,6 +300,19 @@ public void setHeapRange(int id, Address start, Address end) { Address sysDlopenIP; Address sysDlsymIP; + // var args + public Address sysVaCopyIP; + public Address sysVaEndIP; + public Address sysVaArgJbooleanIP; + public Address sysVaArgJbyteIP; + public Address sysVaArgJcharIP; + public Address sysVaArgJshortIP; + public Address sysVaArgJintIP; + public Address sysVaArgJlongIP; + public Address sysVaArgJfloatIP; + public Address sysVaArgJdoubleIP; + public Address sysVaArgJobjectIP; + // VMMath public Address sysVMMathSinIP; public Address sysVMMathCosIP; diff --git a/rvm/src/org/jikesrvm/runtime/SysCall.java b/rvm/src/org/jikesrvm/runtime/SysCall.java index 352f51206..4a9f66d34 100755 --- a/rvm/src/org/jikesrvm/runtime/SysCall.java +++ b/rvm/src/org/jikesrvm/runtime/SysCall.java @@ -289,6 +289,30 @@ public abstract long sysParseMemorySize(byte[] sizeName, byte[] sizeFlag, byte[] @SysCallTemplate public abstract Address sysDlsym(Address libHandler, byte[] symbolName, byte[] argSignature); + // var args + @SysCallTemplate + public abstract Address sysVaCopy(Address va_list); + @SysCallTemplate + public abstract void sysVaEnd(Address va_list); + @SysCallTemplate + public abstract boolean sysVaArgJboolean(Address va_list); + @SysCallTemplate + public abstract byte sysVaArgJbyte(Address va_list); + @SysCallTemplate + public abstract char sysVaArgJchar(Address va_list); + @SysCallTemplate + public abstract short sysVaArgJshort(Address va_list); + @SysCallTemplate + public abstract int sysVaArgJint(Address va_list); + @SysCallTemplate + public abstract long sysVaArgJlong(Address va_list); + @SysCallTemplate + public abstract float sysVaArgJfloat(Address va_list); + @SysCallTemplate + public abstract double sysVaArgJdouble(Address va_list); + @SysCallTemplate + public abstract int sysVaArgJobject(Address va_list); + // system calls for alignment checking @SysCallTemplate public abstract void sysEnableAlignmentChecking();