From: <cap...@us...> - 2007-08-24 16:09:11
|
Revision: 13379 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13379&view=rev Author: captain5050 Date: 2007-08-24 09:09:08 -0700 (Fri, 24 Aug 2007) Log Message: ----------- Update OSR to reflect object constants being operands possible MIR operands. Update Javadoc. Use smaller primitive types than int where possible. Modified Paths: -------------- rvmroot/trunk/rvm/src/org/jikesrvm/compilers/opt/OPT_LinearScan.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_Constants.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_EncodedOSRMap.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_LocalRegPair.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_MapIterator.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_VariableElement.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_BaselineExecStateExtractor.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_OptExecStateExtractor.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_BaselineExecStateExtractor.java rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_OptExecStateExtractor.java Modified: rvmroot/trunk/rvm/src/org/jikesrvm/compilers/opt/OPT_LinearScan.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/compilers/opt/OPT_LinearScan.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/compilers/opt/OPT_LinearScan.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -1119,7 +1119,7 @@ // Attempt to find a free physical register for this interval. OPT_Register phys = findAvailableRegister(r); if (phys != null) { - // Found a free register. Perfom the register assignment. + // Found a free register. Perform the register assignment. container.assign(phys); if (debug) { System.out.println("First allocation " + phys + " " + container); @@ -2490,18 +2490,15 @@ } /** - * Constructor for this compiler phase + * Return this instance of this phase. This phase contains no + * per-compilation instance fields. + * @param ir not used + * @return this */ - private static final Constructor<OPT_CompilerPhase> constructor = getCompilerPhaseConstructor(UpdateOSRMaps.class); - - /** - * Get a constructor object for this compiler phase - * @return compiler phase constructor - */ - public Constructor<OPT_CompilerPhase> getClassConstructor() { - return constructor; + public OPT_CompilerPhase newExecution(OPT_IR ir) { + return this; } - + public String getName() { return "Update OSRMaps"; } @@ -2510,24 +2507,20 @@ return false; } - private OPT_IR ir; - - /* - * Iterate over the IR-based OSR map, and update symbolic registers - * with real reg number or spill locations. - * Verify there are only two types of operands: - * OPT_ConstantOperand - * OPT_RegisterOperand - * for integer constant, we save the value of the integer - * - * The LONG register has another half part. - * - * CodeSpill replaces any allocated symbolic register by - * physical registers. - */ + /** + * Iterate over the IR-based OSR map, and update symbolic registers + * with real reg number or spill locations. + * Verify there are only two types of operands: + * OPT_ConstantOperand + * OPT_RegisterOperand + * for integer constant, we save the value of the integer + * + * The LONG register has another half part. + * + * CodeSpill replaces any allocated symbolic register by + * physical registers. + */ public void perform(OPT_IR ir) throws OPT_OptimizingCompilerException { - this.ir = ir; - // list of OsrVariableMapElement //LinkedList<OSR_VariableMapElement> mapList = ir.MIRInfo.osrVarMap.list; //for (int numOsrs=0, m=mapList.size(); numOsrs<m; numOsrs++) { @@ -2551,7 +2544,7 @@ if (op.isRegister()) { OPT_Register sym_reg = ((OPT_RegisterOperand) op).getRegister(); - setRealPosition(tuple, sym_reg); + setRealPosition(ir, tuple, sym_reg); // get another half part of long register if (VM.BuildFor32Addr && (tuple.typeCode == OSR_Constants.LongTypeCode)) { @@ -2562,11 +2555,12 @@ if (VM.VerifyAssertions) VM._assert(other_op.isRegister()); OPT_Register other_reg = ((OPT_RegisterOperand) other_op).getRegister(); - setRealPosition(other, other_reg); + setRealPosition(ir, other, other_reg); } /* According to OPT_ConvertToLowLevelIR, StringConstant, LongConstant, * NullConstant, FloatConstant, and DoubleConstant are all materialized - * The only thing left is the integer constant. + * The only thing left is the integer constants which could encode + * non-moveable objects. * POTENTIAL DRAWBACKS: since any long, float, and double are moved * to register and treated as use, it may consume more registers and * add unnecessary MOVEs. @@ -2592,11 +2586,9 @@ } // for each tuple } // for each inlined method } // for each osr instruction - - this.ir = null; } // end of method - void setRealPosition(OSR_LocalRegPair tuple, OPT_Register sym_reg) { + void setRealPosition(OPT_IR ir, OSR_LocalRegPair tuple, OPT_Register sym_reg) { if (VM.VerifyAssertions) VM._assert(sym_reg != null); int REG_MASK = 0x01F; @@ -2616,12 +2608,12 @@ } } // end of setRealPosition - static void setTupleValue(OSR_LocalRegPair tuple, int type, int value) { + static void setTupleValue(OSR_LocalRegPair tuple, byte type, int value) { tuple.valueType = type; tuple.value = Word.fromIntSignExtend(value); } // end of setTupleValue - static void setTupleValue(OSR_LocalRegPair tuple, int type, Word value) { + static void setTupleValue(OSR_LocalRegPair tuple, byte type, Word value) { tuple.valueType = type; tuple.value = value; } // end of setTupleValue Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_Constants.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_Constants.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_Constants.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -46,7 +46,8 @@ /* * signifies there is no map entry for this machine code offset - */ int NO_OSR_ENTRY = (int) (OSRI_MASK >>> OSRI_SHIFT); + */ + int NO_OSR_ENTRY = (int) (OSRI_MASK >>> OSRI_SHIFT); int INVALID_BCI = (int) (BCI_MASK >>> BCI_SHIFT); int INVALID_IEI = (int) (IEI_MASK >>> IEI_SHIFT); @@ -78,33 +79,40 @@ int NEXT_BIT = 0x80000000; /* kind of element */ int KIND_MASK = 0x00400000; int KIND_SHIFT = 22; - /* type code */ int TCODE_MASK = 0x00380000; + /* type code */ + int TCODE_MASK = 0x00380000; int TCODE_SHIFT = 19; - /* number */ int NUM_MASK = 0x0007fff8; + /* number */ + int NUM_MASK = 0x0007fff8; int NUM_SHIFT = 3; - /* value type */ int VTYPE_MASK = 0x00000007; + /* value type */ + int VTYPE_MASK = 0x00000007; int VTYPE_SHIFT = 0; //////////////////////////////////////////// // Part II constants used when extract VM scope descriptor //////////////////////////////////////////// - /* the kind of element */ int LOCAL = 0; - int STACK = 1; + /** Used to indicate the kind of element is a local variable */ + boolean LOCAL = false; + /** Used to indicate the kind of element is from the operand stack */ + boolean STACK = true; - /* the type code of the element, used in osr map encoding. */ int INT = 0; - int HIGH_64BIT = 1; //used to store the high bits of a 64-bit value - int LONG = 2; - int FLOAT = 3; - int DOUBLE = 4; - int RET_ADDR = 5; - int REF = 6; - int WORD = 7; + /* the type code of the element, used in osr map encoding. */ + byte INT = 0; + byte HIGH_64BIT = 1; //used to store the high bits of a 64-bit value + byte LONG = 2; + byte FLOAT = 3; + byte DOUBLE = 4; + byte RET_ADDR = 5; + byte REF = 6; + byte WORD = 7; - /* value type */ int ICONST = 0; - int ACONST = 3; - int LCONST = 4; - int PHYREG = 1; - int SPILL = 2; + /* value type */ + byte ICONST = 0; + byte ACONST = 3; + byte LCONST = 4; + byte PHYREG = 1; + byte SPILL = 2; ///////////////////////////////////////////////// // Part III Pseudo bytecodes Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_EncodedOSRMap.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_EncodedOSRMap.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_EncodedOSRMap.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -254,7 +254,7 @@ first |= NEXT_BIT; } - first |= (tuple.kind << KIND_SHIFT); + first |= (tuple.kind ? 1 :0 ) << KIND_SHIFT; first |= (tuple.valueType << VTYPE_SHIFT); @@ -296,7 +296,7 @@ if (!isLast) first |= NEXT_BIT; - first |= (tuple.kind << KIND_SHIFT); + first |= (tuple.kind ? 1 : 0 ) << KIND_SHIFT; first |= (tuple.valueType << VTYPE_SHIFT); } first |= (LONG << TCODE_SHIFT); @@ -332,7 +332,7 @@ * it may be the last, and it is not the first half.*/ first = (tuple.num << NUM_SHIFT) & NUM_MASK; if (!isLast) first |= NEXT_BIT; - first |= (tuple.kind << KIND_SHIFT); + first |= (tuple.kind ? 1 : 0) << KIND_SHIFT; first |= (tuple.valueType << VTYPE_SHIFT); } first |= (WORD << TCODE_SHIFT); Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_LocalRegPair.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_LocalRegPair.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_LocalRegPair.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -17,35 +17,36 @@ import org.vmmagic.unboxed.Word; /** - * An OSR_LocalRegPair keeps the type information and localtion of + * An OSR_LocalRegPair keeps the type information and location of * a local variable/stack slot from byte code to machine code. */ public class OSR_LocalRegPair implements OSR_Constants { - // is it a local or stack? - public int kind; + /** is it a local or stack? */ + public final boolean kind; - // what's the number of local of stack + /** what's the number of local of stack */ public int num; - // what's the type code? ('I', 'J', 'D', etc) - public byte typeCode; + /** what's the type code? ('I', 'J', 'D', etc) */ + public final byte typeCode; - /* what's the register oprand, from which we can get the symbolic register. + /** + * What's the register operand, from which we can get the symbolic register. * The operand could be symbolic register, or constants, we need to take * it out later. */ - public OPT_Operand operand; + public final OPT_Operand operand; /* rest part only available after updated by OPT_LinearScan.updateOSRMaps. */ /* A reg value could be an integer constant (ICONST), * a physical register (PHYREG), or * a spill on the stack (SPILL). - * The valueType is one of them, combined with the typeCode, one shuld be + * The valueType is one of them, combined with the typeCode, one should be * able to recover the value of a variable. */ - public int valueType; + public byte valueType; /* The meaning of value field depends on valueType * for ICONST, ACONST and LCONST, it is the value of the constant, @@ -61,12 +62,12 @@ /* The LiveAnalysis phase builds the linked list of tuples, and * the long type variables will get another half register - * ( splitted in BURS ). + * ( split in BURS ). * After register allocation, we should not use <code>operand</code> * anymore. The physical register number, spilled location, or * constant value is represented by (valueType, value) */ - public OSR_LocalRegPair(int kind, int num, byte type, OPT_Operand op) { + public OSR_LocalRegPair(boolean kind, int num, byte type, OPT_Operand op) { this.kind = kind; this.num = num; this.typeCode = type; @@ -77,13 +78,14 @@ return new OSR_LocalRegPair(kind, num, typeCode, operand); } - /* converts tuple to string as - * ( L/S num, type, valueType, value, oprand ) + /** + * converts tuple to string as + * ( L/S num, type, valueType, value, operand ) */ public String toString() { StringBuilder buf = new StringBuilder("("); - buf.append((char) kind); + buf.append(kind == LOCAL ? 'L' : 'S'); buf.append(num).append(" , "); char tcode = (char) typeCode; Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_MapIterator.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_MapIterator.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_MapIterator.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -30,7 +30,7 @@ public class OSR_MapIterator implements OSR_Constants { private int curidx; - private int[] maps; + private final int[] maps; private int curmid; private int curmpc; @@ -52,7 +52,8 @@ return this.moreElemnt; } - /* after finishing iteration of one method, move to the next, + /** + * after finishing iteration of one method, move to the next, * it if is empty, move further. */ private void moveToNextMethodId() { @@ -73,12 +74,12 @@ } } - /* has next method id to iterate? */ + /** has next method id to iterate? */ private boolean hasMoreMethodId() { return this.moreMethId; } - /* has next element of this method id to iterate? */ + /** has next element of this method id to iterate? */ private boolean hasMoreElements() { return this.moreElemnt; } @@ -100,38 +101,37 @@ /* for the current element, provide a list of queries. */ - /* what kind. */ - - public int getKind() { - return (maps[curidx] & KIND_MASK) >> KIND_SHIFT; + /** what kind. */ + public boolean getKind() { + return (maps[curidx] & KIND_MASK) >> KIND_SHIFT != 0; } - /* type code. */ - public int getTypeCode() { - return (maps[curidx] & TCODE_MASK) >> TCODE_SHIFT; + /** type code. */ + public byte getTypeCode() { + return (byte)((maps[curidx] & TCODE_MASK) >> TCODE_SHIFT); } - /* number */ - public int getNumber() { - return (maps[curidx] & NUM_MASK) >> NUM_SHIFT; + /** number */ + public char getNumber() { + return (char)((maps[curidx] & NUM_MASK) >> NUM_SHIFT); } - /* value type */ - public int getValueType() { - return (maps[curidx] & VTYPE_MASK) >> VTYPE_SHIFT; + /** value type */ + public byte getValueType() { + return (byte)((maps[curidx] & VTYPE_MASK) >> VTYPE_SHIFT); } - /* value */ + /** value */ public int getValue() { return maps[curidx + 1]; } - /* current mid */ + /** current mid */ public int getMethodId() { return this.curmid; } - /* current pc */ + /** current pc */ public int getBcIndex() { return this.curmpc; } Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_VariableElement.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_VariableElement.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/OSR_VariableElement.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -28,19 +28,20 @@ // instance fields ////////////////////////////////// - /* the kind of this element : LOCAL or STACK - */ - private int kind; + /** the kind of this element : LOCAL or STACK */ + private final boolean kind; - /* the number of element, e.g., with kind we + /** + * the number of element, e.g., with kind we * can know it is L0 or S1. */ - private int num; + private final char num; - /* type code, can only be INT, FLOAT, LONG, DOUBLE, RET_ADDR, WORD or REF */ - private int tcode; + /** type code, can only be INT, FLOAT, LONG, DOUBLE, RET_ADDR, WORD or REF */ + private final byte tcode; - /* The value of this element. + /** + * The value of this element. * For type INT, FLOAT, RET_ADDR and WORD (32-bit), the lower 32 bits are valid. * For type LONG and DOUBLE and WORD(64-bit), 64 bits are valid. * For REF type, next field 'ref' is valid. @@ -49,10 +50,10 @@ * or VM_Magic.longBitsAsDouble * to convert bits to floating-point value. */ - private long value; + private final long value; - /* for reference type value */ - private Object ref; + /** for reference type value */ + private final Object ref; ////////////////////////////////// // class auxiliary methods @@ -94,79 +95,85 @@ // Initializer ///////////////////////////////////// - /* for 32-bit value */ - - public OSR_VariableElement(int what_kind, int which_num, int type, int ibits) { + /** Constructor for 32-bit value */ + public OSR_VariableElement(boolean what_kind, int which_num, byte type, int ibits) { if (VM.VerifyAssertions) { VM._assert(isIBitsType(type)); + VM._assert(which_num < 0xFFFF); } this.kind = what_kind; - this.num = which_num; + this.num = (char)which_num; this.tcode = type; this.value = (long) ibits & 0x0FFFFFFFFL; + this.ref = null; } - /* for 64-bit value */ - public OSR_VariableElement(int what_kind, int which_num, int type, long lbits) { + /** Constructor for 64-bit value */ + public OSR_VariableElement(boolean what_kind, int which_num, byte type, long lbits) { if (VM.VerifyAssertions) { VM._assert(isLBitsType(type)); + VM._assert(which_num < 0xFFFF); } this.kind = what_kind; - this.num = which_num; + this.num = (char)which_num; this.tcode = type; this.value = lbits; + this.ref = null; } - /* for reference type */ - public OSR_VariableElement(int what_kind, int which_num, int type, Object ref) { + /** Constructor for reference type */ + public OSR_VariableElement(boolean what_kind, int which_num, byte type, Object ref) { if (VM.VerifyAssertions) { VM._assert(isRefType(type)); + VM._assert(which_num < 0xFFFF); } this.kind = what_kind; - this.num = which_num; + this.num = (char)which_num; this.tcode = type; + this.value = 0; this.ref = ref; } - /* for word type */ - public OSR_VariableElement(int what_kind, int which_num, int type, Word word) { + /** Constructor for word type */ + public OSR_VariableElement(boolean what_kind, int which_num, byte type, Word word) { if (VM.VerifyAssertions) { VM._assert(isWordType(type)); + VM._assert(which_num < 0xFFFF); } this.kind = what_kind; - this.num = which_num; + this.num = (char)which_num; this.tcode = type; if (VM.BuildFor32Addr) { this.value = ((long) word.toInt()) & 0x0FFFFFFFFL; } else { this.value = word.toLong(); } + this.ref = null; } //////////////////////////////// // instance method //////////////////////////////// - /* local or stack element */ - + /** local or stack element */ boolean isLocal() { return kind == LOCAL; } - /* get type code */ - int getTypeCode() { + /** get type code */ + byte getTypeCode() { return tcode; } - int getNumber() { + char getNumber() { return num; } - /* is reference type */ + /** is reference type */ boolean isRefType() { return (this.tcode == REF); } @@ -175,7 +182,7 @@ return ref; } - /* is word type */ + /** is word type */ boolean isWordType() { return (this.tcode == WORD); } Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_BaselineExecStateExtractor.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_BaselineExecStateExtractor.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_BaselineExecStateExtractor.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -166,7 +166,7 @@ // L0, L1, ..., S0, S1, .... // adjust local offset and stack offset - // NOTE: donot call VM_Compiler.getFirstLocalOffset(method) + // NOTE: do not call VM_Compiler.getFirstLocalOffset(method) Offset startLocalOffset = methFPoff.plus(VM_Compiler.locationToOffset(fooCM.getGeneralLocalLocation(0))); Offset stackOffset = methFPoff.plus(fooCM.getEmptyStackOffset()); @@ -189,7 +189,7 @@ /* go over local/stack array, and build OSR_VariableElement. */ private static void getVariableValue(byte[] stack, Offset offset, byte[] types, - VM_BaselineCompiledMethod compiledMethod, int kind, OSR_ExecutionState state) { + VM_BaselineCompiledMethod compiledMethod, boolean kind, OSR_ExecutionState state) { int size = types.length; Offset vOffset = offset; for (int i = 0; i < size; i++) { @@ -213,7 +213,7 @@ int value = VM_Magic.getIntAtOffset(stack, vOffset.minus(BYTES_IN_INT)); vOffset = vOffset.minus(BYTES_IN_STACKSLOT); - int tcode = (types[i] == FloatTypeCode) ? FLOAT : INT; + byte tcode = (types[i] == FloatTypeCode) ? FLOAT : INT; state.add(new OSR_VariableElement(kind, i, tcode, value)); break; @@ -226,7 +226,7 @@ BYTES_IN_STACKSLOT); long value = VM_Magic.getLongAtOffset(stack, memoff); - int tcode = (types[i] == LongTypeCode) ? LONG : DOUBLE; + byte tcode = (types[i] == LongTypeCode) ? LONG : DOUBLE; state.add(new OSR_VariableElement(kind, i, tcode, value)); Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_OptExecStateExtractor.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_OptExecStateExtractor.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/ia32/OSR_OptExecStateExtractor.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -282,10 +282,10 @@ } // create a OSR_VariableElement for it. - int kind = iterator.getKind(); - int num = iterator.getNumber(); - int tcode = iterator.getTypeCode(); - int vtype = iterator.getValueType(); + boolean kind = iterator.getKind(); + char num = iterator.getNumber(); + byte tcode = iterator.getTypeCode(); + byte vtype = iterator.getValueType(); int value = iterator.getValue(); iterator.moveToNext(); @@ -368,8 +368,7 @@ return state; } - /* auxillary functions to get value from different places. - */ + /** auxillary functions to get value from different places. */ private static int getIntBitsFrom(int vtype, int value, byte[] stack, Offset fpOffset, OSR_TempRegisters registers) { // for INT_CONST type, the value is the value if (vtype == ICONST || vtype == ACONST) { @@ -460,9 +459,9 @@ private static Object getObjectFrom(int vtype, int value, byte[] stack, Offset fpOffset, OSR_TempRegisters registers) { if (vtype == ICONST) { //kv:todo : to become ACONST - // the only constant object is NULL, I believe. - if (VM.VerifyAssertions) VM._assert(value == 0); - return VM_Magic.addressAsObject(Address.zero()); + // the only constant object is for 64bit addressing is NULL + if (VM.VerifyAssertions) VM._assert(VM.BuildFor32Addr || value == 0); + return VM_Magic.addressAsObject(Address.fromIntSignExtend(value)); } else if (vtype == PHYREG) { return registers.objs[value]; Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_BaselineExecStateExtractor.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_BaselineExecStateExtractor.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_BaselineExecStateExtractor.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -246,9 +246,9 @@ return state; } - /* go over local/stack array, and build OSR_VariableElement. */ + /** go over local/stack array, and build OSR_VariableElement. */ private static void getVariableValueFromLocations(byte[] stack, Offset methFPoff, byte[] types, - VM_BaselineCompiledMethod compiledMethod, int kind, + VM_BaselineCompiledMethod compiledMethod, boolean kind, OSR_TempRegisters registers, OSR_ExecutionState state) { int start = 0; if (kind == LOCAL) { @@ -394,7 +394,7 @@ /* go over local/stack array, and build OSR_VariableElement. */ private static void getVariableValue(byte[] stack, Offset offset, byte[] types, - VM_BaselineCompiledMethod compiledMethod, int kind, OSR_ExecutionState state) { + VM_BaselineCompiledMethod compiledMethod, boolean kind, OSR_ExecutionState state) { int size = types.length; Offset vOffset = offset; for (int i = 0; i < size; i++) { @@ -412,7 +412,7 @@ int value = VM_Magic.getIntAtOffset(stack, vOffset.minus(BYTES_IN_INT)); vOffset = vOffset.minus(BYTES_IN_STACKSLOT); - int tcode = (types[i] == FloatTypeCode) ? FLOAT : INT; + byte tcode = (types[i] == FloatTypeCode) ? FLOAT : INT; state.add(new OSR_VariableElement(kind, i, tcode, value)); break; @@ -425,7 +425,7 @@ BYTES_IN_STACKSLOT); long value = VM_Magic.getLongAtOffset(stack, memoff); - int tcode = (types[i] == LongTypeCode) ? LONG : DOUBLE; + byte tcode = (types[i] == LongTypeCode) ? LONG : DOUBLE; state.add(new OSR_VariableElement(kind, i, tcode, value)); Modified: rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_OptExecStateExtractor.java =================================================================== --- rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_OptExecStateExtractor.java 2007-08-24 16:08:01 UTC (rev 13378) +++ rvmroot/trunk/rvm/src/org/jikesrvm/osr/ppc/OSR_OptExecStateExtractor.java 2007-08-24 16:09:08 UTC (rev 13379) @@ -285,10 +285,10 @@ } // create a OSR_VariableElement for it. - int kind = iterator.getKind(); + boolean kind = iterator.getKind(); int num = iterator.getNumber(); - int tcode = iterator.getTypeCode(); - int vtype = iterator.getValueType(); + byte tcode = iterator.getTypeCode(); + byte vtype = iterator.getValueType(); int value = iterator.getValue(); iterator.moveToNext(); @@ -365,8 +365,7 @@ return state; } - /* auxillary functions to get value from different places. - */ + /** auxillary functions to get value from different places. */ private static int getIntBitsFrom(int vtype, int value, byte[] stack, Offset fpOffset, OSR_TempRegisters registers) { // for INT_CONST type, the value is the value if (vtype == ICONST || vtype == ACONST) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |