|
From: <ans...@us...> - 2006-12-22 00:45:52
|
Revision: 2950
http://jnode.svn.sourceforge.net/jnode/?rev=2950&view=rev
Author: ansari82
Date: 2006-12-21 16:45:50 -0800 (Thu, 21 Dec 2006)
Log Message:
-----------
Fixed invokeinterface, removed classcast checking as opt needs more info than is available right now, added an opt-required feature to Jnode that marks a VmType as inBootImage, and tidied up various Jikes files
Modified Paths:
--------------
branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_MemOp_Helpers.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_STATE.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_TreeNode.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ComplexLIR2MIRExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_ConvertToLowLevelIR.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_DynamicTypeCheckExpansion.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Options.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_SimpleEscape.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_Simplifier.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_StackManager.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptExceptionDeliverer.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptGCMapIterator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/VM_OptSaveVolatile.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/JnodeMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_AddressConstantOperand.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_GenerateJnodeMagic.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Operator.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_OperatorNames.java
branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/ir/OPT_Operators.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmArrayClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmInterfaceClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmNormalClass.java
branches/jikesRVM/core/src/core/org/jnode/vm/classmgr/VmType.java
branches/jikesRVM/core/src/test/org/jnode/test/core/CompilerTest.java
branches/jikesRVM/core/src/vmmagic/org/vmmagic/unboxed/WordArray.java
Modified: branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java
===================================================================
--- branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/builder/src/builder/org/jnode/build/AbstractBootImageBuilder.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -213,6 +213,8 @@
do {
again = false;
oldCount = clsMgr.getLoadedClassCount();
+ for (VmType< ? > vmClass : clsMgr.getLoadedClasses())
+ vmClass.setInBootImage(true);
for (VmType< ? > vmClass : clsMgr.getLoadedClasses()) {
vmClass.link();
final boolean compHigh = isCompileHighOptLevel(vmClass);
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/JikesRVMOptCompiler.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -118,21 +118,14 @@
}
public static boolean compilableMethod(VmMethod vmMethod) {
- if (vmMethod.getDeclaringClass().getName().contains("org.jnode.vm.classmgr.VmType")
- && (
- vmMethod.getName().contains("compare")
- || vmMethod.getName().contains("equals")
- || vmMethod.getName().contains("BootClass")
- || vmMethod.getName().contains("i")
- || vmMethod.getName().contains("linkAndInitialize")
- || vmMethod.getName().contains("link")
- || vmMethod.getName().startsWith("do")
- || vmMethod.getName().startsWith("is")
- || vmMethod.getName().startsWith("getA")
- || vmMethod.getName().startsWith("getObjectClass")
- || vmMethod.getName().startsWith("getP")
- )
- )
+ if (vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.A")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.C")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.I")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.M")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.N")
+ || vmMethod.getDeclaringClass().getName().startsWith("org.jnode.vm.classmgr.O")
+
+ )
{
return true;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -43,6 +43,8 @@
public static final boolean BuildForITableInterfaceInvocation = false;
+ public static boolean BuildForIMTInterfaceInvocation = false;
+
public static final boolean BuildForIndirectIMT = false;
public static boolean runningVM = true;
@@ -61,8 +63,6 @@
public static boolean MeasureCompilation = false;
- public static boolean BuildForIMTInterfaceInvocation = false;
-
public static boolean fullyBooted;
public static boolean ExplicitlyGuardLowMemory;
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/VM_Magic.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -29,9 +29,7 @@
**************************************************************/
public static VM_Field getCurrentVmProcField() {
- return VM_Field.buildFromJnodeField(
- VM_Class.buildFromJnodeClass(context.getVmProcessorMeField().getDeclaringClass()),
- context.getVmProcessorMeField());
+ return VM_Field.buildFromJnodeField(context.getVmProcessorMeField());
}
public static VM_Method getClassForVmTypeMethod() {
@@ -140,7 +138,6 @@
public static void setIntAtOffset(VM_CodeArray code, Offset offset,
int patch) {
- // TODO
try {throw new Exception("VM_Magic.setIntAtOffset() not implemented");}
catch (Exception e) {e.printStackTrace();}
//Address addr = objectAsAddress(code);
@@ -148,12 +145,45 @@
}
public static void restoreHardwareExceptionState(VM_Registers registers) {
- // TODO
try {throw new Exception("VM_Magic.restoreHardwareEx... not implemented");}
catch (Exception e) {e.printStackTrace();}
}
public static void isync() {/*Nothing required on Intel*/}
+
+
+ public static VM_Method getClassCastFailedMethod() {
+ return VM_Method.buildFromJnodeMethod(context
+ .getClassCastFailedMethod());
+ }
+
+
+ public static Object getFramePointer() {
+ try {throw new Exception("VM_Magic.getFramePointer() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
+
+
+ public static int getCompiledMethodID(Address fp) {
+ try {throw new Exception("VM_Magic.getCompiledMethodID() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return 0;
+ }
+
+
+ public static Address getReturnAddress(Object framePointer) {
+ try {throw new Exception("VM_Magic.getReturnAddress() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
+
+
+ public static Address getCallerFramePointer(Object framePointer) {
+ try {throw new Exception("VM_Magic.getCallerFramePointer() not implemented");}
+ catch (Exception e) {e.printStackTrace();}
+ return null;
+ }
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Array.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -14,8 +14,6 @@
public static int LENGTH_OFFSET = VmArray.LENGTH_OFFSET;
public static int DATA_OFFSET = VmArray.DATA_OFFSET;
-
- final VmArrayClass<?> jnodeArray;
/*
* We hold on to a number of commonly used arrays for easy access.
*/
@@ -55,7 +53,6 @@
*/
VM_Array(VM_TypeReference typeRef, VM_Type elementType, VmArrayClass<?> array) {
super(typeRef, array);
- jnodeArray = array;
depth = 1;
this.elementType = elementType;
if (elementType.isArrayType() &&
@@ -145,8 +142,8 @@
@Override
public void resolve() {
- // TODO Auto-generated method stub
-
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
}
/**
@@ -176,6 +173,6 @@
}
public VmArrayClass<?> getJnodeArray() {
- return jnodeArray;
+ return (VmArrayClass<?>)jnodeType;
}
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Class.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -71,7 +71,7 @@
VmConstFieldRef jnodeField = jnodeType.getCP().getConstFieldRef(i);
if (!jnodeField.isResolved())
jnodeField.resolve(this.jnodeType.getLoader());
- VM_Field jikesField = VM_Field.buildFromJnodeField(this, jnodeField.getResolvedVmField());
+ VM_Field jikesField = VM_Field.buildFromJnodeField(jnodeField.getResolvedVmField());
return (VM_FieldReference)jikesField.memRef;
}
@@ -182,11 +182,8 @@
return null;
}
- public boolean hasClassInitializerMethod() {
- if (jnodeType.getInitializerMethod() == null) {
- return false;
- }
- return true;
+ public VM_Method getClassInitializerMethod() {
+ return VM_Method.buildFromJnodeMethod(jnodeType.getInitializerMethod());
}
public String getSourceName() {
@@ -194,10 +191,8 @@
}
public void resolve() {
- // This should call Jnode stuff because VM_Class is only an adapter to the Jnode class
- jnodeType.link();
-// jnodeType.resolveCpRefs();
-// jnodeType.prepareForInstantiation();
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
}
/**
@@ -207,7 +202,7 @@
* @return description (null --> not found)
*/
public final VM_Field findDeclaredField(VM_Atom fieldName, VM_Atom fieldDescriptor) {
- return VM_Field.buildFromJnodeField(this, jnodeType.getDeclaredField(fieldName.toString(),
+ return VM_Field.buildFromJnodeField(jnodeType.getDeclaredField(fieldName.toString(),
fieldDescriptor.toString()));
}
@@ -303,7 +298,7 @@
jnodeFields[i] = jnodeType.getDeclaredField(i);
VM_Field[] jikesFields = new VM_Field[jnodeFields.length];
for (int i = 0; i < jnodeFields.length; i++) {
- jikesFields[i] = VM_Field.buildFromJnodeField(this, jnodeFields[i]);
+ jikesFields[i] = VM_Field.buildFromJnodeField(jnodeFields[i]);
}
return jikesFields;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Field.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -4,8 +4,6 @@
import org.vmmagic.pragma.UninterruptiblePragma;
public final class VM_Field extends VM_Member{
-
- final VmField jnodeField;
/**
* NOTE: Only {@link VM_Class} is allowed to create an instance of a VM_Field.
@@ -17,7 +15,6 @@
*/
public VM_Field(VM_Class declaringClass, VM_MemberReference memRef, int modifiers, VmField field) {
super(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS, field);
- this.jnodeField = field;
memRef.asFieldReference().setResolvedMember(this);
}
@@ -29,7 +26,7 @@
}
public boolean isStatic() {
- return jnodeField.isStatic();
+ return jnodeMember.isStatic();
}
public boolean isVolatile() {
@@ -38,24 +35,23 @@
}
public boolean isFinal() {
- return jnodeField.isFinal();
+ return jnodeMember.isFinal();
}
- public static VM_Field buildFromJnodeField(VM_Class callingClass, VmField jnodeField) {
- //The assumption is that the calling class is a Jikes VM_Class, which
- // is actually a "copy" of a JNode VmClass.
- if(jnodeField == null) return null;
+ public static VM_Field buildFromJnodeField(VmField jnodeField) {
+ if(jnodeField==null) return null;
+ VM_Class declaringClass = VM_Class.buildFromJnodeClass(jnodeField.getDeclaringClass());
VM_Atom methodName = VM_Atom.findOrCreateAsciiAtom(jnodeField.getName());
VM_Atom methodDescriptor = VM_Atom.findOrCreateAsciiAtom(jnodeField.getSignature());
- VM_MemberReference memRef = VM_MemberReference.findOrCreate(callingClass.getTypeRef(), methodName, methodDescriptor);
+ VM_MemberReference memRef = VM_MemberReference.findOrCreate(declaringClass.getTypeRef(), methodName, methodDescriptor);
if(memRef.asFieldReference().isResolved())
return memRef.asFieldReference().getResolvedMember();
- VM_Field jikesField = new VM_Field(callingClass, memRef, jnodeField.getModifiers(), jnodeField);
+ VM_Field jikesField = new VM_Field(declaringClass, memRef, jnodeField.getModifiers(), jnodeField);
return jikesField;
}
public VmField getJnodeField() {
- return jnodeField;
+ return (VmField)jnodeMember;
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_MemberReference.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -272,7 +272,7 @@
}
if (isFieldReference() && thisClass.isResolved() &&
- thisClass.hasClassInitializerMethod()) {
+ thisClass.getClassInitializerMethod()==null) {
// No dynamic linking code is required to access this field
// because its size and offset is known and its class has no static
// initializer, therefore its value need not be specially initialized
@@ -292,9 +292,9 @@
// This member needs size and offset to be computed, or its class's static
// initializer needs to be run when the member is first "touched", so
// dynamic linking code is required to access the member.
- this.resolveMember();
- return false;
- //return true;
+// this.resolveMember();
+// return false;
+ return true;
}
public final int hashCode() {
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Method.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -24,12 +24,9 @@
VM_CompiledMethod currentCompiledMethod;
- final VmMethod jnodeMethod;
-
protected VM_Method(VM_Class declaringClass, VM_MemberReference memRef,
int modifiers, VM_TypeReference[] exceptionTypes, VmMethod method) {
super(declaringClass, memRef, modifiers & APPLICABLE_TO_METHODS, method);
- jnodeMethod = method;
memRef.asMethodReference().setResolvedMember(this);
this.exceptionTypes = exceptionTypes;
}
@@ -44,16 +41,16 @@
}
public final boolean hasNoInlinePragma() {
- return jnodeMethod.hasNoInlinePragma();
+ return ((VmMethod)jnodeMember).hasNoInlinePragma();
}
public final boolean isSynchronized(){
- return jnodeMethod.isSynchronized();
+ return ((VmMethod)jnodeMember).isSynchronized();
}
public final boolean isStatic() {
- return jnodeMethod.isStatic();
+ return jnodeMember.isStatic();
}
public void invalidateCompiledMethod(VM_CompiledMethod cm) {
@@ -64,15 +61,15 @@
}
public boolean isObjectInitializer() {
- return jnodeMethod.isConstructor();
+ return ((VmMethod)jnodeMember).isConstructor();
}
public boolean isNative() {
- return jnodeMethod.isNative();
+ return ((VmMethod)jnodeMember).isNative();
}
public boolean isAbstract() {
- return jnodeMethod.isAbstract();
+ return ((VmMethod)jnodeMember).isAbstract();
}
public boolean mayWrite(VM_Field f) {
@@ -80,19 +77,19 @@
}
public boolean isInterruptible() {
- return !jnodeMethod.isUninterruptible();
+ return !((VmMethod)jnodeMember).isUninterruptible();
}
public boolean isFinal() {
- return jnodeMethod.isFinal();
+ return jnodeMember.isFinal();
}
public boolean hasInlinePragma() {
- return jnodeMethod.hasInlinePragma();
+ return ((VmMethod)jnodeMember).hasInlinePragma();
}
public boolean isClassInitializer() {
- return jnodeMethod.isInitializer();
+ return ((VmMethod)jnodeMember).isInitializer();
}
public boolean isCompiled() {
@@ -152,15 +149,15 @@
}
public VmMethod getJnodeMethod() {
- return jnodeMethod;
+ return ((VmMethod)jnodeMember);
}
public int getSelector() {
- return jnodeMethod.getSelector();
+ return ((VmMethod)jnodeMember).getSelector();
}
public Offset getTibOffset() {
- return Offset.fromIntZeroExtend(((VmInstanceMethod)jnodeMethod).getTibOffset());
+ return Offset.fromIntZeroExtend(((VmInstanceMethod)jnodeMember).getTibOffset());
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_NormalMethod.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -169,7 +169,8 @@
*/
@Uninterruptible
public final int getLocalWords() {
- return jnodeMethod.getArgSlotCount() + jnodeMethod.getBytecode().getNoLocals();
+ return ((VmMethod)jnodeMember).getArgSlotCount()
+ + ((VmMethod)jnodeMember).getBytecode().getNoLocals();
}
/**
@@ -177,7 +178,7 @@
*/
public final int getOperandWords() throws UninterruptiblePragma {
//return jnodeMethod.getBytecode().getNoLocals();
- return jnodeMethod.getBytecode().getMaxStack();
+ return ((VmMethod)jnodeMember).getBytecode().getMaxStack();
}
/**
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Primitive.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -36,8 +36,6 @@
public final class VM_Primitive extends VM_Type implements VM_Constants,
VM_ClassLoaderConstants {
- final VmPrimitiveClass<?> jnodePrimitive;
-
private static final boolean NOT_REACHED = false;
/**
@@ -101,7 +99,6 @@
*/
VM_Primitive(VM_TypeReference tr, VmPrimitiveClass<?> primitive) {
super(tr, primitive);
- this.jnodePrimitive = primitive;
depth = 0;
acyclic = true; // All primitives are inherently acyclic
byte code = getDescriptor().parseForTypeCode();
@@ -168,7 +165,10 @@
}
@Override
- public void resolve() {}
+ public void resolve() {
+ jnodeType.prepare();
+ jnodeType.prepareForInstantiation();
+ }
@Override
public void instantiate() {}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/classloader/VM_Type.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -52,9 +52,6 @@
final protected VmType<?> jnodeType;
protected Offset thinLockOffset;// = VM_ObjectModel.defaultThinLockOffset();
-
- private boolean inBootImage = false;
-
public static VM_Type JavaLangObjectType;
public static VM_Array JavaLangObjectArrayType;
public static VM_Type JavaLangThrowableType;
@@ -201,7 +198,7 @@
* Is this class part of the virtual machine's boot image?
*/
public final boolean isInBootImage() throws UninterruptiblePragma {
- return inBootImage;
+ return jnodeType.isInBootImage();
}
public final Class getClassForType() {
@@ -271,7 +268,7 @@
* Primitives are always treated as "resolved".
*/
public final boolean isResolved() {
- return jnodeType.isCpRefsResolved();
+ return jnodeType.isPrepared();
}
public final boolean isJavaLangObjectType() { return this==JavaLangObjectType; }
public final int getId() { return id; }
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Debug.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -599,45 +599,46 @@
"r: DOUBLE_CMPL(r,r)", // 595
"r: DOUBLE_CMPG(r,r)", // 596
"stm: GOTO", // 597
- "r: JNODE_ISOLATED_STATICS", // 598
- "r: JNODE_SHARED_STATICS", // 599
- "r: JNODE_PROCESSOR", // 600
- "stm: RETURN(NULL)", // 601
- "stm: RETURN(INT_CONSTANT)", // 602
- "stm: RETURN(r)", // 603
- "stm: RETURN(LONG_CONSTANT)", // 604
- "stm: RETURN(fp0)", // 605
- "stm: RETURN(pfp0)", // 606
- "r: CALL(r,any)", // 607
- "r: CALL(BRANCH_TARGET,any)", // 608
- "r: CALL(INT_LOAD(riv,riv),any)", // 609
- "r: SYSCALL(r,any)", // 610
- "r: SYSCALL(INT_LOAD(riv,riv),any)", // 611
- "r: GET_CAUGHT_EXCEPTION", // 612
- "stm: SET_CAUGHT_EXCEPTION(r)", // 613
- "stm: ROUND_TO_ZERO", // 614
- "stm: CLEAR_FLOATING_POINT_STATE", // 615
- "r: GET_TIME_BASE", // 616
- "stm: YIELDPOINT_OSR(any,any)", // 617
- "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 618
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 619
- "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 620
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 621
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT))", // 622
- "r: INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)))", // 623
- "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHR_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT))),INT_USHR_ACC(r,INT_CONSTANT))", // 624
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 625
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 626
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 627
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 628
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 629
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 630
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 631
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 632
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 633
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 634
- "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 635
- "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 636
+ "r: JNODE_IMT_SELECTOR", // 598
+ "r: JNODE_ISOLATED_STATICS", // 599
+ "r: JNODE_SHARED_STATICS", // 600
+ "r: JNODE_PROCESSOR", // 601
+ "stm: RETURN(NULL)", // 602
+ "stm: RETURN(INT_CONSTANT)", // 603
+ "stm: RETURN(r)", // 604
+ "stm: RETURN(LONG_CONSTANT)", // 605
+ "stm: RETURN(fp0)", // 606
+ "stm: RETURN(pfp0)", // 607
+ "r: CALL(r,any)", // 608
+ "r: CALL(BRANCH_TARGET,any)", // 609
+ "r: CALL(INT_LOAD(riv,riv),any)", // 610
+ "r: SYSCALL(r,any)", // 611
+ "r: SYSCALL(INT_LOAD(riv,riv),any)", // 612
+ "r: GET_CAUGHT_EXCEPTION", // 613
+ "stm: SET_CAUGHT_EXCEPTION(r)", // 614
+ "stm: ROUND_TO_ZERO", // 615
+ "stm: CLEAR_FLOATING_POINT_STATE", // 616
+ "r: GET_TIME_BASE", // 617
+ "stm: YIELDPOINT_OSR(any,any)", // 618
+ "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 619
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))", // 620
+ "load32: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 621
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_SHL_ACC(INT_MOVE(INT_OR_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_CONSTANT))", // 622
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_SHL_ACC(INT_MOVE(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT))),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT))", // 623
+ "r: INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)),INT_CONSTANT)),INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT),INT_CONSTANT)),INT_AND_ACC(BYTE_ALOAD(r,INT_CONSTANT),INT_CONSTANT)))", // 624
+ "r: INT_OR_ACC(INT_MOVE(INT_OR_ACC(INT_OR_ACC(INT_MOVE(INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHL_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT)),INT_SHR_ACC(INT_AND_ACC(r,INT_CONSTANT),INT_CONSTANT))),INT_USHR_ACC(r,INT_CONSTANT))", // 625
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 626
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(r,INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv)),INT_CONSTANT)", // 627
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 628
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHL_ACC(INT_MOVE(INT_CONSTANT),riv),r),INT_CONSTANT)", // 629
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 630
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 631
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_SHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 632
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_MOVE(INT_SHR_ACC(r,riv)),INT_CONSTANT),INT_CONSTANT)", // 633
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 634
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 635
+ "r: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 636
+ "boolcmp: BOOLEAN_CMP_INT(INT_AND_ACC(INT_USHR_ACC(r,riv),INT_CONSTANT),INT_CONSTANT)", // 637
};
}
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_Helpers.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -222,16 +222,16 @@
if(s.getOperand(1) instanceof OPT_IntConstantOperand) {
OPT_RegisterOperand physEDX = new OPT_RegisterOperand(getIR().regpool.getPhysicalRegisterSet().getEDX(), VM_TypeReference.Int);
EMIT(MIR_Unary.mutate(s, IA32_MOV, physEDX, s.getOperand(1)));
- OPT_Operand prev = s.prevInstructionInCodeOrder().getOperand(0);
- OPT_Operand loc;
- if(!prev.isRegister()) {
- loc = burs.ir.regpool.makeTempInt();
- MIR_Move.create(IA32_MOV, loc, prev);
- }
- else {
- loc = prev;
- }
- MIR_Call.setParam(s.nextInstructionInCodeOrder(), 0, loc);
+ // OPT_Operand prev = s.prevInstructionInCodeOrder().getOperand(0);
+ // OPT_Operand loc;
+ // if(!prev.isRegister()) {
+ // loc = burs.ir.regpool.makeTempInt();
+ // MIR_Move.create(IA32_MOV, loc, prev);
+ // }
+ // else {
+ // loc = prev;
+ // }
+ // MIR_Call.setParam(s.nextInstructionInCodeOrder(), 0, loc);
return;
}
}
@@ -1842,15 +1842,14 @@
VM_Class decl = null;
//pusha
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getEAX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getEBX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getECX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getEDX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getEDI(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getESI(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getEBP(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_PUSH, new OPT_RegisterOperand(getESP(), VM_TypeReference.Int)));
-
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getEAX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getEBX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getECX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getEDX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getEDI(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getESI(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getEBP(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_PUSH, new OPT_RegisterOperand(getESP(), VM_TypeReference.Int)));
//Make JTOC register
jtoc = regpool.makeTempInt();
EMIT(JnodeMagic.create(JNODE_SHARED_STATICS, jtoc.asRegister()));
@@ -1872,20 +1871,20 @@
//Call class resolver
jtoc = regpool.makeTempInt();
- EMIT(JnodeMagic.create(JNODE_SHARED_STATICS, (OPT_RegisterOperand)jtoc));
- OPT_Operand target = OPT_MemoryOperand.BD((OPT_RegisterOperand)jtoc,
+ EMIT(JnodeMagic.create(JNODE_SHARED_STATICS, jtoc.asRegister().copyRO()));
+ OPT_Operand target = OPT_MemoryOperand.BD(jtoc.asRegister().copyRO(),
VM_Magic.getVmTypeInitialize().getOffset(), (byte)BYTES_IN_ADDRESS, null, null);
EMIT(MIR_Call.mutate1(s, IA32_CALL, null, null, target, classr.copy()));
//popa
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getEAX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getEBX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getECX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getEDX(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getEDI(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getESI(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getEBP(), VM_TypeReference.Int)));
- EMIT(Nullary.create(IA32_POP, new OPT_RegisterOperand(getESP(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getESP(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getEBP(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getESI(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getEDI(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getEDX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getECX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getEBX(), VM_TypeReference.Int)));
+ EMIT(MIR_UnaryNoRes.create(IA32_POP, new OPT_RegisterOperand(getEAX(), VM_TypeReference.Int)));
}
else
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_MemOp_Helpers.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_MemOp_Helpers.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_MemOp_Helpers.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -6,8 +6,6 @@
import com.ibm.JikesRVM.*;
import com.ibm.JikesRVM.opt.ir.*;
-
-import org.jnode.vm.annotation.MagicPermission;
import org.vmmagic.unboxed.*;
/**
* Contains common BURS helper functions for platforms with memory operands.
@@ -15,7 +13,6 @@
* @author Dave Grove
* @author Stephen Fink
*/
-@MagicPermission
abstract class OPT_BURS_MemOp_Helpers extends OPT_BURS_Common_Helpers {
// word size for memory operands
static final byte B = 0x01; // byte (8 bits)
Modified: branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_STATE.java
===================================================================
--- branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_STATE.java 2006-12-21 21:26:04 UTC (rev 2949)
+++ branches/jikesRVM/core/src/core/com/ibm/JikesRVM/opt/OPT_BURS_STATE.java 2006-12-22 00:45:50 UTC (rev 2950)
@@ -835,33 +835,33 @@
nts_1, // 600
nts_1, // 601
nts_1, // 602
- nts_0, // 603
- nts_1, // 604
- nts_61, // 605
- nts_62, // 606
- nts_33, // 607
- nts_96, // 608
- nts_97, // 609
- nts_33, // 610
- nts_97, // 611
- nts_1, // 612
- nts_0, // 613
- nts_1, // 614
+ nts_1, // 603
+ nts_0, // 604
+ nts_1, // 605
+ nts_61, // 606
+ nts_62, // 607
+ nts_33, // 608
+ nts_96, // 609
+ nts_97, // 610
+ nts_33, // 611
+ nts_97, // 612
+ nts_1, // 613
+ nts_0, // 614
nts_1, // 615
nts_1, // 616
- nts_5, // 617
- nts_98, // 618
+ nts_1, // 617
+ nts_5, // 618
nts_98, // 619
nts_98, // 620
nts_98, // 621
nts_98, // 622
nts_98, // 623
nts_98, // 624
- nts_7, // 625
+ nts_98, // 625
nts_7, // 626
- nts_20, // 627
+ nts_7, // 627
nts_20, // 628
- nts_7, // 629
+ nts_20, // 629
nts_7, // 630
nts_7, // 631
nts_7, // 632
@@ -869,6 +869,7 @@
nts_7, // 634
nts_7, // 635
nts_7, // 636
+ nts_7, // 637
};
/*static final byte arity[] = {
@@ -1078,173 +1079,174 @@
-1, // 203=GET_DOES_IMPLEMENT_FROM_TIB
-1, // 204=GET_ARRAY_ELEMENT_TIB_FROM_TIB
1, // 205=LOWTABLESWITCH
- 0, // 206=JNODE_ISOLATED_STATICS
- 0, // 207=JNODE_SHARED_STATICS
- 0, // 208=JNODE_PROCESSOR
- 0, // 209=ADDRESS_CONSTANT
- 0, // 210=INT_CONSTANT
- 0, // 211=LONG_CONSTANT
- 0, // 212=REGISTER
- 2, // 213=OTHER_OPERAND
- 0, // 214=NULL
- 0, // 215=BRANCH_TARGET
- 2, // 216=INT_ADD_ACC
- 2, // 217=LONG_ADD_ACC
- 2, // 218=INT_SUB_ACC
- 2, // 219=LONG_SUB_ACC
- 2, // 220=INT_MUL_ACC
- 2, // 221=LONG_MUL_ACC
- 1, // 222=INT_NEG_ACC
- 1, // 223=LONG_NEG_ACC
- 2, // 224=INT_SHL_ACC
- 2, // 225=LONG_SHL_ACC
- 2, // 226=INT_SHR_ACC
- 2, // 227=LONG_SHR_ACC
- 2, // 228=INT_USHR_ACC
- 2, // 229=LONG_USHR_ACC
- 2, // 230=INT_AND_ACC
- 2, // 231=LONG_AND_ACC
- 2, // 232=INT_OR_ACC
- 2, // 233=LONG_OR_ACC
- 2, // 234=INT_XOR_ACC
- 1, // 235=INT_NOT_ACC
- 1, // 236=LONG_NOT_ACC
- 2, // 237=LONG_XOR_ACC
- 1, // 238=BOOLEAN_NOT_ACC
- 1, // 239=MATERIALIZE_FP_CONSTANT
- 1, // 240=GET_JTOC
- 0, // 241=GET_CURRENT_PROCESSOR
- 0, // 242=ROUND_TO_ZERO
- 0, // 243=CLEAR_FLOATING_POINT_STATE
- 2, // 244=FP_ADD
- 2, // 245=FP_SUB
- 2, // 246=FP_MUL
- 2, // 247=FP_DIV
- 1, // 248=FP_NEG
- 2, // 249=FP_REM
- 1, // 250=INT_2FP
- 1, // 251=LONG_2FP
- 2, // 252=CMP_CMOV
- 2, // 253=FCMP_CMOV
- 2, // 254=LCMP_CMOV
- 2, // 255=CMP_FCMOV
- 2, // 256=FCMP_FCMOV
- -1, // 257=CALL_SAVE_VOLATILE
- -1, // 258=MIR_START
- -1, // 259=REQUIRE_ESP
- -1, // 260=ADVISE_ESP
- -1, // 261=MIR_LOWTABLESWITCH
- -1, // 262=IA32_FCLEAR
- -1, // 263=DUMMY_DEF
- -1, // 264=DUMMY_USE
- -1, // 265=IA32_FMOV_ENDING_LIVE_RANGE
- -1, // 266=IA32_FMOV
- -1, // 267=IA32_TRAPIF
- -1, // 268=IA32_OFFSET
- -1, // 269=IA32_LOCK_CMPXCHG
- -1, // 270=IA32_ADC
- -1, // 271=IA32_ADD
- -1, // 272=IA32_AND
- -1, // 273=IA32_BSWAP
- -1, // 274=IA32_BT
- -1, // 275=IA32_BTC
- -1, // 276=IA32_BTR
- -1, // 277=IA32_BTS
- -1, // 278=IA32_SYSCALL
- -1, // 279=IA32_CALL
- -1, // 280=IA32_CDQ
- -1, // 281=IA32_CMOV
- -1, // 282=IA32_CMP
- -1, // 283=IA32_CMPXCHG
- -1, // 284=IA32_DEC
- -1, // 285=IA32_DIV
- -1, // 286=IA32_FADD
- -1, // 287=IA32_FADDP
- -1, // 288=IA32_FCHS
- -1, // 289=IA32_FCMOV
- -1, // 290=IA32_FCOMI
- -1, // 291=IA32_FCOMIP
- -1, // 292=IA32_FDIV
- -1, // 293=IA32_FDIVP
- -1, // 294=IA32_FDIVR
- -1, // 295=IA32_FDIVRP
- -1, // 296=IA32_FEXAM
- -1, // 297=IA32_FXCH
- -1, // 298=IA32_FFREE
- -1, // 299=IA32_FIADD
- -1, // 300=IA32_FIDIV
- -1, // 301=IA32_FIDIVR
- -1, // 302=IA32_FILD
- -1, // 303=IA32_FIMUL
- -1, // 304=IA32_FINIT
- -1, // 305=IA32_FIST
- -1, // 306=IA32_FISTP
- -1, // 307=IA32_FISUB
- -1, // 308=IA32_FISUBR
- -1, // 309=IA32_FLD
- -1, // 310=IA32_FLDCW
- -1, // 311=IA32_FLD1
- -1, // 312=IA32_FLDL2T
- -1, // 313=IA32_FLDL2E
- -1, // 314=IA32_FLDPI
- -1, // 315=IA32_FLDLG2
- -1, // 316=IA32_FLDLN2
- -1, // 317=IA32_FLDZ
- -1, // 318=IA32_FMUL
- -1, // 319=IA32_FMULP
- -1, // 320=IA32_FNSTCW
- -1, // 321=IA32_FNINIT
- -1, // 322=IA32_FNSAVE
- -1, // 323=IA32_FPREM
- -1, // 324=IA32_FRSTOR
- -1, // 325=IA32_FST
- -1, // 326=IA32_FSTCW
- -1, // 327=IA32_FSTP
- -1, // 328=IA32_FSUB
- -1, // 329=IA32_FSUBP
- -1, // 330=IA32_FSUBR
- -1, // 331=IA32_FSUBRP
- -1, // 332=IA32_FUCOMI
- -1, // 333=IA32_FUCOMIP
- -1, // 334=IA32_IDIV
- -1, // 335=IA32_IMUL1
- -1, // 336=IA32_IMUL2
- -1, // 337=IA32_INC
- -1, // 338=IA32_INT
- -1, // 339=IA32_JCC
- -1, // 340=IA32_JCC2
- -1, // 341=IA32_JMP
- -1, // 342=IA32_LEA
- -1, // 343=IA32_LOCK
- -1, // 344=IA32_MOV
- -1, // 345=IA32_MOVZX__B
- -1, // 346=IA32_MOVSX__B
- -1, // 347=IA32_MOVZX__W
- -1, // 348=IA32_MOVSX__W
- -1, // 349=IA32_MUL
- -1, // 350=IA32_NEG
- -1, // 351=IA32_NOT
- -1, // 352=IA32_OR
- -1, // 353=IA32_POP
- -1, // 354=IA32_PUSH
- -1, // 355=IA32_RCL
- -1, // 356=IA32_RCR
- -1, // 357=IA32_ROL
- -1, // 358=IA32_ROR
- -1, // 359=IA32_RET
- -1, // 360=IA32_SAL
- -1, // 361=IA32_SAR
- -1, // 362=IA32_SHL
- -1, // 363=IA32_SHR
- -1, // 364=IA32_SBB
- -1, // 365=IA32_SET__B
- -1, // 366=IA32_SHLD
- -1, // 367=IA32_SHRD
- -1, // 368=IA32_SUB
- -1, // 369=IA32_TEST
- -1, // 370=IA32_XOR
- -1, // 371=IA32_RDTSC
- -1, // 372=MIR_END
+ 0, // 206=JNODE_IMT_SELECTOR
+ 0, // 207=JNODE_ISOLATED_STATICS
+ 0, // 208=JNODE_SHARED_STATICS
+ 0, // 209=JNODE_PROCESSOR
+ 0, // 210=ADDRESS_CONSTANT
+ 0, // 211=INT_CONSTANT
+ 0, // 212=LONG_CONSTANT
+ 0, // 213=REGISTER
+ 2, // 214=OTHER_OPERAND
+ 0, // 215=NULL
+ 0, // 216=BRANCH_TARGET
+ 2, // 217=INT_ADD_ACC
+ 2, // 218=LONG_ADD_ACC
+ 2, // 219=INT_SUB_ACC
+ 2, // 220=LONG_SUB_ACC
+ 2, // 221=INT_MUL_ACC
+ 2, // 222=LONG_MUL_ACC
+ 1, // 223=INT_NEG_ACC
+ 1, // 224=LONG_NEG_ACC
+ 2, // 225=INT_SHL_ACC
+ 2, // 226=LONG_SHL_ACC
+ 2, // 227=INT_SHR_ACC
+ 2, // 228=LONG_SHR_ACC
+ 2, // 229=INT_USHR_ACC
+ 2, // 230=LONG_USHR_ACC
+ 2, // 231=INT_AND_ACC
+ 2, // 232=LONG_AND_ACC
+ 2, // 233=INT_OR_ACC
+ 2, // 234=LONG_OR_ACC
+ 2, // 235=INT_XOR_ACC
+ 1, // 236=INT_NOT_ACC
+ 1, // 237=LONG_NOT_ACC
+ 2, // 238=LONG_XOR_ACC
+ 1, // 239=BOOLEAN_NOT_ACC
+ 1, // 240=MATERIALIZE_FP_CONSTANT
+ 1, // 241=GET_JTOC
+ 0, // 242=GET_CURRENT_PROCESSOR
+ 0, // 243=ROUND_TO_ZERO
+ 0, // 244=CLEAR_FLOATING_POINT_STATE
+ 2, // 245=FP_ADD
+ 2, // 246=FP_SUB
+ 2, // 247=FP_MUL
+ 2, // 248=FP_DIV
+ 1, // 249=FP_NEG
+ 2, // 250=FP_REM
+ 1, // 251=INT_2FP
+ 1, // 252=LONG_2FP
+ 2, // 253=CMP_CMOV
+ 2, // 254=FCMP_CMOV
+ 2, // 255=LCMP_CMOV
+ 2, // 256=CMP_FCMOV
+ 2, // 257=FCMP_FCMOV
+ -1, // 258=CALL_SAVE_VOLATILE
+ -1, // 259=MIR_START
+ -1, // 260=REQUIRE_ESP
+ -1, // 261=ADVISE_ESP
+ -1, // 262=MIR_LOWTABLESWITCH
+ -1, // 263=IA32_FCLEAR
+ -1, // 264=DUMMY_DEF
+ -1, // 265=DUMMY_USE
+ -1, // 266=IA32_FMOV_ENDING_LIVE_RANGE
+ -1, // 267=IA32_FMOV
+ -1, // 268=IA32_TRAPIF
+ -1, // 269=IA32_OFFSET
+ -1, // 270=IA32_LOCK_CMPXCHG
+ -1, // 271=IA32_ADC
+ -1, // 272=IA32_ADD
+ -1, // 273=IA32_AND
+ -1, // 274=IA32_BSWAP
+ -1, // 275=IA32_BT
+ -1, // 276=IA32_BTC
+ -1, // 277=IA32_BTR
+ -1, // 278=IA32_BTS
+ -1, // 279=IA32_SYSCALL
+ -1, // 280=IA32_CALL
+ -1, // 281=IA32_CDQ
+ -1, // 282=IA32_CMOV
+ -1, // 283=IA32_CMP
+ -1, // 284=IA32_CMPXCHG
+ -1, // 285=IA32_DEC
+ -1, // 286=IA32_DIV
+ -1, // 287=IA32_FADD
+ -1, // 288=IA32_FADDP
+ -1, // 289=IA32_FCHS
+ -1, // 290=IA32_FCMOV
+ -1, // 291=IA32_FCOMI
+ -1, // 292=IA32_FCOMIP
+ -1, // 293=IA32_FDIV
+ -1, // 294=IA32_FDIVP
+ -1, // 295=IA32_FDIVR
+ -1, // 296=IA32_FDIVRP
+ -1, // 297=IA32_FEXAM
+ -1, // 298=IA32_FXCH
+ -1, // 299=IA32_FFREE
+ -1, // 300=IA32_FIADD
+ -1, // 301=IA32_FIDIV
+ -1, // 302=IA32_FIDIVR
+ -1, // 303=IA32_FILD
+ -1, // 304=IA32_FIMUL
+ -1, // 305=IA32_FINIT
+ -1, // 306=IA32_FIST
+ -1, // 307=IA32_FISTP
+ -1, // 308=IA32_FISUB
+ -1, // 309=IA32_FISUBR
+ -1, // 310=IA32_FLD
+ -1, // 311=IA32_FLDCW
+ -1, // 312=IA32_FLD1
+ -1, // 313=IA32_FLDL2T
+ -1, // 314=IA32_FLDL2E
+ -1, // 315=IA32_FLDPI
+ -1, // 316=IA32_FLDLG2
+ -1, // 317=IA32_FLDLN2
+ -1, // 318=IA32_FLDZ
+ -1, // 319=IA32_FMUL
+ -1, // 320=IA32_FMULP
+ -1, // 321=IA32_FNSTCW
+ -1, // 322=IA32_FNINIT
+ -1, // 323=IA32_FNSAVE
+ -1, // 324=IA32_FPREM
+ -1, // 325=IA32_FRSTOR
+ -1, // 326=IA32_FST
+ -1, // 327=IA32_FSTCW
+ -1, // 328=IA32_FSTP
+ -1, // 329=IA32_FSUB
+ -1, // 330=IA32_FSUBP
+ -1, // 331=IA32_FSUBR
+ -1, // 332=IA32_FSUBRP
+ -1, // 333=IA32_FUCOMI
+ -1, // 334=IA32_FUCOMIP
+ -1, // 335=IA32_IDIV
+ -1, // 336=IA32_IMUL1
+ -1, // 337=IA32_IMUL2
+ -1, // 338=IA32_INC
+ -1, // 339=IA32_INT
+ -1, // 340=IA32_JCC
+ -1, // 341=IA32_JCC2
+ -1, // 342=IA32_JMP
+ -1, // 343=IA32_LEA
+ -1, // 344=IA32_LOCK
+ -1, // 345=IA32_MOV
+ -1, // 346=IA32_MOVZX__B
+ -1, // 347=IA32_MOVSX__B
+ -1, // 348=IA32_MOVZX__W
+ -1, // 349=IA32_MOVSX__W
+ -1, // 350=IA32_MUL
+ -1, // 351=IA32_NEG
+ -1, // 352=IA32_NOT
+ -1, // 353=IA32_OR
+ -1, // 354=IA32_POP
+ -1, // 355=IA32_PUSH
+ -1, // 356=IA32_RCL
+ -1, // 357=IA32_RCR
+ -1, // 358=IA32_ROL
+ -1, // 359=IA32_ROR
+ -1, // 360=IA32_RET
+ -1, // 361=IA32_SAL
+ -1, // 362=IA32_SAR
+ -1, // 363=IA32_SHL
+ -1, // 364=IA32_SHR
+ -1, // 365=IA32_SBB
+ -1, // 366=IA32_SET__B
+ -1, // 367=IA32_SHLD
+ -1, // 368=IA32_SHRD
+ -1, // 369=IA32_SUB
+ -1, // 370=IA32_TEST
+ -1, // 371=IA32_XOR
+ -1, // 372=IA32_RDTSC
+ -1, // 373=MIR_END
};*/
static final char decode[][] = {null,
@@ -1396,16 +1398,16 @@
590,
591,
597,
- 601,
602,
603,
604,
605,
606,
- 613,
+ 607,
614,
615,
- 617,
+ 616,
+ 618,
},
{// r_NT
0,
@@ -1647,24 +1649,25 @@
598,
599,
600,
- 607,
+ 601,
608,
609,
610,
611,
612,
- 616,
- 619,
- 621,
+ 613,
+ 617,
+ 620,
622,
623,
624,
625,
- 627,
- 629,
- 631,
- 633,
- 635,
+ 626,
+ 628,
+ 630,
+ 632,
+ 634,
+ 636,
},
{// czr_NT
0,
@@ -1766,8 +1769,8 @@
28,
29,
441,
- 618,
- 620,
+ 619,
+ 621,
},
{// load64_NT
0,
@@ -1949,12 +1952,12 @@
118,
120,
122,
- 626,
- 628,
- 630,
- 632,
- 634,
- 636,
+ 627,
+ 629,
+ 631,
+ 633,
+ 635,
+ 637,
},
};
@@ -2064,7 +2067,7 @@
// r: GET_CAUGHT_EXCEPTION
if (15 < p.cost_r) {
p.cost_r = (char)(15);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7A0000; // p.r = 244
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7A8000; // p.r = 245
closure_r(p, 15);
}
}
@@ -4312,7 +4315,7 @@
c = STATE(lchild.child1).cost_r + STATE(lchild.child2.child2).cost_riv + ((VR(p) == 0) && (VLRLL(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7D8000; // p.r = 251
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7E0000; // p.r = 252
closure_r(p, c);
}
}
@@ -4339,7 +4342,7 @@
c = STATE(lchild.child1.child2).cost_riv + STATE(lchild.child2).cost_r + ((VR(p) == 0) && (VLLLL(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7E0000; // p.r = 252
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7E8000; // p.r = 253
closure_r(p, c);
}
}
@@ -4365,7 +4368,7 @@
c = STATE(lchild.child1.child1).cost_r + STATE(lchild.child1.child2).cost_riv + ((VR(p) == 0) && (VLR(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7E8000; // p.r = 253
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7F0000; // p.r = 254
closure_r(p, c);
}
}
@@ -4391,7 +4394,7 @@
c = STATE(lchild.child1.child1).cost_r + STATE(lchild.child1.child2).cost_riv + ((VR(p) == 1) && (VLR(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7F0000; // p.r = 254
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7F8000; // p.r = 255
closure_r(p, c);
}
}
@@ -4417,7 +4420,7 @@
c = STATE(lchild.child1.child1).cost_r + STATE(lchild.child1.child2).cost_riv + ((VR(p) == 0) && (VLR(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7F8000; // p.r = 255
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x800000; // p.r = 256
closure_r(p, c);
}
}
@@ -4442,7 +4445,7 @@
c = STATE(lchild.child1.child1).cost_r + STATE(lchild.child1.child2).cost_riv + ((VR(p) == 1) && (VLR(p) == 1) && EQ_NE(BooleanCmp.getCond(P(p)))? 39:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x800000; // p.r = 256
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x808000; // p.r = 257
closure_r(p, c);
}
}
@@ -5473,7 +5476,7 @@
c = STATE(lchild).cost_r + STATE(rchild).cost_any + 13;
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x778000; // p.r = 239
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x780000; // p.r = 240
closure_r(p, c);
}
if ( // r: CALL(BRANCH_TARGET,any)
@@ -5482,7 +5485,7 @@
c = STATE(rchild).cost_any + 13;
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x780000; // p.r = 240
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x788000; // p.r = 241
closure_r(p, c);
}
}
@@ -5492,7 +5495,7 @@
c = STATE(lchild.child1).cost_riv + STATE(lchild.child2).cost_riv + STATE(rchild).cost_any + 11;
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x788000; // p.r = 241
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x790000; // p.r = 242
closure_r(p, c);
}
}
@@ -5511,7 +5514,7 @@
c = STATE(lchild).cost_r + STATE(rchild).cost_any + 13;
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x790000; // p.r = 242
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x798000; // p.r = 243
closure_r(p, c);
}
if ( // r: SYSCALL(INT_LOAD(riv,riv),any)
@@ -5520,7 +5523,7 @@
c = STATE(lchild.child1).cost_riv + STATE(lchild.child2).cost_riv + STATE(rchild).cost_any + 11;
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x798000; // p.r = 243
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7A0000; // p.r = 244
closure_r(p, c);
}
}
@@ -5623,7 +5626,7 @@
// r: GET_TIME_BASE
if (15 < p.cost_r) {
p.cost_r = (char)(15);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7A8000; // p.r = 245
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7B0000; // p.r = 246
closure_r(p, 15);
}
}
@@ -5809,6 +5812,21 @@
}
}
+private void label_JNODE_IMT_SELECTOR(OPT_BURS_TreeNode p) {
+ int c;
+ p.word0 = 0;
+ p.initCost();
+ OPT_BURS_TreeNode lchild, rchild;
+ lchild = p.child1;
+ rchild = p.child2;
+ // r: JNODE_IMT_SELECTOR
+ if (10 < p.cost_r) {
+ p.cost_r = (char)(10);
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x760000; // p.r = 236
+ closure_r(p, 10);
+ }
+}
+
private void label_JNODE_ISOLATED_STATICS(OPT_BURS_TreeNode p) {
int c;
p.word0 = 0;
@@ -5819,7 +5837,7 @@
// r: JNODE_ISOLATED_STATICS
if (10 < p.cost_r) {
p.cost_r = (char)(10);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x760000; // p.r = 236
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x768000; // p.r = 237
closure_r(p, 10);
}
}
@@ -5834,7 +5852,7 @@
// r: JNODE_SHARED_STATICS
if (10 < p.cost_r) {
p.cost_r = (char)(10);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x768000; // p.r = 237
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x770000; // p.r = 238
closure_r(p, 10);
}
}
@@ -5849,7 +5867,7 @@
// r: JNODE_PROCESSOR
if (10 < p.cost_r) {
p.cost_r = (char)(10);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x770000; // p.r = 238
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x778000; // p.r = 239
closure_r(p, 10);
}
}
@@ -6677,7 +6695,7 @@
c = STATE(lchild.child1.child1.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child1.child2.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child2.child1.child1.child1.child1).cost_r + STATE(rchild.child1.child1.child1.child1).cost_r + ((VLLLLLR(p) == 255) && (VLLLRLLR(p) == 255) && (VLLRLLR(p) == 255) && (VLLRLLR(p) == 255) && (VRR(p) == 24) && (VLLRR(p) == 16) && (VLLLRR(p) == 8) && (VLLLLLLR(p)+1 == VLLLRLLLR(p)) && (VLLLRLLLR(p)+1 == VLLRLLLR(p)) && (VLLRLLLR(p)+1 == VRLLLR(p)) && ALoad.getArray(PLLLLLL(p)).similar(ALoad.getArray(PLLLRLLL(p))) && ALoad.getArray(PLLLRLLL(p)).similar(ALoad.getArray(PLLRLLL(p))) && ALoad.getArray(PLLRLLL(p)).similar(ALoad.getArray(PRLLL(p))) ? 15:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7B0000; // p.r = 246
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7B8000; // p.r = 247
closure_r(p, c);
}
}
@@ -6750,7 +6768,7 @@
c = STATE(lchild.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child2.child1.child1.child1.child1).cost_r + STATE(rchild.child1.child1.child1.child1.child1).cost_r + STATE(rchild.child1.child1.child2.child1.child1.child1.child1).cost_r + ((VLLLR(p) == 255) && (VLLRLLR(p) == 255) && (VRLLLR(p) == 255) && (VRLLRLLR(p) == 255) && (VLLRR(p) == 8) && (VRLLRR(p) == 8) && (VRR(p) == 16) && (VLLLLR(p)+1 == VLLRLLLR(p)) && (VLLRLLLR(p)+1 == VRLLLLR(p)) && (VRLLLLR(p)+1 == VRLLRLLLR(p)) && ALoad.getArray(PLLLL(p)).similar(ALoad.getArray(PLLRLLL(p))) && ALoad.getArray(PLLRLLL(p)).similar(ALoad.getArray(PRLLLL(p))) && ALoad.getArray(PRLLLL(p)).similar(ALoad.getArray(PRLLRLLL(p))) ? 28:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7B8000; // p.r = 247
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7C0000; // p.r = 248
closure_r(p, c);
}
}
@@ -6787,7 +6805,7 @@
c = STATE(lchild.child1.child1.child1.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child1.child2.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child2.child1.child1.child1.child1).cost_r + STATE(rchild.child1.child1).cost_r + ((VLLLLLLR(p) == 255) && (VLLLRLLR(p) == 255) && (VLLRLLR(p) == 255) && (VRR(p) == 255) && (VLLLLLR(p) == 24) && (VLLLRR(p) == 16) && (VLLRR(p) == 8) && (VLLLLLLLR(p)+1 == VLLLRLLLR(p)) && (VLLLRLLLR(p)+1 == VLLRLLLR(p)) && (VLLRLLLR(p)+1 == VRLR(p)) && ALoad.getArray(PLLLLLLL(p)).similar(ALoad.getArray(PLLLRLLL(p))) && ALoad.getArray(PLLLRLLL(p)).similar(ALoad.getArray(PLLRLLL(p))) && ALoad.getArray(PLLRLLL(p)).similar(ALoad.getArray(PRL(p))) ? 28:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7C0000; // p.r = 248
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7C8000; // p.r = 249
closure_r(p, c);
}
}
@@ -6823,7 +6841,7 @@
c = STATE(lchild.child1.child1.child1.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child1.child2.child1.child1).cost_r + STATE(rchild.child1.child1.child1.child1.child1).cost_r + STATE(rchild.child2.child1.child1).cost_r + ((VLLLLLLR(p) == 255) && (VLLLRR(p) == 255) && (VRLLLR(p) == 255) && (VRRR(p) == 255) && (VLLLLLR(p) == 8) && (VLLR(p) == 16) && (VRLLR(p) == 8) && (VLLLLLLLR(p)+1 == VLLLRLR(p)) && (VLLLRLR(p)+1 == VRLLLLR(p)) && (VRLLLLR(p)+1 == VRRLR(p)) && ALoad.getArray(PLLLLLLL(p)).similar(ALoad.getArray(PLLLRL(p))) && ALoad.getArray(PLLLRL(p)).similar(ALoad.getArray(PRLLLL(p))) && ALoad.getArray(PRLLLL(p)).similar(ALoad.getArray(PRRL(p))) ? 28:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7C8000; // p.r = 249
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7D0000; // p.r = 250
closure_r(p, c);
}
}
@@ -6850,7 +6868,7 @@
c = STATE(lchild.child1.child1.child1.child1.child1.child1).cost_r + STATE(lchild.child1.child1.child2.child1.child1).cost_r + STATE(lchild.child1.child2.child1.child1).cost_r + STATE(rchild.child1).cost_r + ((VLLLLLLR(p) == 0xFF) && (VLLLRLR(p) == 0xFF00) && (VLLRLR(p) == 0xFF0000) && (VLLLLLR(p) == 24) && (VLLLRR(p) == 8) && (VLLRR(p) == 8) && (VRR(p) == 24) && follow(BinaryAcc.getResult(PLLLLLL(p))).similar(follow(BinaryAcc.getResult(PLLLRL(p)))) && follow(BinaryAcc.getResult(PLLLLLL(p))).similar(follow(BinaryAcc.getResult(PLLRL(p)))) && follow(BinaryAcc.getResult(PLLLLLL(p))).similar(follow(BinaryAcc.getResult(PR(p)))) ? 26:INFINITE);
if (c < p.cost_r) {
p.cost_r = (char)(c);
- p.word0 = (p.word0 & 0xFF007FFF) | 0x7D0000; // p.r = 250
+ p.word0 = (p.word0 & 0xFF007FFF) | 0x7D8000; // p.r = 251
closure_r(p, c);
}
}
@@ -8653,6 +8671,7 @@
case DOUBLE_AS_LONG_BITS_opcode: label_DOUBLE_AS_LONG_BITS(p); break;
case LONG_BITS_AS_DOUBLE_opcode: label_LONG_BITS_AS_DOUBLE(p); break;
case LOWTABLESWITCH_opcode: label_LOWTABLESWITCH(p); break;
+ case JNODE_IMT_SELECTOR_opcode: label_JNODE_IMT_SELECTOR(p); break;
case JNODE_ISOLATED_STATICS_opcode: label_JNODE_ISOLATED_STATICS(p); break;
case JNODE_SHARED_STATICS_opcode: label_JNODE_SHARED_STATICS(p); break;
case JNODE_PROCESSOR_opcode: label_JNODE_PROCESSOR(p); break;
@@ -8727,16 +8746,17 @@
case 1: // stm: r
if (kidnumber == 0) return p;
break;
- case 616: // r: GET_TIME_BASE
- case 615: // stm: CLEAR_FLOATING_POINT_STATE
- case 614: // stm: ROUND_TO_ZERO
- case 612: // r: GET_CAUGHT_EXCEPTION
- case 604: // stm: RETURN(LONG_CONSTANT)
- case 602: // stm: RETURN(INT_CONSTANT)
- case 601: // stm: RETURN(NULL)
- case 600: // r: JNODE_PROCESSOR
- case 599: // r: JNODE_SHARED_STATICS
- case 598: // r: JNODE_ISOLATED_STATICS
+ case 617: // r: GET_TIME_BASE
+ case 616: // stm: CLEAR_FLOATING_POINT_STATE
+ case 615: // stm: ROUND_TO_ZERO
+ case 613: // r: GET_CAUGHT_EXCEPTION
+ case 605: // stm: RETURN(LONG_CONSTANT)
+ case 603: // stm: RETURN(INT_CONSTANT)
+ case 602: // stm: RETURN(NULL)
+ case 601: // r: JNODE_PROCESSOR
+ case 600: // r: JNODE_SHARED_STATICS
+ case 599: // r: JNODE_ISOLATED_STATICS
+ case 598: // r: JNODE_IMT_SELECTOR
case 597: // stm: GOTO
case 461: // r: GET_CURRENT_PROCESSOR
case 460: // r: LONG_MOVE(LONG_CONSTANT)
@@ -8766,9 +8786,9 @@
case 8: // riv: INT_CONSTANT
case 2: // r: REGISTER
break;
- case 617: // stm: YIELD...
[truncated message content] |