/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
package org.jikesrvm.runtime;
import org.jikesrvm.VM;
import org.jikesrvm.classloader.RVMField;
import org.jikesrvm.classloader.NormalMethod;
/**
* Entrypoints that are specific to instruction architecture.
*/
public interface ArchEntrypoints {
NormalMethod newArrayArrayMethod =
EntrypointHelper.getMethod("Lorg/jikesrvm/" + ArchEntrypoints.arch + "/MultianewarrayHelper;", "newArrayArray", "(IIII)Ljava/lang/Object;");
String arch = VM.BuildForIA32 ? "ia32" : "ppc";
String ArchCodeArrayName = "Lorg/jikesrvm/ArchitectureSpecific$CodeArray;";
RVMField reflectiveMethodInvokerInstructionsField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;",
"reflectiveMethodInvokerInstructions",
ArchCodeArrayName);
RVMField saveThreadStateInstructionsField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;", "saveThreadStateInstructions", ArchCodeArrayName);
RVMField threadSwitchInstructionsField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;", "threadSwitchInstructions", ArchCodeArrayName);
RVMField restoreHardwareExceptionStateInstructionsField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;",
"restoreHardwareExceptionStateInstructions",
ArchCodeArrayName);
RVMField saveVolatilesInstructionsField =
(VM.BuildForPowerPC) ?
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;", "saveVolatilesInstructions", ArchCodeArrayName) : null;
RVMField restoreVolatilesInstructionsField =
(VM.BuildForPowerPC) ?
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/OutOfLineMachineCode;", "restoreVolatilesInstructions", ArchCodeArrayName) : null;
RVMField registersIPField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;", "ip", "Lorg/vmmagic/unboxed/Address;");
RVMField registersFPRsField = EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;", "fprs", "[D");
RVMField registersGPRsField =
EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;", "gprs", "Lorg/vmmagic/unboxed/WordArray;");
RVMField registersInUseField = EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;", "inuse", "Z");
RVMField registersLRField =
(VM.BuildForPowerPC) ? EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;",
"lr",
"Lorg/vmmagic/unboxed/Address;") : null;
RVMField registersFPField =
(VM.BuildForIA32) ? EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/Registers;",
"fp",
"Lorg/vmmagic/unboxed/Address;") : null;
RVMField framePointerField =
(VM.BuildForIA32) ? EntrypointHelper.getField("Lorg/jikesrvm/scheduler/RVMThread;",
"framePointer",
"Lorg/vmmagic/unboxed/Address;") : null;
RVMField hiddenSignatureIdField =
(VM.BuildForIA32) ? EntrypointHelper.getField("Lorg/jikesrvm/scheduler/RVMThread;", "hiddenSignatureId", "I") : null;
RVMField arrayIndexTrapParamField =
(VM.BuildForIA32) ? EntrypointHelper.getField("Lorg/jikesrvm/scheduler/RVMThread;", "arrayIndexTrapParam", "I") : null;
}