/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Common Public License (CPL); * 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/cpl1.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.VM_Field; import org.jikesrvm.classloader.VM_NormalMethod; /** * Entrypoints that are specific to instruction architecture. */ public interface VM_ArchEntrypoints { VM_NormalMethod newArrayArrayMethod = VM_EntrypointHelper.getMethod("Lorg/jikesrvm/" + VM_ArchEntrypoints.arch + "/VM_MultianewarrayHelper;", "newArrayArray", "(IIII)Ljava/lang/Object;"); String arch = VM.BuildForIA32 ? "ia32" : "ppc"; String ArchCodeArrayName = "Lorg/jikesrvm/ArchitectureSpecific$VM_CodeArray;"; VM_Field reflectiveMethodInvokerInstructionsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_OutOfLineMachineCode;", "reflectiveMethodInvokerInstructions", ArchCodeArrayName); VM_Field saveThreadStateInstructionsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_OutOfLineMachineCode;", "saveThreadStateInstructions", ArchCodeArrayName); VM_Field threadSwitchInstructionsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_OutOfLineMachineCode;", "threadSwitchInstructions", ArchCodeArrayName); VM_Field restoreHardwareExceptionStateInstructionsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_OutOfLineMachineCode;", "restoreHardwareExceptionStateInstructions", ArchCodeArrayName); VM_Field invokeNativeFunctionInstructionsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_OutOfLineMachineCode;", "invokeNativeFunctionInstructions", ArchCodeArrayName); VM_Field registersIPField = VM_EntrypointHelper.getField("Lorg/jikesrvm/VM_Registers;", "ip", "Lorg/vmmagic/unboxed/LocalAddress;"); VM_Field registersFPRsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/VM_Registers;", "fprs", "[D"); VM_Field registersGPRsField = VM_EntrypointHelper.getField("Lorg/jikesrvm/VM_Registers;", "gprs", "Lorg/vmmagic/unboxed/WordArray;"); VM_Field registersInUseField = VM_EntrypointHelper.getField("Lorg/jikesrvm/VM_Registers;", "inuse", "Z"); VM_Field registersLRField = (VM.BuildForPowerPC) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_Registers;", "lr", "Lorg/vmmagic/unboxed/Address;") : null; VM_Field toSyncProcessorsField = (VM.BuildForPowerPC) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/scheduler/VM_Scheduler;", "toSyncProcessors", "I") : null; VM_Field registersFPField = (VM.BuildForIA32) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/" + arch + "/VM_Registers;", "fp", "Lorg/vmmagic/unboxed/LocalAddress;") : null; VM_Field jtocField = (VM.BuildForIA32) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/scheduler/VM_Processor;", "jtoc", "Lorg/vmmagic/unboxed/Address;") : null; VM_Field framePointerField = (VM.BuildForIA32) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/scheduler/VM_Processor;", "framePointer", "Lorg/vmmagic/unboxed/Address;") : null; VM_Field hiddenSignatureIdField = (VM.BuildForIA32) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/scheduler/VM_Processor;", "hiddenSignatureId", "I") : null; VM_Field arrayIndexTrapParamField = (VM.BuildForIA32) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/scheduler/VM_Processor;", "arrayIndexTrapParam", "I") : null; VM_Field JNIEnvSavedJTOCField = (VM.BuildForPowerPC) ? VM_EntrypointHelper.getField("Lorg/jikesrvm/jni/VM_JNIEnvironment;", "savedJTOC", "Lorg/vmmagic/unboxed/Address;") : null; }