You can subscribe to this list here.
2005 |
Jan
|
Feb
(118) |
Mar
(82) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(59) |
Jun
(295) |
Jul
(92) |
Aug
(121) |
Sep
(111) |
Oct
(77) |
Nov
(163) |
Dec
(150) |
2007 |
Jan
(153) |
Feb
(163) |
Mar
(349) |
Apr
(223) |
May
(267) |
Jun
(450) |
Jul
(346) |
Aug
(230) |
Sep
(288) |
Oct
(123) |
Nov
(68) |
Dec
(34) |
2008 |
Jan
(13) |
Feb
(35) |
Mar
(92) |
Apr
(101) |
May
(168) |
Jun
(285) |
Jul
(198) |
Aug
(115) |
Sep
(77) |
Oct
(98) |
Nov
(81) |
Dec
(35) |
2009 |
Jan
(76) |
Feb
(234) |
Mar
(86) |
Apr
(41) |
May
(23) |
Jun
(17) |
Jul
(40) |
Aug
(16) |
Sep
(16) |
Oct
|
Nov
(8) |
Dec
(11) |
2010 |
Jan
(1) |
Feb
(4) |
Mar
(17) |
Apr
(4) |
May
(13) |
Jun
(24) |
Jul
(89) |
Aug
(21) |
Sep
(25) |
Oct
(19) |
Nov
(8) |
Dec
(1) |
2011 |
Jan
(3) |
Feb
(13) |
Mar
(9) |
Apr
(1) |
May
(6) |
Jun
(19) |
Jul
(51) |
Aug
(30) |
Sep
(3) |
Oct
|
Nov
|
Dec
(13) |
2012 |
Jan
(10) |
Feb
(11) |
Mar
|
Apr
(1) |
May
(3) |
Jun
(3) |
Jul
(9) |
Aug
(34) |
Sep
(5) |
Oct
(5) |
Nov
(8) |
Dec
(6) |
2013 |
Jan
(4) |
Feb
(14) |
Mar
(11) |
Apr
(8) |
May
(9) |
Jun
(6) |
Jul
(6) |
Aug
(11) |
Sep
(8) |
Oct
(22) |
Nov
(2) |
Dec
|
2014 |
Jan
(1) |
Feb
(6) |
Mar
(8) |
Apr
(4) |
May
(5) |
Jun
(4) |
Jul
(26) |
Aug
(22) |
Sep
(29) |
Oct
(42) |
Nov
(12) |
Dec
(7) |
2015 |
Jan
(13) |
Feb
(25) |
Mar
(81) |
Apr
(50) |
May
(37) |
Jun
(52) |
Jul
(65) |
Aug
(20) |
Sep
(20) |
Oct
(19) |
Nov
(7) |
Dec
(14) |
2016 |
Jan
(21) |
Feb
(18) |
Mar
(13) |
Apr
(16) |
May
(20) |
Jun
(7) |
Jul
(12) |
Aug
(7) |
Sep
(2) |
Oct
(11) |
Nov
(13) |
Dec
(12) |
2017 |
Jan
(5) |
Feb
(9) |
Mar
(3) |
Apr
(4) |
May
(15) |
Jun
(3) |
Jul
(4) |
Aug
(10) |
Sep
(3) |
Oct
(7) |
Nov
(4) |
Dec
(3) |
2018 |
Jan
(4) |
Feb
(4) |
Mar
(2) |
Apr
(4) |
May
(3) |
Jun
(12) |
Jul
(10) |
Aug
|
Sep
(9) |
Oct
(3) |
Nov
(9) |
Dec
(5) |
2019 |
Jan
(13) |
Feb
(11) |
Mar
(14) |
Apr
(10) |
May
(10) |
Jun
(4) |
Jul
(1) |
Aug
(2) |
Sep
(3) |
Oct
(2) |
Nov
(2) |
Dec
|
2020 |
Jan
|
Feb
(2) |
Mar
(3) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2022 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Update of /cvsroot/jikesrvm/rvm/src/vm/classLoader In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv16036/classLoader Modified Files: VM_AbstractMethod.java VM_Array.java VM_BytecodeStream.java VM_Class.java VM_ClassLoader.java VM_ExceptionHandlerMap.java VM_Field.java VM_Member.java VM_Method.java VM_NativeMethod.java VM_NormalMethod.java VM_Primitive.java VM_Type.java VM_TypeReference.java Added Files: VM_AnnotatedElement.java VM_Annotation.java Log Message: Support for annotations. Currently support can't be used as we're forced into using the non-generic Classpath and the jikes (javac) compiler. If you enable support for non-runtime annotations in VM_AnnotatedElement then some support is possible. The support also lacks some support for default initialization values (for example for Enum types). This patch also restructures the loading/creation of classes, with more fields final and of final types than previously. This has some knock on features, for example the method name in opt compiler IR tracing is now slightly different (reverting this back to the previous behaviour is a small job). Thanks, Ian Index: VM_Member.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_Member.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** VM_Member.java 28 Feb 2005 13:06:44 -0000 1.21 --- VM_Member.java 18 Jun 2006 08:24:19 -0000 1.22 *************** *** 18,27 **** * @author Derek Lieber */ ! public abstract class VM_Member implements VM_Constants, VM_ClassLoaderConstants { /** ! * The VM_Class that declared this member. */ ! protected final VM_Class declaringClass; /** --- 18,28 ---- * @author Derek Lieber */ ! public abstract class VM_Member extends VM_AnnotatedElement implements VM_Constants, VM_ClassLoaderConstants { /** ! * The class that declared this member, avaliable by calling ! * getDeclaringClass once the class is loaded. */ ! private final VM_TypeReference declaringClass; /** *************** *** 44,53 **** * NOTE: Only {@link VM_Class} is allowed to create an instance of a VM_Member. * ! * @param declaringClass the VM_Class object of the class that declared this member * @param memRef the canonical memberReference for this member. * @param modifiers modifiers associated with this member. */ ! protected VM_Member(VM_Class declaringClass, VM_MemberReference memRef, ! int modifiers) { this.declaringClass = declaringClass; this.memRef = memRef; --- 45,61 ---- * NOTE: Only {@link VM_Class} is allowed to create an instance of a VM_Member. * ! * @param declaringClass the VM_TypeReference object of the class that declared this member * @param memRef the canonical memberReference for this member. * @param modifiers modifiers associated with this member. + * @param runtimeVisibleAnnotations array of runtime visible + * annotations + * @param runtimeInvisibleAnnotations optional array of runtime + * invisible annotations */ ! protected VM_Member(VM_TypeReference declaringClass, VM_MemberReference memRef, ! int modifiers, VM_Annotation runtimeVisibleAnnotations[], ! VM_Annotation runtimeInvisibleAnnotations[]) ! { ! super(runtimeVisibleAnnotations, runtimeInvisibleAnnotations); this.declaringClass = declaringClass; this.memRef = memRef; *************** *** 55,71 **** this.offset = -1; // invalid value. Set to valid value during VM_Class.resolve() } ! //--------------------------------------------------------------------// ! // Section 0. // ! // The following are always available. // //--------------------------------------------------------------------// /** ! * Class that declared this field or method. */ public final VM_Class getDeclaringClass() throws UninterruptiblePragma { ! return declaringClass; } ! /** * Canonical member reference for this member. --- 63,80 ---- this.offset = -1; // invalid value. Set to valid value during VM_Class.resolve() } ! //--------------------------------------------------------------------// ! // Section 1. // ! // The following are available after class loading. // //--------------------------------------------------------------------// /** ! * Class that declared this field or method. Not available before ! * the class is loaded. */ public final VM_Class getDeclaringClass() throws UninterruptiblePragma { ! return declaringClass.peekResolvedType().asClass(); } ! /** * Canonical member reference for this member. Index: VM_Primitive.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_Primitive.java,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** VM_Primitive.java 19 Dec 2004 00:38:58 -0000 1.27 --- VM_Primitive.java 18 Jun 2006 08:24:19 -0000 1.28 *************** *** 99,103 **** */ VM_Primitive(VM_TypeReference tr) { ! super(tr); depth = 0; acyclic = true; // All primitives are inherently acyclic --- 99,103 ---- */ VM_Primitive(VM_TypeReference tr) { ! super(tr, null, null); depth = 0; acyclic = true; // All primitives are inherently acyclic Index: VM_NativeMethod.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_NativeMethod.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** VM_NativeMethod.java 13 Oct 2004 18:05:24 -0000 1.15 --- VM_NativeMethod.java 18 Jun 2006 08:24:19 -0000 1.16 *************** *** 15,18 **** --- 15,19 ---- * @author Dave Grove * @author Derek Lieber + * @modified Ian Rogers */ public final class VM_NativeMethod extends VM_Method { *************** *** 36,39 **** --- 37,42 ---- /** + * Construct native method information + * * @param declaringClass the VM_Class object of the class that * declared this method. *************** *** 41,48 **** * @param modifiers modifiers associated with this member. * @param exceptionTypes exceptions thrown by this method. */ ! VM_NativeMethod(VM_Class declaringClass, VM_MemberReference memRef, ! int modifiers, VM_TypeReference[] exceptionTypes) { ! super(declaringClass, memRef, modifiers, exceptionTypes); } --- 44,70 ---- * @param modifiers modifiers associated with this member. * @param exceptionTypes exceptions thrown by this method. + * @param runtimeVisibleAnnotations array of runtime visible + * annotations + * @param runtimeInvisibleAnnotations optional array of runtime + * invisible annotations + * @param runtimeVisibleParameterAnnotations array of runtime + * visible parameter annotations + * @param runtimeInvisiblePatarameterAnnotations optional array of + * runtime invisible parameter annotations + * @param annotationDefault value for this annotation that appears + * in annotation classes */ ! VM_NativeMethod(VM_TypeReference declaringClass, VM_MemberReference memRef, ! int modifiers, VM_TypeReference[] exceptionTypes, ! VM_Annotation runtimeVisibleAnnotations[], ! VM_Annotation runtimeInvisibleAnnotations[], ! VM_Annotation runtimeVisibleParameterAnnotations[], ! VM_Annotation runtimeInvisibleParameterAnnotations[], ! Object annotationDefault) ! { ! super(declaringClass, memRef, modifiers, exceptionTypes, ! runtimeVisibleAnnotations, runtimeInvisibleAnnotations, ! runtimeVisibleParameterAnnotations, runtimeInvisibleParameterAnnotations, ! annotationDefault); } *************** *** 111,115 **** private String getMangledName(boolean sig) { String mangledClassName, mangledMethodName; ! String className = declaringClass.toString(); String methodName = getName().toString(); int first, next; --- 133,137 ---- private String getMangledName(boolean sig) { String mangledClassName, mangledMethodName; ! String className = getDeclaringClass().toString(); String methodName = getName().toString(); int first, next; Index: VM_ExceptionHandlerMap.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_ExceptionHandlerMap.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** VM_ExceptionHandlerMap.java 5 Dec 2003 23:47:08 -0000 1.13 --- VM_ExceptionHandlerMap.java 18 Jun 2006 08:24:19 -0000 1.14 *************** *** 13,18 **** * @author Bowen Alpern * @author Derek Lieber */ ! public class VM_ExceptionHandlerMap { //-----------// // Interface // --- 13,19 ---- * @author Bowen Alpern * @author Derek Lieber + * @modified Ian Rogers */ ! public final class VM_ExceptionHandlerMap { //-----------// // Interface // *************** *** 41,45 **** * 0-indexed from start of method's bytecodes[] */ ! int[] startPCs; /** --- 42,46 ---- * 0-indexed from start of method's bytecodes[] */ ! private int[] startPCs; /** *************** *** 47,51 **** * 0-indexed from start of method's bytecodes[] */ ! int[] endPCs; /** --- 48,52 ---- * 0-indexed from start of method's bytecodes[] */ ! private int[] endPCs; /** *************** *** 53,57 **** * 0-indexed from start of method's bytecodes[] */ ! int[] handlerPCs; /** --- 54,58 ---- * 0-indexed from start of method's bytecodes[] */ ! private int[] handlerPCs; /** *************** *** 63,109 **** * special anywhere else in the VM. */ ! VM_TypeReference[] exceptionTypes; ! VM_ExceptionHandlerMap(DataInputStream input, ! VM_Class declaringClass, ! int n) throws IOException { ! startPCs = new int[n]; ! endPCs = new int[n]; ! handlerPCs = new int[n]; ! exceptionTypes = new VM_TypeReference[n]; ! for (int i = 0; i < n; ++i) { ! startPCs[i] = input.readUnsignedShort(); ! endPCs[i] = input.readUnsignedShort(); ! handlerPCs[i] = input.readUnsignedShort(); ! VM_TypeReference et = declaringClass.getTypeRef(input.readUnsignedShort()); // possibly null ! if (et == null) { ! // A finally block...set to java.lang.Throwable to avoid ! // needing to think about this case anywhere else in the VM. ! exceptionTypes[i] = VM_TypeReference.JavaLangThrowable; ! } else { ! exceptionTypes[i] = et; } } } //-#if RVM_WITH_OSR - VM_ExceptionHandlerMap() {} - VM_ExceptionHandlerMap deepCopy() { - VM_ExceptionHandlerMap other = - new VM_ExceptionHandlerMap(); - int n = startPCs.length; ! other.startPCs = new int[n]; ! other.endPCs = new int[n]; ! other.handlerPCs = new int[n]; ! other.exceptionTypes = new VM_TypeReference[n]; ! ! System.arraycopy(this.startPCs, 0, other.startPCs, 0, n); ! System.arraycopy(this.endPCs, 0, other.endPCs, 0, n); ! System.arraycopy(this.handlerPCs, 0, other.handlerPCs, 0, n); ! System.arraycopy(this.exceptionTypes, 0, other.exceptionTypes, 0, n); ! ! return other; } //-#endif --- 64,131 ---- * special anywhere else in the VM. */ ! private final VM_TypeReference[] exceptionTypes; ! /** ! * Construct the exception handler map ! * ! * @param startPCs ! * @param endPCs ! * @param handlerPCs ! * @param exceptionTypes ! */ ! private VM_ExceptionHandlerMap(int startPCs[], int endPCs[], int handlerPCs[], VM_TypeReference exceptionTypes[]) { ! this.startPCs = startPCs; ! this.endPCs = endPCs; ! this.handlerPCs = handlerPCs; ! this.exceptionTypes = exceptionTypes; ! } ! ! /** ! * Read the exception handler map ! * ! * @return an exception handler map or null if none were present ! */ ! static VM_ExceptionHandlerMap readExceptionHandlerMap(DataInputStream input, ! int constantPool[] ! ) throws IOException ! { ! int cnt = input.readUnsignedShort(); ! if (cnt != 0) { ! int startPCs[] = new int[cnt]; ! int endPCs[] = new int[cnt]; ! int handlerPCs[] = new int[cnt]; ! VM_TypeReference exceptionTypes[] = new VM_TypeReference[cnt]; ! for (int i = 0; i < cnt; ++i) { ! startPCs[i] = input.readUnsignedShort(); ! endPCs[i] = input.readUnsignedShort(); ! handlerPCs[i] = input.readUnsignedShort(); ! VM_TypeReference et = VM_Class.getTypeRef(constantPool, input.readUnsignedShort()); // possibly null ! if (et == null) { ! // A finally block...set to java.lang.Throwable to avoid ! // needing to think about this case anywhere else in the VM. ! exceptionTypes[i] = VM_TypeReference.JavaLangThrowable; ! } else { ! exceptionTypes[i] = et; ! } } + return new VM_ExceptionHandlerMap(startPCs, endPCs, handlerPCs, exceptionTypes); + } else { + return null; } } //-#if RVM_WITH_OSR VM_ExceptionHandlerMap deepCopy() { int n = startPCs.length; ! int copyStartPCs[] = new int[n]; ! System.arraycopy(this.startPCs, 0, copyStartPCs, 0, n); ! int copyEndPCs[] = new int[n]; ! System.arraycopy(this.endPCs, 0, copyEndPCs, 0, n); ! int copyHandlerPCs[] = new int[n]; ! System.arraycopy(this.handlerPCs, 0, copyHandlerPCs, 0, n); ! VM_TypeReference copyExceptionTypes[] = new VM_TypeReference[n]; ! System.arraycopy(this.exceptionTypes, 0, copyExceptionTypes, 0, n); ! ! return new VM_ExceptionHandlerMap(copyStartPCs, copyEndPCs, copyHandlerPCs, copyExceptionTypes); } //-#endif Index: VM_Field.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_Field.java,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** VM_Field.java 22 Apr 2006 18:43:55 -0000 1.39 --- VM_Field.java 18 Jun 2006 08:24:19 -0000 1.40 *************** *** 17,20 **** --- 17,21 ---- * @author Dave Grove * @author Derek Lieber + * @modified Ian Rogers */ public final class VM_Field extends VM_Member { *************** *** 24,50 **** */ private final int constantValueIndex; /** ! * NOTE: Only {@link VM_Class} is allowed to create an instance of a VM_Field. * ! * @param declaringClass the VM_Class object of the class that declared this field * @param memRef the canonical memberReference for this member. * @param modifiers modifiers associated with this member. * @param input the DataInputStream to read the field's attributed from */ ! VM_Field(VM_Class declaringClass, VM_MemberReference memRef, ! int modifiers, DataInputStream input) throws IOException { ! super(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS); ! memRef.asFieldReference().setResolvedMember(this); ! // Read the attributes, processing the "non-boring" ones ! int cvi = 0; // kludge to allow us to make constantValueIndex final. for (int i = 0, n = input.readUnsignedShort(); i < n; ++i) { ! VM_Atom attName = declaringClass.getUtf(input.readUnsignedShort()); int attLength = input.readInt(); if (attName == VM_ClassLoader.constantValueAttributeName) { cvi = input.readUnsignedShort(); ! } else if (attName == VM_ClassLoader.syntheticAttributeName) { ! modifiers |= SYNTHETIC; } else { // all other attributes are boring... --- 25,85 ---- */ private final int constantValueIndex; + + /** + * Create a field. + * + * @param declaringClass the VM_TypeReference object of the class + * that declared this field + * @param memRef the canonical memberReference for this member. + * @param runtimeVisibleAnnotations array of runtime visible + * annotations + * @param runtimeInvisibleAnnotations optional array of runtime + * invisible annotations + */ + private VM_Field(VM_TypeReference declaringClass, + VM_MemberReference memRef, + int modifiers, + int constantValueIndex, + VM_Annotation runtimeVisibleAnnotations[], + VM_Annotation runtimeInvisibleAnnotations[]) + { + super(declaringClass, memRef, modifiers, runtimeVisibleAnnotations, + runtimeInvisibleAnnotations); + this.constantValueIndex = constantValueIndex; + memRef.asFieldReference().setResolvedMember(this); + } /** ! * Read and create a field. NB only {@link VM_Class} is allowed to ! * create an instance of a VM_Field. * ! * @param declaringClass the VM_TypeReference object of the class ! * that declared this field ! * @param constantPool the constant pool of the class loading this field * @param memRef the canonical memberReference for this member. * @param modifiers modifiers associated with this member. * @param input the DataInputStream to read the field's attributed from */ ! static VM_Field readField(VM_TypeReference declaringClass, ! int constantPool[], VM_MemberReference memRef, ! int modifiers, DataInputStream input) throws IOException { // Read the attributes, processing the "non-boring" ones ! int cvi = 0; ! VM_Annotation tmp_runtimeVisibleAnnotations[] = null; ! VM_Annotation tmp_runtimeInvisibleAnnotations[] = null; for (int i = 0, n = input.readUnsignedShort(); i < n; ++i) { ! VM_Atom attName = VM_Class.getUtf(constantPool, input.readUnsignedShort()); int attLength = input.readInt(); if (attName == VM_ClassLoader.constantValueAttributeName) { cvi = input.readUnsignedShort(); ! } else if (attName == VM_ClassLoader.syntheticAttributeName) { ! modifiers |= SYNTHETIC; ! } else if (attName == VM_ClassLoader.runtimeVisibleAnnotationsAttributeName) { ! tmp_runtimeVisibleAnnotations = VM_AnnotatedElement.readAnnotations(constantPool, input, 2, ! declaringClass.getClassLoader()); ! } else if (VM_AnnotatedElement.retainRuntimeInvisibleAnnotations && ! (attName == VM_ClassLoader.runtimeInvisibleAnnotationsAttributeName)) { ! tmp_runtimeInvisibleAnnotations = VM_AnnotatedElement.readAnnotations(constantPool, input, 2, ! declaringClass.getClassLoader()); } else { // all other attributes are boring... *************** *** 52,57 **** } } ! ! constantValueIndex = cvi; } --- 87,100 ---- } } ! return new VM_Field(declaringClass, memRef, modifiers & APPLICABLE_TO_FIELDS, cvi, ! tmp_runtimeVisibleAnnotations, tmp_runtimeInvisibleAnnotations); ! } ! ! /** ! * Create a field for a synthetic annotation class ! */ ! static VM_Field createAnnotationField(VM_TypeReference annotationClass, ! VM_MemberReference memRef) { ! return new VM_Field(annotationClass, memRef, ACC_PRIVATE|SYNTHETIC, 0, null, null); } Index: VM_NormalMethod.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_NormalMethod.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** VM_NormalMethod.java 1 Feb 2005 03:40:15 -0000 1.19 --- VM_NormalMethod.java 18 Jun 2006 08:24:19 -0000 1.20 *************** *** 17,20 **** --- 17,21 ---- * @author Dave Grove * @author Derek Lieber + * @modified Ian Rogers */ public final class VM_NormalMethod *************** *** 138,142 **** /** ! * @param dc the VM_Class object of the class that declared this field * @param mr the canonical memberReference for this member. * @param mo modifiers associated with this member. --- 139,145 ---- /** ! * Construct a normal Java bytecode method's information ! * ! * @param dc the VM_TypeReference object of the class that declared this field * @param mr the canonical memberReference for this member. * @param mo modifiers associated with this member. *************** *** 147,156 **** * @param eMap the exception handler map for this method * @param lm the line number map for this method */ ! VM_NormalMethod(VM_Class dc, VM_MemberReference mr, int mo, VM_TypeReference[] et, int lw, int ow, byte[] bc, ! VM_ExceptionHandlerMap eMap, int[] lm) { ! super(dc, mr, mo, et); localWords = lw; operandWords = ow; --- 150,168 ---- * @param eMap the exception handler map for this method * @param lm the line number map for this method + * @param constantPool the constantPool for this method + * @param rvan array of runtime visible annotations + * @param rivan optional array of runtime invisible annotations + * @param rvpan array of runtime visible paramter annotations + * @param rivpan optional array of runtime invisible paramter annotations + * @param ad annotation default value for that appears in annotation classes */ ! VM_NormalMethod(VM_TypeReference dc, VM_MemberReference mr, int mo, VM_TypeReference[] et, int lw, int ow, byte[] bc, ! VM_ExceptionHandlerMap eMap, int[] lm, ! int constantPool[], VM_Annotation rvan[], ! VM_Annotation rivan[], VM_Annotation rvpan[], ! VM_Annotation rivpan[], Object ad) { ! super(dc, mr, mo, et, rvan, rivan, rvpan, rivpan, ad); localWords = lw; operandWords = ow; *************** *** 158,162 **** exceptionHandlerMap = eMap; lineNumberMap = lm; ! computeSummary(); } --- 170,174 ---- exceptionHandlerMap = eMap; lineNumberMap = lm; ! computeSummary(constantPool); } *************** *** 213,217 **** && (bytecode <= VM_BytecodeConstants.JBC_invokeinterface)); int constantPoolIndex = ((bytecodes[bcIndex + 1] & 0xFF) << BITS_IN_BYTE) | (bytecodes[bcIndex + 2] & 0xFF); ! dynamicLink.set(declaringClass.getMethodRef(constantPoolIndex), bytecode); } --- 225,229 ---- && (bytecode <= VM_BytecodeConstants.JBC_invokeinterface)); int constantPoolIndex = ((bytecodes[bcIndex + 1] & 0xFF) << BITS_IN_BYTE) | (bytecodes[bcIndex + 2] & 0xFF); ! dynamicLink.set(getDeclaringClass().getMethodRef(constantPoolIndex), bytecode); } *************** *** 478,482 **** * and stores an encoding of the summary as an int. */ ! private void computeSummary() { int calleeSize = 0; if (isSynchronized()) { --- 490,494 ---- * and stores an encoding of the summary as an int. */ ! private void computeSummary(int constantPool[]) { int calleeSize = 0; if (isSynchronized()) { *************** *** 587,591 **** case JBC_invokestatic: // Special case VM_Magic's as being cheaper. ! VM_MethodReference meth = bcodes.getMethodReference(); if (meth.getType().isMagicType()) { summary |= HAS_MAGIC; --- 599,603 ---- case JBC_invokestatic: // Special case VM_Magic's as being cheaper. ! VM_MethodReference meth = bcodes.getMethodReference(constantPool); if (meth.getType().isMagicType()) { summary |= HAS_MAGIC; Index: VM_ClassLoader.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_ClassLoader.java,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** VM_ClassLoader.java 31 May 2006 15:35:21 -0000 1.62 --- VM_ClassLoader.java 18 Jun 2006 08:24:19 -0000 1.63 *************** *** 153,166 **** // Names of .class file attributes. // ! static VM_Atom codeAttributeName; // "Code" ! static VM_Atom constantValueAttributeName; // "ConstantValue" ! static VM_Atom lineNumberTableAttributeName; // "LineNumberTable" ! static VM_Atom exceptionsAttributeName; // "Exceptions" ! static VM_Atom sourceFileAttributeName; // "SourceFile" ! static VM_Atom localVariableTableAttributeName; // "LocalVariableTable" ! static VM_Atom deprecatedAttributeName; // "Deprecated" ! static VM_Atom innerClassesAttributeName; // "InnerClasses" ! static VM_Atom syntheticAttributeName; // "Synthetic" ! static VM_Atom arrayNullCheckAttributeName; // "ArrayNullCheckAttribute" /** Initialize at boot time. --- 153,171 ---- // Names of .class file attributes. // ! static VM_Atom codeAttributeName; // "Code" ! static VM_Atom constantValueAttributeName; // "ConstantValue" ! static VM_Atom lineNumberTableAttributeName; // "LineNumberTable" ! static VM_Atom exceptionsAttributeName; // "Exceptions" ! static VM_Atom sourceFileAttributeName; // "SourceFile" ! static VM_Atom localVariableTableAttributeName; // "LocalVariableTable" ! static VM_Atom deprecatedAttributeName; // "Deprecated" ! static VM_Atom innerClassesAttributeName; // "InnerClasses" ! static VM_Atom syntheticAttributeName; // "Synthetic" ! static VM_Atom arrayNullCheckAttributeName; // "ArrayNullCheckAttribute" ! static VM_Atom runtimeVisibleAnnotationsAttributeName; // "RuntimeVisibleAnnotations" ! static VM_Atom runtimeInvisibleAnnotationsAttributeName; // "RuntimeInvisibleAnnotations" ! static VM_Atom runtimeVisibleParameterAnnotationsAttributeName; // "RuntimeVisibleParameterAnnotations" ! static VM_Atom runtimeInvisibleParameterAnnotationsAttributeName; // "RuntimeInvisibleParameterAnnotations" ! static VM_Atom annotationDefaultAttributeName; // "AnnotationDefault" /** Initialize at boot time. *************** *** 192,205 **** StandardObjectFinalizerMethodDescriptor = VM_Atom.findOrCreateAsciiAtom("()V"); ! codeAttributeName = VM_Atom.findOrCreateAsciiAtom("Code"); ! constantValueAttributeName = VM_Atom.findOrCreateAsciiAtom("ConstantValue"); ! lineNumberTableAttributeName = VM_Atom.findOrCreateAsciiAtom("LineNumberTable"); ! exceptionsAttributeName = VM_Atom.findOrCreateAsciiAtom("Exceptions"); ! sourceFileAttributeName = VM_Atom.findOrCreateAsciiAtom("SourceFile"); ! localVariableTableAttributeName = VM_Atom.findOrCreateAsciiAtom("LocalVariableTable"); ! deprecatedAttributeName = VM_Atom.findOrCreateAsciiAtom("Deprecated"); ! innerClassesAttributeName = VM_Atom.findOrCreateAsciiAtom("InnerClasses"); ! syntheticAttributeName = VM_Atom.findOrCreateAsciiAtom("Synthetic"); ! arrayNullCheckAttributeName = VM_Atom.findOrCreateAsciiAtom("ArrayNullCheckAttribute"); VM_Type.init(); --- 197,215 ---- StandardObjectFinalizerMethodDescriptor = VM_Atom.findOrCreateAsciiAtom("()V"); ! codeAttributeName = VM_Atom.findOrCreateAsciiAtom("Code"); ! constantValueAttributeName = VM_Atom.findOrCreateAsciiAtom("ConstantValue"); ! lineNumberTableAttributeName = VM_Atom.findOrCreateAsciiAtom("LineNumberTable"); ! exceptionsAttributeName = VM_Atom.findOrCreateAsciiAtom("Exceptions"); ! sourceFileAttributeName = VM_Atom.findOrCreateAsciiAtom("SourceFile"); ! localVariableTableAttributeName = VM_Atom.findOrCreateAsciiAtom("LocalVariableTable"); ! deprecatedAttributeName = VM_Atom.findOrCreateAsciiAtom("Deprecated"); ! innerClassesAttributeName = VM_Atom.findOrCreateAsciiAtom("InnerClasses"); ! syntheticAttributeName = VM_Atom.findOrCreateAsciiAtom("Synthetic"); ! arrayNullCheckAttributeName = VM_Atom.findOrCreateAsciiAtom("ArrayNullCheckAttribute"); ! runtimeVisibleAnnotationsAttributeName = VM_Atom.findOrCreateAsciiAtom("RuntimeVisibleAnnotations"); ! runtimeInvisibleAnnotationsAttributeName = VM_Atom.findOrCreateAsciiAtom("RuntimeInvisibleAnnotations"); ! runtimeVisibleParameterAnnotationsAttributeName = VM_Atom.findOrCreateAsciiAtom("RuntimeVisibleParameterAnnotations"); ! runtimeInvisibleParameterAnnotationsAttributeName = VM_Atom.findOrCreateAsciiAtom("RuntimeInvisibleParameterAnnotations"); ! annotationDefaultAttributeName = VM_Atom.findOrCreateAsciiAtom("AnnotationDefault"); VM_Type.init(); *************** *** 241,245 **** if (VM.TraceClassLoading && VM.runningVM) VM.sysWriteln("loading \"" + tRef.getName() + "\" with " + classloader); ! VM_Class ans = new VM_Class(tRef, new DataInputStream(is)); tRef.setResolvedType(ans); return ans; --- 251,255 ---- if (VM.TraceClassLoading && VM.runningVM) VM.sysWriteln("loading \"" + tRef.getName() + "\" with " + classloader); ! VM_Class ans = VM_Class.readClass(tRef, new DataInputStream(is)); tRef.setResolvedType(ans); return ans; --- NEW FILE: VM_Annotation.java --- /* * (C) Copyright Ian Rogers, The University of Manchester 2006 */ // $Id: VM_Annotation.java,v 1.1 2006/06/18 08:24:19 captain5050 Exp $ package com.ibm.JikesRVM.classloader; import com.ibm.JikesRVM.VM_Statics; import com.ibm.JikesRVM.VM; import com.ibm.JikesRVM.VM_Runtime; import com.ibm.JikesRVM.VM_Reflection; import java.io.DataInputStream; import java.io.IOException; import org.vmmagic.unboxed.Offset; import java.lang.annotation.Annotation; import java.lang.JikesRVMSupport; import java.util.Arrays; /** * Representation of an annotation on a TODO... * * @author Ian Rogers */ public final class VM_Annotation { /** * The type of the annotation. This is an interface name that the * annotation value will implement */ private final VM_Atom type; /** * Members of this annotation */ private final AnnotationMember elementValuePairs[]; /** * The class loader that loaded this annotation */ private final ClassLoader classLoader; /** * A reference to the constructor of the base annotation */ private static final VM_MethodReference baseAnnotationInitMethod; /** * The concrete annotation represented by this VM_Annotation */ private Annotation value; /** * Class constructor */ static { baseAnnotationInitMethod = (VM_MethodReference) VM_MemberReference.findOrCreate(VM_TypeReference.findOrCreate("Lcom/ibm/JikesRVM/classloader/VM_Annotation$BaseAnnotation;"), VM_Atom.findOrCreateAsciiAtom("<init>"), VM_Atom.findOrCreateAsciiAtom("(Lcom/ibm/JikesRVM/classloader/VM_Annotation;)V") ); if(baseAnnotationInitMethod == null) { throw new Error("Error creating reference to base annotation"); } } /** * Construct a read annotation * @param type the name of the type this annotation's value will * implement * @param elementValuePairs values for the fields in the annotation * that override the defaults * @param classLoader the class loader being used to load this annotation */ private VM_Annotation(VM_Atom type, AnnotationMember elementValuePairs[], ClassLoader classLoader){ this.type = type; this.elementValuePairs = elementValuePairs; this.classLoader = classLoader; } /** * Read an annotation attribute from the class file * * @param constantPool from constant pool being loaded * @param input the data being rea */ static VM_Annotation readAnnotation (int constantPool[], DataInputStream input, ClassLoader classLoader) throws IOException, ClassNotFoundException { VM_Atom type; // Read type int typeIndex = input.readUnsignedShort(); type = VM_Class.getUtf(constantPool, typeIndex); // Read values int numAnnotationMembers = input.readUnsignedShort(); AnnotationMember elementValuePairs[] = new AnnotationMember[numAnnotationMembers]; for(int i=0; i < numAnnotationMembers; i++) { elementValuePairs[i] = AnnotationMember.readAnnotationMember(constantPool, input, classLoader); } // Arrays.sort(elementValuePairs); VM_Annotation result = new VM_Annotation(type, elementValuePairs, classLoader); return result; } /** * Return the annotation represented by this VM_Annotation. If this * is the first time this annotation has been accessed the subclass * of annotation this class represents needs creating. * @return the annotation represented */ Annotation getValue() { if (value == null) { value = createValue(); } return value; } /** * Create an instance of this type of annotation with the values * given in the members * * @return the created annotation */ private Annotation createValue() { // Find the annotation then find its implementing class VM_Class annotationInterface = VM_TypeReference.findOrCreate(classLoader, type).resolve().asClass(); VM_Class annotationClass = annotationInterface.getAnnotationClass(); if(!annotationClass.isResolved()) { annotationClass.resolve(); } if(!annotationClass.isInitialized()) { VM_Runtime.initializeClassForDynamicLink(annotationClass); } // Construct an instance with default values Annotation annotationInstance = (Annotation)VM_Runtime.resolvedNewScalar(annotationClass); VM_Method defaultConstructor = annotationClass.getConstructorMethods()[0]; VM_Reflection.invoke(defaultConstructor, annotationInstance, new VM_Annotation[]{this}); // Override default values with those given in the element value pairs VM_Field annotationClassFields[] = annotationClass.getDeclaredFields(); for(int i=0; i < elementValuePairs.length; i++) { AnnotationMember evp = elementValuePairs[i]; VM_Atom evpFieldName = evp.getNameAsFieldName(); for(int j=0; j < annotationClassFields.length; j++) { if(annotationClassFields[j].getName() == evpFieldName) { evp.setValueToField(annotationClassFields[j], annotationInstance); } } } return annotationInstance; } /** * Return a string representation of the annotation of the form * "@type(name1=val1, ...nameN=valN)" */ public String toString() { String result = type.toString(); result = "@" + result.substring(1,result.length()-1) + "("; if (elementValuePairs != null){ for(int i=0; i < elementValuePairs.length; i++) { result += elementValuePairs[i]; if(i < (elementValuePairs.length - 1)) { result += ", "; } } } result += ")"; return result; } /** * Read the element_value field of an annotation * * @param constantPool the constant pool for the class being read * @param input stream to read from * @return object representing the value read */ static Object readValue(int constantPool[], DataInputStream input, ClassLoader classLoader) throws IOException, ClassNotFoundException { // Read element value's tag and decode byte elementValue_tag = input.readByte(); Object value; switch (elementValue_tag) { case 'B': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = Byte.valueOf((byte)VM_Statics.getSlotContentsAsInt(offset)); break; } case 'C': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = Character.valueOf((char)VM_Statics.getSlotContentsAsInt(offset)); break; } case 'D': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); long longValue = VM_Statics.getSlotContentsAsLong(offset); value = new Double(Double.longBitsToDouble(longValue)); break; } case 'F': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); int intValue = VM_Statics.getSlotContentsAsInt(offset); value = new Float(Float.intBitsToFloat(intValue)); break; } case 'I': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = new Integer(VM_Statics.getSlotContentsAsInt(offset)); break; } case 'J': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = new Long(VM_Statics.getSlotContentsAsLong(offset)); break; } case 'S': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = Short.valueOf((short)VM_Statics.getSlotContentsAsInt(offset)); break; } case 'Z': { Offset offset = VM_Class.getLiteralOffset(constantPool, input.readUnsignedShort()); value = Boolean.valueOf(VM_Statics.getSlotContentsAsInt(offset) == 1); break; } case 's': { value = VM_Class.getUtf(constantPool, input.readUnsignedShort()).toString(); break; } case 'e': { int typeNameIndex = input.readUnsignedShort(); Class enumType = Class.forName(VM_Class.getUtf(constantPool, typeNameIndex).toString()); int constNameIndex = input.readUnsignedShort(); value = Enum.valueOf(enumType, VM_Class.getUtf(constantPool, constNameIndex).toString()); break; } case 'c': { int classInfoIndex = input.readUnsignedShort(); value= Class.forName(VM_Class.getUtf(constantPool, classInfoIndex).toString()); break; } case '@': value = VM_Annotation.readAnnotation(constantPool, input, classLoader); break; case '[': { int numValues = input.readUnsignedShort(); Object array[] = new Object[numValues]; for (int i=0; i < numValues; i++) { array[i] = readValue(constantPool, input, classLoader); } value = array; break; } default: value = null; throw new ClassFormatError("Unknown element_value tag '" + (char)elementValue_tag + "'"); } return value; } /** * Return the Class object of the declared annotation, ie an * interface and not the class object of this instance * * @return Class object of interface annotation object implements */ Class annotationType() { return JikesRVMSupport.createClass(VM_TypeReference.findOrCreate(classLoader, type).resolve()); } /** * Are two annotations logically equivalent? * * todo: for performance reasons if we dynamically generated the * bytecode for this method, rather than using reflection, the * performance should be better. */ static boolean equals(BaseAnnotation a, VM_Annotation vmA, BaseAnnotation b, VM_Annotation vmB) { if(vmA.type != vmB.type) { return false; } else { VM_Class annotationInterface = VM_TypeReference.findOrCreate(vmA.classLoader, vmA.type).resolve().asClass(); VM_Class annotationClass = annotationInterface.getAnnotationClass(); VM_Field annotationClassFields[] = annotationClass.getDeclaredFields(); for(int i=0; i < annotationClassFields.length; i++) { Object objA = annotationClassFields[i].getObjectUnchecked(a); Object objB = annotationClassFields[i].getObjectUnchecked(b); if(!objA.getClass().isArray()) { if(!objA.equals(objB)) { return false; } } else { return Arrays.equals((Object[])objA, (Object[])objB); } } return true; } } /** * Compute the hashCode for an instance of an annotation * * todo: for performance reasons if we dynamically generated the * bytecode for this method, rather than using reflection, the * performance should be better. */ public int hashCode(BaseAnnotation a) { VM_Class annotationInterface = VM_TypeReference.findOrCreate(classLoader, type).resolve().asClass(); VM_Class annotationClass = annotationInterface.getAnnotationClass(); VM_Field annotationClassFields[] = annotationClass.getDeclaredFields(); String typeString = type.toString(); int result = typeString.substring(1, typeString.length() - 1).hashCode(); for(int i=0; i < annotationClassFields.length; i++) { String name = annotationClassFields[i].getName().toString(); name = name.substring(0, name.length()-6); // remove "_field" from name Object value = annotationClassFields[i].getObjectUnchecked(a); int part_result = name.hashCode() * 127; if(value.getClass().isArray()) { part_result ^= Arrays.hashCode((Object[])value); } else { part_result ^= value.hashCode(); } result += part_result; } return result; } /** * @return member reference to init method of BaseAnnotation */ static VM_MethodReference getBaseAnnotationInitMemberReference() { if(baseAnnotationInitMethod == null) { throw new Error("Error creating reference to base annotation"); } return baseAnnotationInitMethod; } /** * The superclass for all annotation instances */ static abstract class BaseAnnotation implements Annotation { /** * The VM_Annotation that this annotation is an instance of */ private final VM_Annotation vmAnnotation; /** * Constructor, called via VM_Annotation.createValue */ BaseAnnotation(VM_Annotation vmAnnotation) { this.vmAnnotation = vmAnnotation; } /** * Return a string representation of the annotation of the form * "@type(name1=val1, ...nameN=valN)" */ public String toString() { return vmAnnotation.toString(); } /** * Return the Class object of the declared annotation, ie an * interface and not the class object of this instance * * @return Class object of interface annotation object implements */ public Class annotationType() { return vmAnnotation.annotationType(); } /** * Are two annotations logically equivalent? */ public boolean equals(Object o) { if (o instanceof BaseAnnotation) { if(o == this) { return true; } else{ BaseAnnotation b = (BaseAnnotation)o; return VM_Annotation.equals(this, this.vmAnnotation, b, b.vmAnnotation); } } else { return false; } } /** * Compute the hash code of an annotation using the standard * algorithm {@see java.lang.annotation.Annotation#hashCode()} */ public int hashCode() { return vmAnnotation.hashCode(this); } } /** * A class to decode and hold the name and its associated value for * an annotation member */ private static final class AnnotationMember implements Comparable { /** * Name of element */ private final VM_Atom name; /** * Elements value, decoded from its tag */ private final Object value; /** * Construct a read value pair */ private AnnotationMember(VM_Atom name, Object value) { this.name = name; this.value = value; } /** * Read the pair from the input stream and create object * @param constantPool the constant pool for the class being read * @param input stream to read from * @param classLoader the class loader being used to load this annotation * @return a newly created annotation member */ static AnnotationMember readAnnotationMember (int constantPool[], DataInputStream input, ClassLoader classLoader) throws IOException, ClassNotFoundException { // Read name of pair int elemNameIndex = input.readUnsignedShort(); VM_Atom name = VM_Class.getUtf(constantPool, elemNameIndex); Object value = VM_Annotation.readValue(constantPool, input, classLoader); return new AnnotationMember(name, value); } /** * Return name as it would appear in a class implementing this * annotation */ VM_Atom getNameAsFieldName() { return VM_Atom.findAsciiAtom(name.toString() + "_field"); } /** * Set the value to the given field of the given annotation */ void setValueToField(VM_Field field, Annotation annotation) { if(value instanceof Boolean) { field.setBooleanValueUnchecked(annotation, ((Boolean)value).booleanValue()); } else if(value instanceof Integer) { field.setIntValueUnchecked(annotation, ((Integer)value).intValue()); } else if(value instanceof Long) { field.setLongValueUnchecked(annotation, ((Long)value).longValue()); } else if(value instanceof Byte) { field.setByteValueUnchecked(annotation, ((Byte)value).byteValue()); } else if(value instanceof Character) { field.setCharValueUnchecked(annotation, ((Character)value).charValue()); } else if(value instanceof Short) { field.setShortValueUnchecked(annotation, ((Short)value).shortValue()); } else if(value instanceof Float) { field.setFloatValueUnchecked(annotation, ((Float)value).floatValue()); } else if(value instanceof Double) { field.setDoubleValueUnchecked(annotation, ((Double)value).doubleValue()); } else { field.setObjectValueUnchecked(annotation, value); } } /** * String representation of the value pair of the form * "name=value" */ public String toString() { String result = name.toString() + "="; if (value instanceof Object[]) { result += "{"; Object a[] = (Object[])value; for(int i=0; i < a.length; i++) { result += a[i].toString(); if (i < (a.length -1)) { result += ", "; } result += "}"; } } else { result += value.toString(); } return result; } /** * Ordering for sorted annotation members */ public int compareTo(Object o) { AnnotationMember am = (AnnotationMember)o; if(am.name != this.name) { return am.name.toString().compareTo(this.name.toString()); } else { if(value.getClass().isArray()) { return Arrays.hashCode((Object[])value) - Arrays.hashCode((Object[])am.value); } else { return ((Comparable)value).compareTo(am.value); } } } } } Index: VM_Type.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_Type.java,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** VM_Type.java 18 May 2006 12:58:46 -0000 1.59 --- VM_Type.java 18 Jun 2006 08:24:19 -0000 1.60 *************** *** 47,90 **** * @author Derek Lieber */ ! public abstract class VM_Type implements VM_ClassLoaderConstants, VM_SizeConstants { /* * We hold on to a number of special types here for easy access. */ ! public static VM_Type VoidType; ! public static VM_Type BooleanType; ! public static VM_Type ByteType; ! public static VM_Type ShortType; ! public static VM_Type IntType; ! public static VM_Type LongType; ! public static VM_Type FloatType; ! public static VM_Type DoubleType; ! public static VM_Type CharType; ! public static VM_Type JavaLangObjectType; public static VM_Array JavaLangObjectArrayType; ! public static VM_Type JavaLangClassType; ! public static VM_Type JavaLangThrowableType; ! public static VM_Type NativeBridgeType; ! public static VM_Type JavaLangStringType; public static VM_Class JavaLangCloneableType; public static VM_Class JavaIoSerializableType; ! public static VM_Type MagicType; ! public static VM_Type WordType; public static VM_Array WordArrayType; ! public static VM_Type AddressType; public static VM_Array AddressArrayType; ! public static VM_Type ObjectReferenceType; public static VM_Array ObjectReferenceArrayType; ! public static VM_Type OffsetType; public static VM_Array OffsetArrayType; ! public static VM_Type ExtentType; public static VM_Array ExtentArrayType; ! public static VM_Type CodeType; public static VM_Array CodeArrayType; ! public static VM_Type UninterruptibleType; ! public static VM_Type UnpreemptibleType; ! public static VM_Type SynchronizedObjectType; ! public static VM_Type DynamicBridgeType; ! public static VM_Type SaveVolatileType; private static int nextId = 1; --- 47,90 ---- * @author Derek Lieber */ ! public abstract class VM_Type extends VM_AnnotatedElement implements VM_ClassLoaderConstants, VM_SizeConstants { /* * We hold on to a number of special types here for easy access. */ ! public static VM_Primitive VoidType; ! public static VM_Primitive BooleanType; ! public static VM_Primitive ByteType; ! public static VM_Primitive ShortType; ! public static VM_Primitive IntType; ! public static VM_Primitive LongType; ! public static VM_Primitive FloatType; ! public static VM_Primitive DoubleType; ! public static VM_Primitive CharType; ! public static VM_Class JavaLangObjectType; public static VM_Array JavaLangObjectArrayType; ! public static VM_Class JavaLangClassType; ! public static VM_Class JavaLangThrowableType; ! public static VM_Class NativeBridgeType; ! public static VM_Class JavaLangStringType; public static VM_Class JavaLangCloneableType; public static VM_Class JavaIoSerializableType; ! public static VM_Class MagicType; ! public static VM_Primitive WordType; public static VM_Array WordArrayType; ! public static VM_Primitive AddressType; public static VM_Array AddressArrayType; ! public static VM_Class ObjectReferenceType; public static VM_Array ObjectReferenceArrayType; ! public static VM_Primitive OffsetType; public static VM_Array OffsetArrayType; ! public static VM_Primitive ExtentType; public static VM_Array ExtentArrayType; ! public static VM_Primitive CodeType; public static VM_Array CodeArrayType; ! public static VM_Class UninterruptibleType; ! public static VM_Class UnpreemptibleType; ! public static VM_Class SynchronizedObjectType; ! public static VM_Class DynamicBridgeType; ! public static VM_Class SaveVolatileType; private static int nextId = 1; *************** *** 157,169 **** protected boolean acyclic; - /** * Create an instance of a {@link VM_Type} ! * @param tr The canonical type reference for this type. */ ! protected VM_Type(VM_TypeReference tr) { ! this.typeRef = tr; this.state = CLASS_VACANT; ! this.dimension = tr.getDimensionality(); this.tibOffset = VM_Statics.allocateSlot(VM_Statics.TIB); this.id = nextId(this); --- 157,176 ---- protected boolean acyclic; /** * Create an instance of a {@link VM_Type} ! * @param typeRef The canonical type reference for this type. ! * @param runtimeVisibleAnnotations array of runtime visible ! * annotations ! * @param runtimeInvisibleAnnotations optional array of runtime ! * invisible annotations */ ! protected VM_Type(VM_TypeReference typeRef, ! VM_Annotation runtimeVisibleAnnotations[], ! VM_Annotation runtimeInvisibleAnnotations[]) ! { ! super(runtimeVisibleAnnotations, runtimeInvisibleAnnotations); ! this.typeRef = typeRef; this.state = CLASS_VACANT; ! this.dimension = typeRef.getDimensionality(); this.tibOffset = VM_Statics.allocateSlot(VM_Statics.TIB); this.id = nextId(this); *************** *** 538,584 **** static void init() { ! VoidType = VM_TypeReference.Void.resolve(); ! BooleanType = VM_TypeReference.Boolean.resolve(); ! ByteType = VM_TypeReference.Byte.resolve(); ! ShortType = VM_TypeReference.Short.resolve(); ! IntType = VM_TypeReference.Int.resolve(); ! LongType = VM_TypeReference.Long.resolve(); ! FloatType = VM_TypeReference.Float.resolve(); ! DoubleType = VM_TypeReference.Double.resolve(); ! CharType = VM_TypeReference.Char.resolve(); ! ! CodeType = VM_TypeReference.Code.resolve(); CodeArrayType = VM_TypeReference.CodeArray.resolve().asArray(); - - JavaLangObjectType = VM_TypeReference.JavaLangObject.resolve(); - JavaLangObjectArrayType = (VM_Array)VM_TypeReference.JavaLangObjectArray.resolve(); - JavaLangClassType = VM_TypeReference.JavaLangClass.resolve(); - JavaLangThrowableType = VM_TypeReference.JavaLangThrowable.resolve(); - JavaLangStringType = VM_TypeReference.JavaLangString.resolve(); - JavaLangCloneableType = (VM_Class)VM_TypeReference.JavaLangCloneable.resolve(); - JavaIoSerializableType = (VM_Class)VM_TypeReference.JavaIoSerializable.resolve(); - MagicType = VM_TypeReference.Magic.resolve(); - UninterruptibleType = VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lorg/vmmagic/pragma/Uninterruptible;")).resolve(); - UnpreemptibleType = VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lorg/vmmagic/pragma/Unpreemptible;")).resolve(); - SynchronizedObjectType= VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_SynchronizedObject;")).resolve(); - DynamicBridgeType = VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_DynamicBridge;")).resolve(); - SaveVolatileType = VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_SaveVolatile;")).resolve(); - NativeBridgeType = VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), - VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/jni/VM_NativeBridge;")).resolve(); - WordType = VM_TypeReference.Word.resolve(); WordArrayType = VM_TypeReference.WordArray.resolve().asArray(); - AddressType = VM_TypeReference.Address.resolve(); AddressArrayType = VM_TypeReference.AddressArray.resolve().asArray(); - ObjectReferenceType = VM_TypeReference.ObjectReference.resolve(); ObjectReferenceArrayType = VM_TypeReference.ObjectReferenceArray.resolve().asArray(); - OffsetType = VM_TypeReference.Offset.resolve(); OffsetArrayType = VM_TypeReference.OffsetArray.resolve().asArray(); - ExtentType = VM_TypeReference.Extent.resolve(); ExtentArrayType = VM_TypeReference.ExtentArray.resolve().asArray(); VM_Array.init(); --- 545,606 ---- static void init() { ! // Primitive types ! VoidType = VM_TypeReference.Void.resolve().asPrimitive(); ! BooleanType = VM_TypeReference.Boolean.resolve().asPrimitive(); ! ByteType = VM_TypeReference.Byte.resolve().asPrimitive(); ! ShortType = VM_TypeReference.Short.resolve().asPrimitive(); ! IntType = VM_TypeReference.Int.resolve().asPrimitive(); ! LongType = VM_TypeReference.Long.resolve().asPrimitive(); ! FloatType = VM_TypeReference.Float.resolve().asPrimitive(); ! DoubleType = VM_TypeReference.Double.resolve().asPrimitive(); ! CharType = VM_TypeReference.Char.resolve().asPrimitive(); ! // Jikes RVM primitives ! AddressType = VM_TypeReference.Address.resolve().asPrimitive(); ! WordType = VM_TypeReference.Word.resolve().asPrimitive(); ! OffsetType = VM_TypeReference.Offset.resolve().asPrimitive(); ! ExtentType = VM_TypeReference.Extent.resolve().asPrimitive(); ! CodeType = VM_TypeReference.Code.resolve().asPrimitive(); ! // Jikes RVM classes ! ObjectReferenceType = VM_TypeReference.ObjectReference.resolve().asClass(); ! MagicType = VM_TypeReference.Magic.resolve().asClass(); ! UninterruptibleType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lorg/vmmagic/pragma/Uninterruptible;") ! ).resolve().asClass(); ! UnpreemptibleType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lorg/vmmagic/pragma/Unpreemptible;") ! ).resolve().asClass(); ! SynchronizedObjectType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_SynchronizedObject;") ! ).resolve().asClass(); ! DynamicBridgeType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_DynamicBridge;") ! ).resolve().asClass(); ! SaveVolatileType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/VM_SaveVolatile;") ! ).resolve().asClass(); ! NativeBridgeType = ! VM_TypeReference.findOrCreate(VM_BootstrapClassLoader.getBootstrapClassLoader(), ! VM_Atom.findOrCreateAsciiAtom("Lcom/ibm/JikesRVM/jni/VM_NativeBridge;") ! ).resolve().asClass(); ! // Array types CodeArrayType = VM_TypeReference.CodeArray.resolve().asArray(); WordArrayType = VM_TypeReference.WordArray.resolve().asArray(); AddressArrayType = VM_TypeReference.AddressArray.resolve().asArray(); ObjectReferenceArrayType = VM_TypeReference.ObjectReferenceArray.resolve().asArray(); OffsetArrayType = VM_TypeReference.OffsetArray.resolve().asArray(); ExtentArrayType = VM_TypeReference.ExtentArray.resolve().asArray(); + // Java clase... [truncated message content] |
From: Ian R. <cap...@us...> - 2006-06-18 08:24:23
|
Update of /cvsroot/jikesrvm/rvm/src/vm/libSupport/java/lang In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv16036/libSupport/java/lang Modified Files: Class.java Log Message: Support for annotations. Currently support can't be used as we're forced into using the non-generic Classpath and the jikes (javac) compiler. If you enable support for non-runtime annotations in VM_AnnotatedElement then some support is possible. The support also lacks some support for default initialization values (for example for Enum types). This patch also restructures the loading/creation of classes, with more fields final and of final types than previously. This has some knock on features, for example the method name in opt compiler IR tracing is now slightly different (reverting this back to the previous behaviour is a small job). Thanks, Ian Index: Class.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/libSupport/java/lang/Class.java,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Class.java 22 May 2006 12:05:46 -0000 1.28 --- Class.java 18 Jun 2006 08:24:20 -0000 1.29 *************** *** 8,11 **** --- 8,13 ---- import java.security.*; + import java.lang.annotation.Annotation; + import java.lang.reflect.Constructor; import java.lang.reflect.Field; *************** *** 38,41 **** --- 40,44 ---- * @author Dave Grove * @modified Steven Augart + * @modified Ian Rogers */ public final class Class implements java.io.Serializable { *************** *** 121,125 **** } Class result[] = new Class[publicClasses.size()]; ! result = (Class[]) publicClasses.toArray(result); return result; } --- 124,128 ---- } Class result[] = new Class[publicClasses.size()]; ! result = (Class[]) publicClasses.toArray(result); return result; } *************** *** 820,823 **** --- 823,830 ---- } } + + public Annotation[] getDeclaredAnnotations() { + return type.getDeclaredAnnotations(); + } } |
From: Ian R. <cap...@us...> - 2006-06-18 08:16:00
|
Update of /cvsroot/jikesrvm/rvm/src/vm/libSupport/java/lang In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv12406 Modified Files: VMSystem.java Log Message: Addition of nanoTime for the most recent Classpath CVS Index: VMSystem.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/libSupport/java/lang/VMSystem.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** VMSystem.java 28 Feb 2005 13:08:35 -0000 1.10 --- VMSystem.java 18 Jun 2006 08:15:50 -0000 1.11 *************** *** 61,64 **** --- 61,68 ---- } + public static long nanoTime() { + return VM_Time.currentTimeMicros() * 1000; + } + static void setIn(InputStream in) { try { |
From: Dave G. <dgr...@us...> - 2006-06-16 11:21:59
|
Update of /cvsroot/jikesrvm/rvm/src/examples/gctracingtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv4802 Modified Files: TracingTest.java Log Message: trivial commit to test loginfo Index: TracingTest.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/examples/gctracingtest/TracingTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TracingTest.java 16 Jun 2006 11:15:42 -0000 1.2 --- TracingTest.java 16 Jun 2006 11:21:55 -0000 1.3 *************** *** 2,5 **** --- 2,6 ---- * (C) Copyright Jikes RVM project */ + //$Id$ |
From: Dave G. <dgr...@us...> - 2006-06-16 11:15:46
|
Index: TracingTest.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/examples/gctracingtest/TracingTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TracingTest.java 15 Jun 2006 20:50:05 -0000 1.1 --- TracingTest.java 16 Jun 2006 11:15:42 -0000 1.2 *************** *** 1,2 **** --- 1,10 ---- + /* + * (C) Copyright Jikes RVM project + */ + //$Id$ + + /** + * @author Matther Hertz + */ public class TracingTest { public static Integer[] arr; |
From: Dave G. <dgr...@us...> - 2006-06-16 11:02:09
|
Index: NEWS =================================================================== RCS file: /cvsroot/jikesrvm/rvm/NEWS,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** NEWS 16 Jun 2006 10:45:44 -0000 1.41 --- NEWS 16 Jun 2006 11:02:07 -0000 1.42 *************** *** 11,15 **** *** Classpath 0.90 or 0.91 is required. By default, 0.91 is used. - *** Classpath AWT and Swing tests now run with the Jikes RVM. We have changed from using the portable native sync code, and addressed issues with M-to-N --- 11,14 ---- |
From: Dave G. <dgr...@us...> - 2006-06-16 10:45:47
|
Index: NEWS =================================================================== RCS file: /cvsroot/jikesrvm/rvm/NEWS,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** NEWS 16 Jun 2006 03:54:08 -0000 1.40 --- NEWS 16 Jun 2006 10:45:44 -0000 1.41 *************** *** 11,14 **** --- 11,15 ---- *** Classpath 0.90 or 0.91 is required. By default, 0.91 is used. + *** Classpath AWT and Swing tests now run with the Jikes RVM. We have changed from using the portable native sync code, and addressed issues with M-to-N |
From: Dave G. <dgr...@us...> - 2006-06-16 03:54:11
|
Update of /cvsroot/jikesrvm/rvm In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv14885 Modified Files: NEWS Log Message: trivial commit to test loginfo change Index: NEWS =================================================================== RCS file: /cvsroot/jikesrvm/rvm/NEWS,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** NEWS 16 Jun 2006 03:50:37 -0000 1.39 --- NEWS 16 Jun 2006 03:54:08 -0000 1.40 *************** *** 11,15 **** *** Classpath 0.90 or 0.91 is required. By default, 0.91 is used. - *** Classpath AWT and Swing tests now run with the Jikes RVM. We have changed from using the portable native sync code, and addressed issues with M-to-N --- 11,14 ---- |
From: Steve B. <ste...@us...> - 2006-06-15 21:30:20
|
Update of /cvsroot/jikesrvm/rvm/regression/config In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv12381/regression/config Added Files: mmtk-gctrace-sanity-tests Log Message: Added new files missed in yesterday's commit of #1506411 --- NEW FILE: mmtk-gctrace-sanity-tests --- gctracingtest |
From: Steve B. <ste...@us...> - 2006-06-15 21:30:16
|
Update of /cvsroot/jikesrvm/rvm/regression/tests/gctracingtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv12381/regression/tests/gctracingtest Added Files: Makefile TimeLimit.performance TimeLimit.sanity Log Message: Added new files missed in yesterday's commit of #1506411 --- NEW FILE: TimeLimit.performance --- 3000 --- NEW FILE: Makefile --- # # (C) Copyright IBM Corp. 2001 # # $Id: Makefile,v 1.1 2006/06/15 20:50:05 steveb-oss Exp $ # # @author Julian Dolby # TESTS = TracingTest include $(RVM_BUILD)/Make.rules.target BENCH_HOME = $(JAL_ROOT)/rvm/src/examples/gctracingtest BENCH_SOURCE_PATH =$(BENCH_HOME) EXPECTED = BENCH_RVM_ARGS = "-X:sysLogfile=/dev/null" include $(JAL_ROOT)/rvm/regression/Make.rules sanity: $(MAKE) TracingTest HEAPSIZE=200 PROCESSORS=1 echo DONE $(TESTS): %: $(MAKE) START_NAME=$@ sanity-check-rule MY_RULE='$(FGREP) -q "TracingTest Finished"' check: @$(MY_RULE) < $(OUT) --- NEW FILE: TimeLimit.sanity --- 2000 |
From: Steve B. <ste...@us...> - 2006-06-15 21:26:29
|
Update of /cvsroot/jikesrvm/rvm/src/examples/gctracingtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv12381/src/examples/gctracingtest Added Files: TracingTest.java Log Message: Added new files missed in yesterday's commit of #1506411 --- NEW FILE: TracingTest.java --- public class TracingTest { public static Integer[] arr; public static void main(String[] args) { arr = new Integer[20]; for (int i = 0; i < 20; i++) { arr[i] = new Integer(i); System.out.println(arr[i].toString()); } System.gc(); for (int i = 0; i < 20; i++) { arr[i] = new Integer(i * 2); if (i != 0) System.out.println(arr[i-1].toString()); } System.gc(); arr = new Integer[10]; for (int i = 0; i < 10; i+=2) { arr[i] = new Integer(i>>1); if (i != 0) System.out.println(arr[i-2].toString()); } System.out.println("TracingTest Finished"); } } |
From: Steve B. <ste...@us...> - 2006-06-15 21:01:25
|
Update of /cvsroot/jikesrvm/rvm/config/build In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv17236 Added Files: FullAdaptiveGCTrace Log Message: One more missing file from previous commit --- NEW FILE: FullAdaptiveGCTrace --- . $1/gc/GCTrace . $1/compilers/FullAdaptive |
From: Steve B. <ste...@us...> - 2006-06-15 20:56:01
|
Update of /cvsroot/jikesrvm/rvm/src/examples/gctracingtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv11975/gctracingtest Log Message: Directory /cvsroot/jikesrvm/rvm/src/examples/gctracingtest added to the repository |
From: Steve B. <ste...@us...> - 2006-06-15 20:55:40
|
Update of /cvsroot/jikesrvm/rvm/regression/tests/gctracingtest In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv11075/tests/gctracingtest Log Message: Directory /cvsroot/jikesrvm/rvm/regression/tests/gctracingtest added to the repository |
From: Steve B. <ste...@us...> - 2006-06-15 02:32:23
|
Update of /cvsroot/jikesrvm/rvm/regression/config In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2531/regression/config Modified Files: night-sanity-all-gcs Log Message: User contribution patch #1506411 from Matthew Hertz. This patch provides a simple regression test for GCTracing builds Index: night-sanity-all-gcs =================================================================== RCS file: /cvsroot/jikesrvm/rvm/regression/config/night-sanity-all-gcs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** night-sanity-all-gcs 31 May 2006 01:10:09 -0000 1.3 --- night-sanity-all-gcs 15 Jun 2006 02:32:20 -0000 1.4 *************** *** 23,24 **** --- 23,25 ---- FullAdaptiveRefCount -test-list nightly-tests-short FullAdaptiveNoGC -test-list mmtk-nogc-sanity-tests + FullAdaptiveGCTrace -test-list mmtk-gctrace-sanity-tests |
From: Dave G. <dgr...@us...> - 2006-06-08 02:48:51
|
Update of /cvsroot/jikesrvm/web/pages/info In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv2420 Modified Files: ack.shtml Log Message: add Avery Moon Index: ack.shtml =================================================================== RCS file: /cvsroot/jikesrvm/web/pages/info/ack.shtml,v retrieving revision 1.69 retrieving revision 1.70 diff -C2 -d -r1.69 -r1.70 *** ack.shtml 7 Jun 2006 10:11:06 -0000 1.69 --- ack.shtml 7 Jun 2006 13:58:47 -0000 1.70 *************** *** 107,110 **** --- 107,111 ---- <li>John Leuner</li> <li>Lukas Loehrer</li> + <li>Avery Moon</li> <li><a href="http://ali-www.cs.umass.edu/~moss">J. Eliot B. Moss</a></li> <li>Anders Biehl Norgaard</li> |
From: Steve B. <ste...@us...> - 2006-06-08 02:39:49
|
Update of /cvsroot/jikesrvm/rvm/config In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv6882/rvm/config Modified Files: powerpc-unknown-linux-gnu Log Message: Updated config file to get PPC Linux working again (using a 142 SR5 JVM) Index: powerpc-unknown-linux-gnu =================================================================== RCS file: /cvsroot/jikesrvm/rvm/config/powerpc-unknown-linux-gnu,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** powerpc-unknown-linux-gnu 17 Feb 2006 16:03:02 -0000 1.35 --- powerpc-unknown-linux-gnu 8 Jun 2006 02:39:45 -0000 1.36 *************** *** 39,45 **** . $RVM_ROOT/rvm/config/classpath-version ! # TODO: below we give JIKES the cmd line arg -target 1.3 because this is a 1.3 JDK. ! # When we find a working 1.4 Linux/ppc JDK unkludge the JIKES definition ! [[ ${HOST_JAVA_HOME-} ]] || export HOST_JAVA_HOME=/usr/lib/j2se/IBMJava2-ppc-142 # the JDK java executable --- 39,48 ---- . $RVM_ROOT/rvm/config/classpath-version ! # Note that this is only known to work with the IBM 142 SR5 release ! # (29/4/06 datestamp). Furthermore, to sucessfully use this jvm on ! # a Mac G4, you must set the following environment variable: ! # export JITC_PROCESSOR_TYPE=6 ! [[ ${HOST_JAVA_HOME-} ]] || export HOST_JAVA_HOME=/opt/IBMJava2-ppc-142 ! # the JDK java executable *************** *** 65,69 **** # path for the Jikes java-to-byte-code compiler - # Given -target 1.3 argument because we are using Blackdown 1.3 for HOST_JAVA_HOME export JIKES="/usr/bin/jikes" --- 68,71 ---- |
From: Daniel F. <dfr...@us...> - 2006-06-08 02:02:32
|
Update of /cvsroot/jikesrvm/MMTk/src/org/mmtk/policy In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv10597/MMTk/src/org/mmtk/policy Modified Files: MarkCompactSpace.java Log Message: Fixed comments. Index: MarkCompactSpace.java =================================================================== RCS file: /cvsroot/jikesrvm/MMTk/src/org/mmtk/policy/MarkCompactSpace.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** MarkCompactSpace.java 7 Jun 2006 12:30:32 -0000 1.2 --- MarkCompactSpace.java 8 Jun 2006 01:52:00 -0000 1.3 *************** *** 231,235 **** /** * Used to mark boot image objects during a parallel scan of objects ! * during GC Returns true if marking was done. * * @param object The object to be marked --- 231,235 ---- /** * Used to mark boot image objects during a parallel scan of objects ! * during GC. Returns true if marking was done. * * @param object The object to be marked *************** *** 248,255 **** /** ! * Used to mark boot image objects during a parallel scan of objects ! * during GC Returns true if marking was done. * ! * @param object The object to be marked */ public static boolean isMarked(ObjectReference object) --- 248,254 ---- /** ! * Is this object marked? * ! * @param object The object to check */ public static boolean isMarked(ObjectReference object) *************** *** 261,268 **** /** ! * Used to mark boot image objects during a parallel scan of objects ! * during GC Returns true if marking was done. * ! * @param object The object to be marked */ private static boolean testAndClearMark(ObjectReference object) --- 260,266 ---- /** ! * Clear the mark bit, returning if the object was marked before the call. * ! * @param object The object to clear */ private static boolean testAndClearMark(ObjectReference object) *************** *** 280,287 **** /** ! * Used to mark boot image objects during a parallel scan of objects ! * during GC Returns true if marking was done. * ! * @param object The object to be marked */ public static boolean toBeCompacted(ObjectReference object) --- 278,284 ---- /** ! * Used to determine if an object is going to be compacted during GC. * ! * @param object The object to check */ public static boolean toBeCompacted(ObjectReference object) *************** *** 293,300 **** /** ! * Used to mark boot image objects during a parallel scan of objects ! * during GC Returns true if marking was done. * ! * @param object The object to be marked */ public static void clearMark(ObjectReference object) --- 290,296 ---- /** ! * Unconditionally clear the mark bit of the object. * ! * @param object The object to clear */ public static void clearMark(ObjectReference object) |
From: Dave G. <dgr...@us...> - 2006-06-07 18:14:17
|
Update of /cvsroot/jikesrvm/rvm/src/vm/HPM In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv32584/src/vm/HPM Modified Files: VM_HardwarePerformanceMonitor.java Log Message: add => plus; sub ==> minus Index: VM_HardwarePerformanceMonitor.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/HPM/VM_HardwarePerformanceMonitor.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** VM_HardwarePerformanceMonitor.java 28 Feb 2005 13:03:17 -0000 1.9 --- VM_HardwarePerformanceMonitor.java 7 Jun 2006 13:18:14 -0000 1.10 *************** *** 379,394 **** n_records++; VM_Magic.setIntAtOffset( buffer, index, encoding); // encoding ! index = index.add(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, global_tid); // globally unique tid ! index = index.add(BYTES_IN_INT); VM_Magic.setLongAtOffset(buffer, index, startOfWallTime); // start of global time ! index = index.add(BYTES_IN_LONG); VM_Magic.setLongAtOffset(buffer, index, endOfWallTime); // end of global time ! index = index.add(BYTES_IN_LONG); //BEGIN HRM VM_Magic.setIntAtOffset( buffer, index, callee_MID); // callee MID ! index = index.add(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, caller_MID); // caller MID ! index = index.add(BYTES_IN_INT); //END HRM } --- 379,394 ---- n_records++; VM_Magic.setIntAtOffset( buffer, index, encoding); // encoding ! index = index.plus(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, global_tid); // globally unique tid ! index = index.plus(BYTES_IN_INT); VM_Magic.setLongAtOffset(buffer, index, startOfWallTime); // start of global time ! index = index.plus(BYTES_IN_LONG); VM_Magic.setLongAtOffset(buffer, index, endOfWallTime); // end of global time ! index = index.plus(BYTES_IN_LONG); //BEGIN HRM VM_Magic.setIntAtOffset( buffer, index, callee_MID); // callee MID ! index = index.plus(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, caller_MID); // caller MID ! index = index.plus(BYTES_IN_INT); //END HRM } *************** *** 400,404 **** if (buffer != null) { // write HPM counter values VM_Magic.setLongAtOffset(buffer, index, value); ! index = index.add(BYTES_IN_LONG); } } --- 400,404 ---- if (buffer != null) { // write HPM counter values VM_Magic.setLongAtOffset(buffer, index, value); ! index = index.plus(BYTES_IN_LONG); } } *************** *** 425,429 **** { if (buffer_code == ONE) { ! if (index_1.add(record_size).sGT(Offset.fromIntZeroExtend(OUTPUT_BUFFER_SIZE))) { if (! consumer.isActive()) { // swap buffers and activate consumer to write full buffer to disk --- 425,429 ---- { if (buffer_code == ONE) { ! if (index_1.plus(record_size).sGT(Offset.fromIntZeroExtend(OUTPUT_BUFFER_SIZE))) { if (! consumer.isActive()) { // swap buffers and activate consumer to write full buffer to disk *************** *** 443,447 **** } } else if (buffer_code == TWO) { ! if (index_2.add(record_size).sGT(Offset.fromIntZeroExtend(OUTPUT_BUFFER_SIZE))) { if (! consumer.isActive()) { // swap buffers and activate consumer to write full buffer to disk --- 443,447 ---- } } else if (buffer_code == TWO) { ! if (index_2.plus(record_size).sGT(Offset.fromIntZeroExtend(OUTPUT_BUFFER_SIZE))) { if (! consumer.isActive()) { // swap buffers and activate consumer to write full buffer to disk *************** *** 580,584 **** { VM_Magic.setIntAtOffset( buffer, index, FORMAT); // format ! index = index.add(BYTES_IN_INT); index = VM_HardwarePerformanceMonitors.writeStringToBuffer(buffer, index, app); // app name --- 580,584 ---- { VM_Magic.setIntAtOffset( buffer, index, FORMAT); // format ! index = index.plus(BYTES_IN_INT); index = VM_HardwarePerformanceMonitors.writeStringToBuffer(buffer, index, app); // app name *************** *** 597,604 **** { VM_Magic.setIntAtOffset( buffer, index, FORMAT); // format ! index = index.add(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, run); // run ! index = index.add(BYTES_IN_INT); index = VM_HardwarePerformanceMonitors.writeStringToBuffer(buffer, index, app); // app name --- 597,604 ---- { VM_Magic.setIntAtOffset( buffer, index, FORMAT); // format ! index = index.plus(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, run); // run ! index = index.plus(BYTES_IN_INT); index = VM_HardwarePerformanceMonitors.writeStringToBuffer(buffer, index, app); // app name *************** *** 631,642 **** byte pad = 0; VM_Magic.setIntAtOffset( buffer, index, PADDING_FORMAT); // format ! index = index.add(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, padding); // length ! index = index.add(BYTES_IN_INT); for (int i=0; i<padding; i++) { // add padding VM_Magic.setByteAtOffset( buffer, index, pad); ! index = index.add(BYTES_IN_BYTE); } if (VM_HardwarePerformanceMonitors.verbose>=3) { --- 631,642 ---- byte pad = 0; VM_Magic.setIntAtOffset( buffer, index, PADDING_FORMAT); // format ! index = index.plus(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer, index, padding); // length ! index = index.plus(BYTES_IN_INT); for (int i=0; i<padding; i++) { // add padding VM_Magic.setByteAtOffset( buffer, index, pad); ! index = index.plus(BYTES_IN_BYTE); } if (VM_HardwarePerformanceMonitors.verbose>=3) { |
From: Ian R. <cap...@us...> - 2006-06-07 18:13:55
|
Update of /cvsroot/jikesrvm/rvm/src/vm/compilers/optimizing/ir/cfg In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv22397/src/vm/compilers/optimizing/ir/cfg Modified Files: OPT_BasicBlock.java OPT_ControlFlowGraph.java Log Message: Make fields final Index: OPT_BasicBlock.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_BasicBlock.java,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** OPT_BasicBlock.java 1 Nov 2005 02:41:26 -0000 1.27 --- OPT_BasicBlock.java 7 Jun 2006 15:40:59 -0000 1.28 *************** *** 94,103 **** * First instruction of the basic block (LABEL). */ ! OPT_Instruction start; /** * Last instruction of the basic block (BBEND). */ ! OPT_Instruction end; /** --- 94,103 ---- * First instruction of the basic block (LABEL). */ ! final OPT_Instruction start; /** * Last instruction of the basic block (BBEND). */ ! final OPT_Instruction end; /** *************** *** 164,167 **** --- 164,168 ---- */ private OPT_BasicBlock() { + start = end = null; setNumber(1); } *************** *** 1626,1632 **** // a single list and update this's BBEND info this.end.getPrev().linkWithNext(succBB.start.getNext()); ! end = succBB.end; ! BBend.setBlock(end, new OPT_BasicBlockOperand(this)); ! // Add succBB's CFG sucessors to this's CFG out edges --- 1627,1631 ---- // a single list and update this's BBEND info this.end.getPrev().linkWithNext(succBB.start.getNext()); ! succBB.end.getPrev().linkWithNext(this.end); // Add succBB's CFG sucessors to this's CFG out edges Index: OPT_ControlFlowGraph.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/compilers/optimizing/ir/cfg/OPT_ControlFlowGraph.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** OPT_ControlFlowGraph.java 5 Dec 2003 23:47:37 -0000 1.7 --- OPT_ControlFlowGraph.java 7 Jun 2006 15:40:59 -0000 1.8 *************** *** 67,71 **** * The distringuished exit node of the FCFG */ ! private OPT_BasicBlock _exitNode; /** --- 67,71 ---- * The distringuished exit node of the FCFG */ ! private final OPT_BasicBlock _exitNode; /** |
From: Dave G. <dgr...@us...> - 2006-06-07 18:13:29
|
Update of /cvsroot/jikesrvm/rvm/src/vm/arch/powerPC/compilers/baseline In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv32190/src/vm/arch/powerPC/compilers/baseline Modified Files: VM_Compiler.java Log Message: tweak fix for miranda methods; implement in PPC baseline compiler Index: VM_Compiler.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/arch/powerPC/compilers/baseline/VM_Compiler.java,v retrieving revision 1.143 retrieving revision 1.144 diff -C2 -d -r1.143 -r1.144 *** VM_Compiler.java 5 Jun 2006 04:30:49 -0000 1.143 --- VM_Compiler.java 7 Jun 2006 13:55:47 -0000 1.144 *************** *** 2553,2574 **** (VM.BuildForITableInterfaceInvocation && VM.DirectlyIndexedITables)) { ! if (resolvedMethod == null) { ! // Can't successfully resolve it at compile time. ! // Call uncommon case typechecking routine to do the right thing when this code actually executes. ! asm.emitLAddrToc(T0, VM_Entrypoints.unresolvedInvokeinterfaceImplementsTestMethod.getOffset()); ! asm.emitMTCTR(T0); ! asm.emitLVAL(T0, methodRef.getId()); // id of method reference we are trying to call ! peekAddr(T1, count-1); // the "this" object ! VM_ObjectModel.baselineEmitLoadTIB(asm,T1,T1); ! asm.emitBCCTRL(); // throw exception, if link error } else { ! // normal case. Not a ghost ref. ! asm.emitLAddrToc(T0, VM_Entrypoints.invokeinterfaceImplementsTestMethod.getOffset()); ! asm.emitMTCTR(T0); ! asm.emitLAddrToc(T0, resolvedMethod.getDeclaringClass().getTibOffset()); // tib of the interface method ! asm.emitLAddr(T0, TIB_TYPE_INDEX << LOG_BYTES_IN_ADDRESS, T0); // type of the interface method ! peekAddr(T1, count-1); // the "this" object ! VM_ObjectModel.baselineEmitLoadTIB(asm,T1,T1); ! asm.emitBCCTRL(); // throw exception, if link error } } --- 2553,2581 ---- (VM.BuildForITableInterfaceInvocation && VM.DirectlyIndexedITables)) { ! if (methodRef.isMiranda()) { ! // TODO: It's not entirely clear that we can just assume that ! // the class actually implements the interface. ! // However, we don't know what interface we need to be checking ! // so there doesn't appear to be much else we can do here. } else { ! if (resolvedMethod == null) { ! // Can't successfully resolve it at compile time. ! // Call uncommon case typechecking routine to do the right thing when this code actually executes. ! asm.emitLAddrToc(T0, VM_Entrypoints.unresolvedInvokeinterfaceImplementsTestMethod.getOffset()); ! asm.emitMTCTR(T0); ! asm.emitLVAL(T0, methodRef.getId()); // id of method reference we are trying to call ! peekAddr(T1, count-1); // the "this" object ! VM_ObjectModel.baselineEmitLoadTIB(asm,T1,T1); ! asm.emitBCCTRL(); // throw exception, if link error ! } else { ! // normal case. Not a ghost ref. ! asm.emitLAddrToc(T0, VM_Entrypoints.invokeinterfaceImplementsTestMethod.getOffset()); ! asm.emitMTCTR(T0); ! asm.emitLAddrToc(T0, resolvedMethod.getDeclaringClass().getTibOffset()); // tib of the interface method ! asm.emitLAddr(T0, TIB_TYPE_INDEX << LOG_BYTES_IN_ADDRESS, T0); // type of the interface method ! peekAddr(T1, count-1); // the "this" object ! VM_ObjectModel.baselineEmitLoadTIB(asm,T1,T1); ! asm.emitBCCTRL(); // throw exception, if link error ! } } } |
From: Dave G. <dgr...@us...> - 2006-06-07 18:13:29
|
Update of /cvsroot/jikesrvm/rvm/src/vm/HPM In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv32693/src/vm/HPM Modified Files: VM_TraceWriter.java Log Message: add => plus; sub ==> minus Index: VM_TraceWriter.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/HPM/VM_TraceWriter.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** VM_TraceWriter.java 1 Feb 2005 03:40:23 -0000 1.8 --- VM_TraceWriter.java 7 Jun 2006 13:18:24 -0000 1.9 *************** *** 249,253 **** VM_Magic.setIntAtOffset(buffer, index, HPM_info.swapByteOrder(version_number)); } ! index = index.add(BYTES_IN_INT); // write name of header file if(VM_HardwarePerformanceMonitors.verbose>=4) { --- 249,253 ---- VM_Magic.setIntAtOffset(buffer, index, HPM_info.swapByteOrder(version_number)); } ! index = index.plus(BYTES_IN_INT); // write name of header file if(VM_HardwarePerformanceMonitors.verbose>=4) { *************** *** 397,403 **** byte[] buffer2 = new byte[10]; VM_Magic.setIntAtOffset( buffer2, index, VM_HardwarePerformanceMonitor.EXIT_FORMAT);// format ! index = index.add(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer2, index, value); // value ! index = index.add(BYTES_IN_INT); writeFileOutputStream(buffer2, index); --- 397,403 ---- byte[] buffer2 = new byte[10]; VM_Magic.setIntAtOffset( buffer2, index, VM_HardwarePerformanceMonitor.EXIT_FORMAT);// format ! index = index.plus(BYTES_IN_INT); VM_Magic.setIntAtOffset( buffer2, index, value); // value ! index = index.plus(BYTES_IN_INT); writeFileOutputStream(buffer2, index); |
From: Dave G. <dgr...@us...> - 2006-06-07 18:13:09
|
Update of /cvsroot/jikesrvm/rvm/src/vm/compilers/baseline In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv1181 Modified Files: VM_CompilerFramework.java Log Message: fix indentation Index: VM_CompilerFramework.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/compilers/baseline/VM_CompilerFramework.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** VM_CompilerFramework.java 7 Jun 2006 00:46:47 -0000 1.8 --- VM_CompilerFramework.java 7 Jun 2006 13:19:32 -0000 1.9 *************** *** 1439,1445 **** if (VM.VerifyUnint && !isInterruptible) forbiddenBytecode("invokeinterface ", methodRef); emit_invokeinterface(methodRef); ! } ! else { ! if (methodRef.needsDynamicLink(method)) { if (VM.VerifyUnint && !isInterruptible) forbiddenBytecode("unresolved invokevirtual ", methodRef); --- 1439,1443 ---- if (VM.VerifyUnint && !isInterruptible) forbiddenBytecode("invokeinterface ", methodRef); emit_invokeinterface(methodRef); ! } else { if (methodRef.needsDynamicLink(method)) { if (VM.VerifyUnint && !isInterruptible) forbiddenBytecode("unresolved invokevirtual ", methodRef); |
From: Ian R. <cap...@us...> - 2006-06-07 18:13:09
|
Update of /cvsroot/jikesrvm/rvm/src/vm In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv23933/src/vm Modified Files: VM.java Log Message: Run class initializer for VMClassLoader Index: VM.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/VM.java,v retrieving revision 1.201 retrieving revision 1.202 diff -C2 -d -r1.201 -r1.202 *** VM.java 5 Jun 2006 04:30:44 -0000 1.201 --- VM.java 7 Jun 2006 15:42:34 -0000 1.202 *************** *** 256,260 **** VMClassLoader.getSystemClassLoader() */ runClassInitializer("java.net.URLClassLoader"); ! /* Used if we start up Jikes RVM with the -jar argument; that argument * means that we need a working -jar before we can return an --- 256,260 ---- VMClassLoader.getSystemClassLoader() */ runClassInitializer("java.net.URLClassLoader"); ! /* Used if we start up Jikes RVM with the -jar argument; that argument * means that we need a working -jar before we can return an *************** *** 323,327 **** runClassInitializer("java.io.FileDescriptor"); runClassInitializer("java.util.jar.JarFile"); ! //-#if RVM_WITH_HPM runClassInitializer("com.ibm.JikesRVM.Java2HPM"); --- 323,327 ---- runClassInitializer("java.io.FileDescriptor"); runClassInitializer("java.util.jar.JarFile"); ! //-#if RVM_WITH_HPM runClassInitializer("com.ibm.JikesRVM.Java2HPM"); *************** *** 333,337 **** runClassInitializer("java.util.PropertyPermission"); runClassInitializer("com.ibm.JikesRVM.VM_Process"); ! // Initialize java.lang.System.out, java.lang.System.err, java.lang.System.in VM_FileSystem.initializeStandardStreams(); --- 333,338 ---- runClassInitializer("java.util.PropertyPermission"); runClassInitializer("com.ibm.JikesRVM.VM_Process"); ! runClassInitializer("java.lang.VMClassLoader"); ! // Initialize java.lang.System.out, java.lang.System.err, java.lang.System.in VM_FileSystem.initializeStandardStreams(); |
From: Dave G. <dgr...@us...> - 2006-06-07 18:12:48
|
Update of /cvsroot/jikesrvm/rvm/src/vm/classLoader In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv420 Modified Files: VM_InterfaceInvocation.java Log Message: typo in javadoc Index: VM_InterfaceInvocation.java =================================================================== RCS file: /cvsroot/jikesrvm/rvm/src/vm/classLoader/VM_InterfaceInvocation.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** VM_InterfaceInvocation.java 29 Jun 2005 19:30:20 -0000 1.15 --- VM_InterfaceInvocation.java 7 Jun 2006 13:18:44 -0000 1.16 *************** *** 118,122 **** /** * LHSclass is an interface that RHS class must implement. ! * Raises an IncompatibaleClassChangeError if RHStib does not implement LHSclass * * @param LHSclass an class (should be an interface) --- 118,123 ---- /** * LHSclass is an interface that RHS class must implement. ! * Raises an IncompatibleClassChangeError if RHStib does not ! * implement LHSclass. * * @param LHSclass an class (should be an interface) |