Skip to content

Commit

Permalink
Java accessors to var arg syscalls.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian Rogers committed Jun 6, 2009
1 parent 6ed6a33 commit fa8510e
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
22 changes: 21 additions & 1 deletion rvm/src/org/jikesrvm/runtime/BootRecord.java
Expand Up @@ -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;
Expand Down Expand Up @@ -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
//
/**
Expand Down Expand Up @@ -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;
Expand Down
24 changes: 24 additions & 0 deletions rvm/src/org/jikesrvm/runtime/SysCall.java
Expand Up @@ -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();
Expand Down

0 comments on commit fa8510e

Please sign in to comment.