From neal at gafter.com Tue Jul 1 22:37:47 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 05:37:47 +0000 Subject: hg: closures/closures: 8 new changesets Message-ID: <20080702053747.753EF287F1@hg.openjdk.java.net> Changeset: 613dea62de17 Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/613dea62de17 Added tag jdk7-b26 for changeset 9410f77cc30c ! .hgtags Changeset: 0f440f3321f5 Author: ohair Date: 2008-04-30 19:35 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/0f440f3321f5 6563616: Clarify instructions for unpacking openjdk binary "plug" 6611685: Incorrect link to CA certs info from build README 6682167: Add cygwin faq to README-builds.html Reviewed-by: xdono ! README-builds.html Changeset: 11b4dc9f2be3 Author: xdono Date: 2008-05-13 11:31 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/11b4dc9f2be3 Merge Changeset: 56652b46f328 Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/56652b46f328 Added tag jdk7-b27 for changeset 11b4dc9f2be3 ! .hgtags Changeset: 8fc9d057bd12 Author: xdono Date: 2008-06-10 10:16 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/8fc9d057bd12 Added tag jdk7-b28 for changeset 56652b46f328 ! .hgtags Changeset: bf6ee1d9127e Author: martin Date: 2008-06-10 16:30 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/bf6ee1d9127e 6710904: COMMON_BUILD_ARGUMENTS needs PREVIOUS_..._VERSION settings Reviewed-by: ohair, tbell ! make/Defs-internal.gmk Changeset: 31e08f70e88d Author: xdono Date: 2008-06-12 11:46 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/31e08f70e88d Merge Changeset: 14c2c623d687 Author: xdono Date: 2008-06-20 08:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/14c2c623d687 Added tag jdk7-b29 for changeset 31e08f70e88d ! .hgtags From neal at gafter.com Tue Jul 1 22:38:36 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 05:38:36 +0000 Subject: hg: closures/closures/corba: 6 new changesets Message-ID: <20080702053842.96990287F6@hg.openjdk.java.net> Changeset: e84e9018bebb Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/e84e9018bebb Added tag jdk7-b26 for changeset 0043eb3d4e62 ! .hgtags Changeset: 27509b7d21ed Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/27509b7d21ed Added tag jdk7-b27 for changeset e84e9018bebb ! .hgtags Changeset: c4dd5b7198b0 Author: xdono Date: 2008-06-10 10:17 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/c4dd5b7198b0 Added tag jdk7-b28 for changeset 27509b7d21ed ! .hgtags Changeset: 9eeb4966acae Author: ohair Date: 2008-06-04 09:27 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/9eeb4966acae 6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles) Summary: Changes to support building with SS12. Reviewed-by: tbell ! make/common/shared/Compiler-sun.gmk ! make/jprt.config Changeset: 8b71960f79ce Author: xdono Date: 2008-06-12 11:46 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/8b71960f79ce Merge Changeset: 76600bc57421 Author: xdono Date: 2008-06-20 08:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/76600bc57421 Added tag jdk7-b29 for changeset 8b71960f79ce ! .hgtags From neal at gafter.com Tue Jul 1 22:48:10 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 05:48:10 +0000 Subject: hg: closures/closures/jaxp: 4 new changesets Message-ID: <20080702054817.397D628800@hg.openjdk.java.net> Changeset: bafed478d67c Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/bafed478d67c Added tag jdk7-b26 for changeset da43cb85fac1 ! .hgtags Changeset: b996318955c0 Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/b996318955c0 Added tag jdk7-b27 for changeset bafed478d67c ! .hgtags Changeset: 617ee8607cfd Author: xdono Date: 2008-06-10 10:27 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/617ee8607cfd Added tag jdk7-b28 for changeset b996318955c0 ! .hgtags Changeset: 4d8da2b3c124 Author: xdono Date: 2008-06-20 08:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/4d8da2b3c124 Added tag jdk7-b29 for changeset 617ee8607cfd ! .hgtags From neal at gafter.com Tue Jul 1 22:49:06 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 05:49:06 +0000 Subject: hg: closures/closures/jaxws: 4 new changesets Message-ID: <20080702054912.E570528805@hg.openjdk.java.net> Changeset: 27d8f42862c1 Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/27d8f42862c1 Added tag jdk7-b26 for changeset debd37e1a422 ! .hgtags Changeset: eefcd5204500 Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/eefcd5204500 Added tag jdk7-b27 for changeset 27d8f42862c1 ! .hgtags Changeset: 836c55713aba Author: xdono Date: 2008-06-10 10:28 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/836c55713aba Added tag jdk7-b28 for changeset eefcd5204500 ! .hgtags Changeset: 2c23d2441366 Author: xdono Date: 2008-06-20 08:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/2c23d2441366 Added tag jdk7-b29 for changeset 836c55713aba ! .hgtags From neal at gafter.com Tue Jul 1 23:11:59 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 06:11:59 +0000 Subject: hg: closures/closures/langtools: 28 new changesets Message-ID: <20080702061244.F217A2880E@hg.openjdk.java.net> Changeset: 3c41acaad702 Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/3c41acaad702 Added tag jdk7-b26 for changeset c46d25a2350a ! .hgtags Changeset: eb4c60ad2fa2 Author: tbell Date: 2008-04-25 15:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/eb4c60ad2fa2 Merge Changeset: a17265993253 Author: tbell Date: 2008-05-12 18:07 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/a17265993253 Merge Changeset: 58e352559a41 Author: jjg Date: 2008-05-22 15:51 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/58e352559a41 6705945: com.sun.tools.javac.zip files do not have valid copyright Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java ! src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java Changeset: b8c8259e0d2b Author: jjg Date: 2008-05-22 16:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/b8c8259e0d2b 6657909: javap has unchecked compilation warnings Reviewed-by: mcimadamore ! src/share/classes/sun/tools/javap/ClassData.java ! src/share/classes/sun/tools/javap/FieldData.java ! src/share/classes/sun/tools/javap/InnerClassData.java ! src/share/classes/sun/tools/javap/JavapPrinter.java ! src/share/classes/sun/tools/javap/Main.java ! src/share/classes/sun/tools/javap/MethodData.java ! src/share/classes/sun/tools/javap/Tables.java ! src/share/classes/sun/tools/javap/TypeSignature.java Changeset: 65a447c75d4b Author: jjg Date: 2008-05-22 17:40 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/65a447c75d4b 6705935: javac reports path name of entry in ZipFileIndex incorectly Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/util/JavacFileManager.java ! test/tools/javac/6589361/T6589361.java + test/tools/javac/T6705935.java Changeset: 8852d96b593b Author: mcimadamore Date: 2008-05-30 10:29 +0100 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/8852d96b593b 6665223: Static import of inherited protected method causes compiler exception Summary: Buggy accessibility check causes NPE during resolution of imported static methods Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Resolve.java + test/tools/javac/staticImport/6665223/T6665223.java + test/tools/javac/staticImport/6665223/pkg/A.java + test/tools/javac/staticImport/6665223/pkg/B.java Changeset: 6e9a43815df7 Author: mcimadamore Date: 2008-05-30 10:42 +0100 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/6e9a43815df7 6507024: casting an array to a generic type results in a 'capture#69 of ?' type error Summary: Types.isSubtypeUnchecked() should handle type-variables subtyping properly Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/code/Types.java + test/tools/javac/generics/T6507024.java Changeset: f7e64b33d5a4 Author: mcimadamore Date: 2008-05-30 11:08 +0100 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/f7e64b33d5a4 6677785: REGRESSION: StackOverFlowError with Cyclic Class level Type Parameters when used in constructors Summary: This regression has been caused by previous fix of 6660289 Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/comp/Check.java + test/tools/javac/generics/6677785/T6677785.java + test/tools/javac/generics/6677785/T6677785.out Changeset: 7708bd6d800d Author: jjg Date: 2008-06-03 13:26 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/7708bd6d800d 4075303: Use javap to enquire aboput a specific inner class 4348375: Javap is not internationalized 4459541: "javap -l" shows line numbers as signed short; they should be unsigned 4501660: change diagnostic of -help as 'print this help message and exit' 4776241: unused source file in javap... 4870651: javap should recognize generics, varargs, enum 4876942: javap invoked without args does not print help screen 4880663: javap could output whitespace between class name and opening brace 4975569: javap doesn't print new flag bits 6271787: javap dumps LocalVariableTypeTable attribute in hex, needs to print a table 6305779: javap: support annotations 6439940: Clean up javap implementation 6469569: wrong check of searchpath in JavapEnvironment 6474890: javap does not open .zip files in -classpath 6587786: Javap throws error : "ERROR:Could not find " for JRE classes 6622215: javap ignores certain relevant access flags 6622216: javap names some attributes incorrectly 6622232: javap gets whitespace confused 6622260: javap prints negative bytes incorrectly in hex Reviewed-by: ksrini ! make/build.properties ! make/build.xml ! make/netbeans/common/standard-ide-actions-no-javadoc.ent ! make/netbeans/common/standard-ide-actions.ent + src/share/classes/com/sun/tools/classfile/AccessFlags.java + src/share/classes/com/sun/tools/classfile/Annotation.java + src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java + src/share/classes/com/sun/tools/classfile/Attribute.java + src/share/classes/com/sun/tools/classfile/AttributeException.java + src/share/classes/com/sun/tools/classfile/Attributes.java + src/share/classes/com/sun/tools/classfile/CharacterRangeTable_attribute.java + src/share/classes/com/sun/tools/classfile/ClassFile.java + src/share/classes/com/sun/tools/classfile/ClassReader.java + src/share/classes/com/sun/tools/classfile/ClassTranslator.java + src/share/classes/com/sun/tools/classfile/ClassWriter.java + src/share/classes/com/sun/tools/classfile/Code_attribute.java + src/share/classes/com/sun/tools/classfile/CompilationID_attribute.java + src/share/classes/com/sun/tools/classfile/ConstantPool.java + src/share/classes/com/sun/tools/classfile/ConstantPoolException.java + src/share/classes/com/sun/tools/classfile/ConstantValue_attribute.java + src/share/classes/com/sun/tools/classfile/DefaultAttribute.java + src/share/classes/com/sun/tools/classfile/Deprecated_attribute.java + src/share/classes/com/sun/tools/classfile/Descriptor.java + src/share/classes/com/sun/tools/classfile/DescriptorException.java + src/share/classes/com/sun/tools/classfile/EnclosingMethod_attribute.java + src/share/classes/com/sun/tools/classfile/Exceptions_attribute.java + src/share/classes/com/sun/tools/classfile/Field.java + src/share/classes/com/sun/tools/classfile/InnerClasses_attribute.java + src/share/classes/com/sun/tools/classfile/LineNumberTable_attribute.java + src/share/classes/com/sun/tools/classfile/LocalVariableTable_attribute.java + src/share/classes/com/sun/tools/classfile/LocalVariableTypeTable_attribute.java + src/share/classes/com/sun/tools/classfile/Method.java + src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java + src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java + src/share/classes/com/sun/tools/classfile/Module_attribute.java + src/share/classes/com/sun/tools/classfile/OpCodes.java + src/share/classes/com/sun/tools/classfile/RuntimeAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/RuntimeInvisibleAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/RuntimeInvisibleParameterAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/RuntimeParameterAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/RuntimeVisibleAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/RuntimeVisibleParameterAnnotations_attribute.java + src/share/classes/com/sun/tools/classfile/Signature.java + src/share/classes/com/sun/tools/classfile/Signature_attribute.java + src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java + src/share/classes/com/sun/tools/classfile/SourceFile_attribute.java + src/share/classes/com/sun/tools/classfile/SourceID_attribute.java + src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java + src/share/classes/com/sun/tools/classfile/StackMap_attribute.java + src/share/classes/com/sun/tools/classfile/Synthetic_attribute.java + src/share/classes/com/sun/tools/classfile/Type.java + src/share/classes/com/sun/tools/classfile/package.html + src/share/classes/com/sun/tools/javap/AnnotationWriter.java + src/share/classes/com/sun/tools/javap/AttributeWriter.java + src/share/classes/com/sun/tools/javap/BasicWriter.java + src/share/classes/com/sun/tools/javap/ClassWriter.java + src/share/classes/com/sun/tools/javap/CodeWriter.java + src/share/classes/com/sun/tools/javap/ConstantWriter.java + src/share/classes/com/sun/tools/javap/Context.java + src/share/classes/com/sun/tools/javap/DisassemblerTool.java + src/share/classes/com/sun/tools/javap/InternalError.java + src/share/classes/com/sun/tools/javap/JavapFileManager.java + src/share/classes/com/sun/tools/javap/JavapTask.java + src/share/classes/com/sun/tools/javap/Main.java + src/share/classes/com/sun/tools/javap/Options.java + src/share/classes/com/sun/tools/javap/overview.html + src/share/classes/com/sun/tools/javap/package.html + src/share/classes/com/sun/tools/javap/resources/javap.properties + src/share/classes/com/sun/tools/javap/resources/version.properties-template ! src/share/classes/sun/tools/javap/Main.java + test/tools/javap/4870651/T4870651.java + test/tools/javap/4870651/Test.java + test/tools/javap/ListTest.java + test/tools/javap/OptionTest.java + test/tools/javap/T4075403.java + test/tools/javap/T4459541.java + test/tools/javap/T4501660.java + test/tools/javap/T4876942.java + test/tools/javap/T4880663.java + test/tools/javap/T4975569.java + test/tools/javap/T6271787.java + test/tools/javap/T6305779.java + test/tools/javap/T6474890.java + test/tools/javap/T6587786.java + test/tools/javap/T6622216.java + test/tools/javap/T6622232.java + test/tools/javap/T6622260.java Changeset: 12c9e612e9e3 Author: jjg Date: 2008-06-05 13:46 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/12c9e612e9e3 6711276: langtools has incorrect -Werror switch Reviewed-by: ksrini ! make/build.properties Changeset: 4ef4bd318569 Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/4ef4bd318569 Added tag jdk7-b27 for changeset a17265993253 ! .hgtags Changeset: ff3d4fdf9c63 Author: tbell Date: 2008-05-28 00:02 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/ff3d4fdf9c63 Merge Changeset: fc780e96a16a Author: tbell Date: 2008-06-02 22:35 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/fc780e96a16a Merge Changeset: c2abfb92ba69 Author: tbell Date: 2008-06-06 15:17 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/c2abfb92ba69 Merge Changeset: b9bcea8bbe24 Author: jjg Date: 2008-06-16 13:28 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/b9bcea8bbe24 6714364: refactor javac File handling code into new javac.file package Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/apt/main/JavaCompiler.java ! src/share/classes/com/sun/tools/apt/main/Main.java ! src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java ! src/share/classes/com/sun/tools/javac/api/JavacTool.java + src/share/classes/com/sun/tools/javac/file/BaseFileObject.java + src/share/classes/com/sun/tools/javac/file/JavacFileManager.java + src/share/classes/com/sun/tools/javac/file/Old199.java + src/share/classes/com/sun/tools/javac/file/Paths.java + src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java + src/share/classes/com/sun/tools/javac/file/ZipFileIndexEntry.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/main/Main.java ! src/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java - src/share/classes/com/sun/tools/javac/util/BaseFileObject.java ! src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java ! src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java - src/share/classes/com/sun/tools/javac/util/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/util/Log.java - src/share/classes/com/sun/tools/javac/util/Old199.java - src/share/classes/com/sun/tools/javac/util/Paths.java - src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java - src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java ! src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java ! src/share/classes/com/sun/tools/javadoc/JavadocTool.java ! src/share/classes/com/sun/tools/javap/JavapFileManager.java ! test/tools/javac/6304921/TestLog.java ! test/tools/javac/6589361/T6589361.java ! test/tools/javac/T6358024.java ! test/tools/javac/T6358166.java ! test/tools/javac/T6358168.java ! test/tools/javac/T6705935.java ! test/tools/javac/api/T6358786.java ! test/tools/javac/api/TestResolveIdent.java ! test/tools/javac/util/filemanager/TestName.java Changeset: f9a4b9e1a521 Author: jjg Date: 2008-06-17 10:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/f9a4b9e1a521 6625520: javac handles missing entries on classpath badly Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javap/JavapFileManager.java + test/tools/javac/T6625520.java Changeset: aa67a5da66e3 Author: jjg Date: 2008-06-18 07:23 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/aa67a5da66e3 6714365: refactor JavacFileManager to move nested classes to top level Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/file/BaseFileObject.java ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java + src/share/classes/com/sun/tools/javac/file/RegularFileObject.java + src/share/classes/com/sun/tools/javac/file/SymbolArchive.java + src/share/classes/com/sun/tools/javac/file/ZipArchive.java ! src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java + src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java - src/share/classes/com/sun/tools/javac/file/ZipFileIndexEntry.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java Changeset: 8bc2ca2a3b0a Author: jjg Date: 2008-06-19 15:52 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/8bc2ca2a3b0a 6716866: some javac regression tests fail to compile with re-orged file manager Reviewed-by: darcy ! test/tools/javac/T6358024.java ! test/tools/javac/T6358166.java ! test/tools/javac/T6358168.java ! test/tools/javac/T6625520.java Changeset: 4a3b9801f7a0 Author: mcimadamore Date: 2008-06-20 11:25 +0100 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/4a3b9801f7a0 6294779: Problem with interface inheritance and covariant return types Summary: Problematic overriding check when two methods defined in two distinct superinterfaces are overriden by an interface Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Check.java + test/tools/javac/generics/6294779/T6294779a.java + test/tools/javac/generics/6294779/T6294779b.java + test/tools/javac/generics/6294779/T6294779c.java Changeset: 29d2485c1085 Author: jjg Date: 2008-06-25 14:24 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/29d2485c1085 6507179: javadoc -source 1.3 does not work with jdk6 Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/comp/Check.java ! src/share/classes/com/sun/tools/javac/util/Log.java ! src/share/classes/com/sun/tools/javac/util/MandatoryWarningHandler.java + test/tools/javadoc/sourceOption/SourceOption.java + test/tools/javadoc/sourceOption/p/A.java Changeset: dec081837b01 Author: xdono Date: 2008-06-10 10:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/dec081837b01 Added tag jdk7-b28 for changeset 4ef4bd318569 ! .hgtags Changeset: 5ee49b24d378 Author: tbell Date: 2008-06-12 13:19 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/5ee49b24d378 Merge Changeset: 700b17652ef6 Author: tbell Date: 2008-06-16 22:23 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/700b17652ef6 Merge - src/share/classes/com/sun/tools/javac/util/BaseFileObject.java - src/share/classes/com/sun/tools/javac/util/JavacFileManager.java - src/share/classes/com/sun/tools/javac/util/Old199.java - src/share/classes/com/sun/tools/javac/util/Paths.java - src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java - src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java Changeset: 3cb4fb6e0720 Author: jjg Date: 2008-06-18 16:53 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/3cb4fb6e0720 6715767: javap on java.lang.ClassLoader crashes Reviewed-by: ksrini ! src/share/classes/com/sun/tools/classfile/ConstantPool.java ! src/share/classes/com/sun/tools/javap/AttributeWriter.java ! src/share/classes/com/sun/tools/javap/ClassWriter.java ! src/share/classes/com/sun/tools/javap/JavapTask.java + test/tools/javap/T6715767.java Changeset: c3f2b8992300 Author: xdono Date: 2008-06-20 08:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/c3f2b8992300 Added tag jdk7-b29 for changeset dec081837b01 ! .hgtags Changeset: 0c66311205c2 Author: tbell Date: 2008-06-20 16:36 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/0c66311205c2 Merge Changeset: a0de486e86a1 Author: tbell Date: 2008-06-25 23:30 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/a0de486e86a1 Merge - src/share/classes/com/sun/tools/javac/file/ZipFileIndexEntry.java From neal at gafter.com Tue Jul 1 22:40:58 2008 From: neal at gafter.com (neal at gafter.com) Date: Wed, 02 Jul 2008 05:40:58 +0000 Subject: hg: closures/closures/hotspot: 193 new changesets Message-ID: <20080702054721.A437D287FB@hg.openjdk.java.net> Changeset: 5ff61c9f5601 Author: jmasa Date: 2008-02-11 15:40 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/5ff61c9f5601 6624782: Bigapps crashes during CMS precleaning. Summary: Lowered optimization level for files instanceKlass.cpp and objArrayKlass.cpp Reviewed-by: ysr ! build/solaris/makefiles/amd64.make Changeset: f21b879b4c72 Author: ysr Date: 2008-02-12 16:07 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f21b879b4c72 6659981: +ParallelRefProcEnabled crashes on single core platform Summary: Disable parallel reference processing when there are no worker threads Reviewed-by: apetrusenko, pbk, jmasa, tonyp ! src/share/vm/memory/referenceProcessor.cpp Changeset: 73e96e5c30df Author: jmasa Date: 2008-02-15 07:01 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/73e96e5c30df 6624765: Guarantee failure "Unexpected dirty card found" Summary: In verification take into account partial coverage of a region by a card and expansion of the card table. Reviewed-by: ysr, apetrusenko ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/memory/cardTableRS.hpp ! src/share/vm/memory/genRemSet.hpp ! src/share/vm/memory/tenuredGeneration.cpp Changeset: 2faf283ce688 Author: ysr Date: 2008-02-16 22:41 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2faf283ce688 6621144: CMS: assertion failure "is_cms_thread == Thread::current()->is_ConcurrentGC_thread()" Summary: Take lock conditionally (in asynchronous mode only) when updating the dead-object map. Reviewed-by: jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Changeset: 762905818571 Author: jmasa Date: 2008-02-20 08:40 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/762905818571 6665445: Backout change to CardTableModRefBS::resize_covered_region() Summary: Backed out part of cahnge for 6624765 because of nightly testing regressions. Reviewers below were for 6624765. Reviewed-by: ysr, apetrusenko ! src/share/vm/memory/cardTableModRefBS.cpp Changeset: 173195ff483a Author: ysr Date: 2008-02-21 11:03 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/173195ff483a 6642634: Test nsk/regression/b6186200 crashed with SIGSEGV Summary: Use correct allocation path in expand_and_allocate() so object's mark and p-bits are set as appropriate. Reviewed-by: jmasa, pbk ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Changeset: 28372612af5e Author: jmasa Date: 2008-02-22 17:17 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/28372612af5e 6362677: Change parallel GC collector default number of parallel GC threads. Summary: Use the same default number of GC threads as used by ParNewGC and ConcMarkSweepGC (i.e., the 5/8th rule). Reviewed-by: ysr, tonyp ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.hpp ! src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/vm_version.cpp ! src/share/vm/runtime/vm_version.hpp Changeset: 3c1dbcaaab1d Author: ysr Date: 2008-02-26 15:57 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3c1dbcaaab1d 6621728: Heap inspection should not crash in the face of C-heap exhaustion Summary: Deal more gracefully with situations where C-heap scratch space cannot be had Reviewed-by: jmasa ! src/share/vm/memory/heapInspection.cpp ! src/share/vm/memory/heapInspection.hpp Changeset: 6432c3bb6240 Author: ysr Date: 2008-02-29 14:42 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6432c3bb6240 6668743: CMS: Consolidate block statistics reporting code Summary: Reduce the amount of related code replication and improve pretty printing. Reviewed-by: jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp ! src/share/vm/gc_implementation/includeDB_gc_shared + src/share/vm/gc_implementation/shared/allocationStats.cpp + src/share/vm/gc_implementation/shared/allocationStats.hpp ! src/share/vm/includeDB_core - src/share/vm/memory/allocationStats.cpp - src/share/vm/memory/allocationStats.hpp Changeset: 183f41cf8bfe Author: jmasa Date: 2008-03-02 16:10 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/183f41cf8bfe 6557851: CMS: ergonomics defaults are not set with FLAG_SET_ERGO Summary: Default values set by cms ergonomics are set with FLAG_SET_DEFAULT so down stream the values look like the default values and affect how later parameters are set. Set these values with FLAG_SET_ERGO instead and adjust how later parameters are interpreted. Reviewed-by: iveresov, apetrusenko, pbk, ysr ! src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp ! src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp ! src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp ! src/share/vm/memory/collectorPolicy.cpp ! src/share/vm/memory/collectorPolicy.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals_extension.hpp Changeset: 6228104986ca Author: jcoomes Date: 2008-03-05 17:37 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6228104986ca Merge - src/share/vm/memory/allocationStats.cpp - src/share/vm/memory/allocationStats.hpp Changeset: d825a8a2bd39 Author: jmasa Date: 2008-03-11 14:19 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d825a8a2bd39 6673975: Disable ZapUnusedHeapArea to reduce GC execution times of debug JVM's. Summary: Mangling the unused space is having an adverse affect on testing with fastdebug builds so turn it off by default. Reviewed-by: ysr, tonyp ! src/share/vm/runtime/globals.hpp Changeset: f8236e79048a Author: dcubed Date: 2007-12-05 09:00 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f8236e79048a 6664627: Merge changes made only in hotspot 11 forward to jdk 7 Reviewed-by: jcoomes ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/sparc/vm/vtableStubs_sparc.cpp ! src/cpu/x86/vm/stubGenerator_x86_32.cpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/vtableStubs_x86_32.cpp ! src/cpu/x86/vm/vtableStubs_x86_64.cpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/klassVtable.hpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/sharedRuntime.hpp ! src/share/vm/runtime/stubRoutines.cpp ! src/share/vm/runtime/stubRoutines.hpp Changeset: ff5961f4c095 Author: never Date: 2007-12-05 09:01 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ff5961f4c095 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long) Reviewed-by: kvn, rasbold + src/share/vm/ci/ciObjArray.cpp ! src/share/vm/ci/ciObjArray.hpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/includeDB_core ! src/share/vm/opto/addnode.cpp ! src/share/vm/opto/addnode.hpp ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/cfgnode.hpp ! src/share/vm/opto/ifnode.cpp ! src/share/vm/opto/loopnode.cpp ! src/share/vm/opto/loopnode.hpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/opto/type.hpp ! src/share/vm/runtime/arguments.cpp Changeset: c7d713375c94 Author: phh Date: 2007-12-05 09:02 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c7d713375c94 6621621: HashMap front cache should be enabled only with AggressiveOpts Reviewed-by: sbohne, xlu ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/runtime/thread.cpp Changeset: a73cc31728fe Author: rasbold Date: 2007-12-05 09:03 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a73cc31728fe 6614036: REGRESSION: Java server x86 VM intermittently crash with SIGSEGV (0xb) Summary: restore destination address in x86 32-bit checkcast_arraycopy stub Reviewed-by: jrose, kvn, never ! src/cpu/x86/vm/stubGenerator_x86_32.cpp Changeset: e195fe4c40c7 Author: phh Date: 2007-12-05 09:04 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e195fe4c40c7 6629887: 64-bit windows should not restrict default heap size to 1400m Reviewed-by: jmasa, sbohne, ikrylov, xlu ! src/os/linux/vm/os_linux.cpp ! src/os/windows/vm/os_windows.cpp ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp Changeset: b611e572fc5b Author: jcoomes Date: 2007-12-06 13:59 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b611e572fc5b 6635560: segv in reference processor on t1000 Summary: Revert back to using the default page size for the card table Reviewed-by: pbk, phh ! src/share/vm/memory/cardTableModRefBS.cpp Changeset: 90f5ddc7297b Author: coleenp Date: 2008-01-17 13:38 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/90f5ddc7297b 6646946: Kernel installation failed on Japanese and Chinese XP SP2 (VM part) Summary: convert strings from Download Manager into native encoding in the VM Reviewed-by: sbohne, never, phh, kamg, xlu ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/classfile/systemDictionary.cpp Changeset: 9bdad1bb1c31 Author: kvn Date: 2008-02-12 18:37 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9bdad1bb1c31 6621098: "* HeapWordSize" for TrackedInitializationLimit is missing Summary: '* HeapWordSize' is missing in GraphKit::set_output_for_allocation() Reviewed-by: rasbold, jrose, never ! src/share/vm/opto/graphKit.cpp Changeset: 953939ef62ab Author: kvn Date: 2008-02-20 16:19 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/953939ef62ab 6614330: Node::dump(n) does not print full graph for specified depth. Summary: A node is not processed in dump_nodes() if it was visited during processing previous inputs. Reviewed-by: rasbold ! src/share/vm/opto/node.cpp Changeset: c5cbd367e4d1 Author: kvn Date: 2008-02-20 17:23 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c5cbd367e4d1 6621094: PrintOptoAssembly is broken for oops information in DebugInfo Summary: OopMapValue and VMRegImpl classes miss the virtual method print_on(st). Reviewed-by: rasbold, jrose, never ! src/share/vm/code/vmreg.cpp ! src/share/vm/code/vmreg.hpp ! src/share/vm/compiler/oopMap.cpp ! src/share/vm/compiler/oopMap.hpp Changeset: 0871d5cd64cd Author: kvn Date: 2008-02-21 14:03 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/0871d5cd64cd 6621084: ciMethodBlocks::split_block_at() is broken for methods with exception handler Summary: After an exception handler block is split the exception information is not moved to the new block which starts in exception handler BCI. Reviewed-by: jrose ! src/share/vm/ci/ciMethodBlocks.cpp ! src/share/vm/ci/ciMethodBlocks.hpp Changeset: 1f530c629c7d Author: kvn Date: 2008-02-21 19:03 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/1f530c629c7d 6498878: client compiler crashes on windows when dealing with breakpoint instructions Summary: _is_compilable check prevents breakpoint bytecodes reversion when loading bytecodes for ciMethod. Reviewed-by: never ! src/share/vm/ci/ciMethod.cpp Changeset: 67914967a4b5 Author: kvn Date: 2008-02-22 17:55 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/67914967a4b5 6650373: Assert in methodOopDesc::make_adapters() Summary: AdapterHandlerLibrary::get_create_adapter_index() returns incorrect value (-2) when CodeCache is full. Reviewed-by: sgoldman ! src/share/vm/opto/output.cpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: d5fc211aea19 Author: kvn Date: 2008-02-25 15:05 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d5fc211aea19 6633953: type2aelembytes{T_ADDRESS} should be 8 bytes in 64 bit VM Summary: T_ADDRESS size is defined as 'int' size (4 bytes) but C2 use it for raw pointers and as memory type for StoreP and LoadP nodes. Reviewed-by: jrose ! src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp ! src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp ! src/cpu/x86/vm/c1_LIRAssembler_x86.cpp ! src/cpu/x86/vm/c1_LIRGenerator_x86.cpp ! src/share/vm/c1/c1_LIR.cpp ! src/share/vm/ci/ciField.hpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/klass.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/superword.cpp ! src/share/vm/opto/vectornode.cpp ! src/share/vm/opto/vectornode.hpp ! src/share/vm/services/heapDumper.cpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp Changeset: 65a06b4a51b8 Author: jrose Date: 2008-02-27 00:23 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/65a06b4a51b8 6610906: inexplicable IncompatibleClassChangeError Summary: dependency check must treat polymorphic interfaces consistently Reviewed-by: kvn, never, sgoldman ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/nmethod.cpp Changeset: 6152cbb08ce9 Author: kvn Date: 2008-02-28 10:45 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6152cbb08ce9 6590177: jck60019 test assert(!repeated,"do not walk merges twice") Summary: A mergemem node could be not in worklist_store but in should_not_repeat vectorset since it was processed and removed from worklist_store before. Reviewed-by: jrose, never ! src/share/vm/opto/gcm.cpp Changeset: 4d428c5b4cb3 Author: kvn Date: 2008-02-28 15:40 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/4d428c5b4cb3 6667573: Use set_req_X() in AddPNode::Ideal() for Iterative GVN Summary: set_req_X() puts dependent nodes on IGVN worklist which allows to improve graph and gives more opportunities for EA scalar replacement. Reviewed-by: jrose, never ! src/share/vm/opto/addnode.cpp Changeset: 3288958bf319 Author: kvn Date: 2008-02-29 09:57 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3288958bf319 6667580: Optimize CmpP for allocations Summary: CmpP could be optimized out if it compares new allocated objects. Reviewed-by: jrose, never, rasbold ! src/share/vm/includeDB_compiler2 ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/subnode.cpp Changeset: 545c277a3ecf Author: kvn Date: 2008-02-29 11:22 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/545c277a3ecf 6667581: Don't generate initialization (by 0) code for arrays with size 0 Summary: generate_arraycopy() does not check the size of allocated array. Reviewed-by: jrose, never ! src/share/vm/opto/library_call.cpp Changeset: e2ae28d2ce91 Author: kvn Date: 2008-02-29 19:07 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e2ae28d2ce91 6667588: Don't generate duplicated CMP for float/double values Summary: float CMove generation add duplicated CMPF if there are more then one Move depending on the condition. Reviewed-by: jrose, never, rasbold ! src/share/vm/opto/loopopts.cpp Changeset: f34d9da7acb2 Author: kvn Date: 2008-02-29 19:57 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f34d9da7acb2 6667618: disable LoadL->ConvL2I ==> LoadI optimization Summary: this optimization causes problems (sizes of Load and Store nodes do not match) for objects initialization code and Escape Analysis Reviewed-by: jrose, never ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/memnode.cpp Changeset: 73970d8c0b27 Author: kvn Date: 2008-03-05 11:33 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/73970d8c0b27 6671250: In Parse::do_if() old Cmp node 'c' should be replaced with new one after BoolNode transformation Summary: In Parse::do_if() 'c' (CmpNode) node may be changed during BoolNode transformation so 'c' may became dead but the node is referenced later in the code. Reviewed-by: never ! src/share/vm/opto/parse2.cpp Changeset: b789bcaf2dd9 Author: kvn Date: 2008-03-06 10:30 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b789bcaf2dd9 6667610: (Escape Analysis) retry compilation without EA if it fails Summary: During split unique types EA could exceed nodes limit and fail the method compilation. Reviewed-by: rasbold ! src/share/vm/includeDB_compiler2 ! src/share/vm/opto/c2compiler.cpp ! src/share/vm/opto/c2compiler.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/parse1.cpp Changeset: 76256d272075 Author: kvn Date: 2008-03-06 10:53 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/76256d272075 6667612: (Escape Analysis) disable loop cloning if it has a scalar replaceable allocation Summary: Cloning an allocation will not allow scalar replacement since memory operations could not be associated with one allocation. Reviewed-by: rasbold ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/loopnode.cpp ! src/share/vm/opto/loopnode.hpp Changeset: 7c1f32ae4a20 Author: kvn Date: 2008-03-06 20:58 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7c1f32ae4a20 6670459: Fix Node::dump() performance Summary: dump full ideal graph takes forever. Reviewed-by: never, rasbold ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp Changeset: 874b2c4f43d1 Author: kvn Date: 2008-03-07 11:09 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/874b2c4f43d1 6667605: (Escape Analysis) inline java constructors when EA is on Summary: java constructors should be inlined to be able scalar replace a new object Reviewed-by: rasbold ! src/share/vm/opto/bytecodeInfo.cpp ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/phaseX.cpp Changeset: 1216832af221 Author: jcoomes Date: 2008-03-10 17:21 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/1216832af221 Merge Changeset: d821d920b465 Author: kvn Date: 2008-03-11 11:04 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d821d920b465 6623167: C2 crashed in StoreCMNode::Value Summary: C2 crashed in StoreCMNode::Value because n->in(MemNode::OopStore) is 0. Reviewed-by: rasbold, never ! src/share/vm/opto/memnode.cpp Changeset: 52fed2ec0afb Author: kvn Date: 2008-03-11 11:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/52fed2ec0afb 6667620: (Escape Analysis) fix deoptimization for scalar replaced objects Summary: Deoptimization code for reallocation and relocking scalar replaced objects has to be fixed. Reviewed-by: rasbold, never ! src/share/vm/ci/ciInstanceKlass.cpp ! src/share/vm/ci/ciInstanceKlass.hpp ! src/share/vm/code/debugInfo.cpp ! src/share/vm/code/scopeDesc.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/runtime/deoptimization.cpp Changeset: 48a3fa21394b Author: kvn Date: 2008-03-11 19:00 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/48a3fa21394b 6667615: (Escape Analysis) extend MDO to cache arguments escape state Summary: Use MDO to cache arguments escape state determined by the byte code escape analyzer. Reviewed-by: never ! src/share/vm/ci/bcEscapeAnalyzer.cpp ! src/share/vm/ci/bcEscapeAnalyzer.hpp ! src/share/vm/ci/ciMethodData.cpp ! src/share/vm/ci/ciMethodData.hpp ! src/share/vm/classfile/vmSymbols.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/oops/methodDataOop.cpp ! src/share/vm/oops/methodDataOop.hpp Changeset: 8b6e49187640 Author: rasbold Date: 2008-03-13 05:40 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8b6e49187640 Merge ! src/share/vm/includeDB_core ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/runtime/arguments.cpp Changeset: 2c106685d6d0 Author: dcubed Date: 2008-03-12 18:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2c106685d6d0 6497639: 4/3 Profiling Swing application caused JVM crash Summary: Make RedefineClasses() interoperate better with class sharing. Reviewed-by: sspitsyn, jmasa ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/memory/compactingPermGenGen.cpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp Changeset: d8b3ef7ee3e5 Author: dcubed Date: 2008-03-12 18:07 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d8b3ef7ee3e5 6599425: 4/3 OopMapCache::lookup() can cause later crash or assert() failure Summary: Add should_not_be_cached() to markOop and methodOop and query that status inOopMapCache::lookup() Reviewed-by: coleenp, sspitsyn, jmasa ! src/share/vm/includeDB_core ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/oops/markOop.cpp ! src/share/vm/oops/markOop.hpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/methodOop.hpp ! src/share/vm/prims/jvmtiRedefineClassesTrace.hpp Changeset: 31000d79ec71 Author: dcubed Date: 2008-03-12 18:09 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/31000d79ec71 6453355: 4/4 new No_Safepoint_Verifier uses fail during GC Summary: (for Serguei) Clean up use of No_Safepoint_Verifier in JVM TI Reviewed-by: dcubed ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/runtime/thread.cpp Changeset: 485d403e94e1 Author: dcubed Date: 2008-03-12 18:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/485d403e94e1 6452081: 3/4 Allow for Linux builds with Sun Studio Linux compilers Summary: (for Serguei) Allow for Linux builds with Sun Studio Linux compilers Reviewed-by: sspitsyn, ohair ! agent/src/os/linux/ps_core.c ! agent/src/os/linux/ps_proc.c ! build/linux/Makefile ! build/linux/makefiles/amd64.make ! build/linux/makefiles/buildtree.make + build/linux/makefiles/sparcWorks.make + build/linux/platform_amd64.suncc + build/linux/platform_i486.suncc ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/os/linux/vm/attachListener_linux.cpp ! src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp ! src/share/vm/utilities/globalDefinitions_sparcWorks.hpp Changeset: 1ffa5cdd0b7e Author: dcubed Date: 2008-03-12 18:39 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/1ffa5cdd0b7e 6667089: 3/3 multiple redefinitions of a class break reflection Summary: Use instanceKlass::method_with_idnum() instead of slot() to work with RedefineClasses(). Reviewed-by: sspitsyn ! src/share/vm/runtime/reflection.cpp Changeset: 75b0f3cb1943 Author: dcubed Date: 2008-03-13 14:17 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/75b0f3cb1943 Merge ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp ! src/share/vm/includeDB_core ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/runtime/thread.cpp Changeset: 9785f6d2dd97 Author: kamg Date: 2008-01-31 09:41 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9785f6d2dd97 6631248: Memory problem when doing invalid type cast Summary: Changed memory allocation method for exception method Reviewed-by: ysr, never ! src/share/vm/runtime/sharedRuntime.cpp Changeset: d4a0f561287a Author: sbohne Date: 2008-01-31 14:56 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d4a0f561287a 6598190: JPRT tests fail when run with -XX:+CheckUnhandledOops Summary: Work around Sun Studio C++ compiler bug 6629277 in dependencies.cpp Reviewed-by: kamg, sgoldman, pbk ! src/share/vm/code/dependencies.cpp Changeset: 2a8eb116ebbe Author: xlu Date: 2008-02-05 23:21 -0800 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2a8eb116ebbe 6610420: Debug VM crashes during monitor lock rank checking Summary: Make SerializePage lock as raw lock and add name for mutex locks Reviewed-by: never, dice, dholmes ! src/share/vm/runtime/mutex.cpp ! src/share/vm/runtime/mutex.hpp ! src/share/vm/runtime/mutexLocker.cpp ! src/share/vm/runtime/mutexLocker.hpp ! src/share/vm/runtime/os.cpp Changeset: 31d829b33f26 Author: coleenp Date: 2008-02-27 13:55 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/31d829b33f26 6549844: Wording problems in "An unexpected error ..." Summary: Changed wording to "A fatal error.." also don't claim it's not VM bug if in hotspot compilers (Java thread in native). Reviewed-by: jjh, sbohne, jrose, never ! src/share/vm/utilities/vmError.cpp Changeset: ff0979201b06 Author: sbohne Date: 2008-03-03 14:47 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ff0979201b06 6655385: Disable frame pointer omission in jvm.dll on Windows for better crash logs Summary: Add /Oy- C++ compiler option on Windows Reviewed-by: phh, never, ysr ! build/windows/makefiles/compile.make Changeset: 7ee622712fcf Author: sbohne Date: 2008-03-04 09:44 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7ee622712fcf 6666698: EnableBiasedLocking with BiasedLockingStartupDelay can block Watcher thread Summary: Enqueue VM_EnableBiasedLocking operation asynchronously Reviewed-by: never, xlu, kbr, acorn ! src/share/vm/runtime/biasedLocking.cpp Changeset: 887682771f69 Author: jcoomes Date: 2008-03-12 16:31 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/887682771f69 Merge Changeset: 8d84e28e68ba Author: sbohne Date: 2008-03-14 10:43 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8d84e28e68ba 6204603: Modify hotspot to use new Solaris mmap semantics for class data archive file Summary: os::attempt_reserve_memory_at() now passes an address hint to mmap Reviewed-by: kamg, dice ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.hpp Changeset: 5a76ab815e34 Author: sbohne Date: 2008-03-19 09:58 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/5a76ab815e34 6667833: Remove CacheTimeMillis Summary: Remove -XX:+CacheTimeMillis option and associated functionality Reviewed-by: acorn, never ! src/os/linux/vm/os_linux.cpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/windows/vm/os_windows.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/task.cpp ! src/share/vm/runtime/task.hpp ! src/share/vm/runtime/thread.cpp Changeset: cd0742ba123c Author: kamg Date: 2008-03-20 09:17 -0500 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/cd0742ba123c Merge ! src/os/linux/vm/os_linux.cpp ! src/os/windows/vm/os_windows.cpp ! src/share/vm/code/dependencies.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/thread.cpp Changeset: eac007780a58 Author: kvn Date: 2008-03-13 16:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/eac007780a58 6671807: (Escape Analysis) Add new ideal node to represent the state of a scalarized object at a safepoint Summary: Values of non-static fields of a scalarized object should be saved in debug info to reallocate the object during deoptimization. Reviewed-by: never ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/output.cpp Changeset: b8f5ba577b02 Author: kvn Date: 2008-03-13 16:31 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b8f5ba577b02 6673473: (Escape Analysis) Add the instance's field information to PhiNode Summary: Avoid an infinite generation of instance's field values Phi nodes. Reviewed-by: never ! src/share/vm/opto/cfgnode.hpp ! src/share/vm/opto/loopopts.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp Changeset: 99269dbf4ba8 Author: kvn Date: 2008-03-14 15:26 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/99269dbf4ba8 6674588: (Escape Analysis) Improve Escape Analysis code Summary: Current EA code has several problems which have to be fixed. Reviewed-by: jrose, sgoldman ! src/share/vm/includeDB_compiler2 ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/escape.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/phaseX.cpp ! src/share/vm/runtime/arguments.cpp Changeset: 6dbf1a175d6b Author: kvn Date: 2008-03-14 16:40 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6dbf1a175d6b 6672848: (Escape Analysis) improve lock elimination with EA Summary: Remove lock/unlock MemBar nodes and specify locks in debug info for deoptimization. Reviewed-by: never ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/locknode.cpp ! src/share/vm/opto/locknode.hpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/macro.hpp ! src/share/vm/opto/output.cpp Changeset: 16e1cb7cde24 Author: never Date: 2008-03-18 11:17 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/16e1cb7cde24 6666343: Compile::has_loops not always set correctly Summary: Compile::has_loops() should be set from inlined methods Reviewed-by: kvn, rasbold ! src/share/vm/opto/doCall.cpp Changeset: daf38130e60d Author: never Date: 2008-03-18 23:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/daf38130e60d 6676841: ClearArrayNode::Identity is incorrect for 64-bit Summary: ClearArrayNode::Identity should use TypeX instead of TypeInt Reviewed-by: jrose, kvn, sgoldman ! src/share/vm/opto/memnode.cpp Changeset: 8bb88f9877e5 Author: never Date: 2008-03-18 23:54 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8bb88f9877e5 6659207: access violation in CompilerThread0 Summary: split_thru_phi produces top on a non-dead path Reviewed-by: kvn, rasbold, sgoldman ! src/share/vm/opto/loopopts.cpp + test/compiler/6659207/Test.java Changeset: b683f557224b Author: never Date: 2008-03-19 15:14 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b683f557224b 6661247: Internal bug in 32-bit HotSpot optimizer while bit manipulations Summary: copy elimination of a constant value results in incorrect execution Reviewed-by: kvn, sgoldman, rasbold ! src/share/vm/opto/chaitin.hpp ! src/share/vm/opto/postaloc.cpp + test/compiler/6661247/Test.java Changeset: 3d62cb85208d Author: kvn Date: 2008-03-19 15:33 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3d62cb85208d 6662967: Optimize I2D conversion on new x86 Summary: Use CVTDQ2PS and CVTDQ2PD for integer values conversions to float and double values on new AMD cpu. Reviewed-by: sgoldman, never ! src/cpu/x86/vm/assembler_x86_32.cpp ! src/cpu/x86/vm/assembler_x86_32.hpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/vm_version_x86_32.cpp ! src/cpu/x86/vm/vm_version_x86_64.cpp ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/runtime/globals.hpp Changeset: f705f25597eb Author: never Date: 2008-03-20 10:43 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f705f25597eb 6663621: JVM crashes while trying to execute api/java_security/Signature/SignatureTests.html#initSign tests. Summary: alignment expression with secondary induction variables is sometimes wrong Reviewed-by: kvn, rasbold ! src/share/vm/opto/superword.cpp + test/compiler/6663621/IVTest.java Changeset: a8880a78d355 Author: kvn Date: 2008-03-20 13:51 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a8880a78d355 6259129: (Escape Analysis) scalar replacement for not escaping objects Summary: Use scalar replacement with EA to remove allocations for objects which do not escape the compiled method. Reviewed-by: rasbold, never, jrose ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/macro.hpp ! src/share/vm/opto/phaseX.hpp Changeset: 2a9af0b9cb1c Author: kvn Date: 2008-03-20 15:11 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2a9af0b9cb1c 6674600: (Escape Analysis) Optimize memory graph for instance's fields Summary: EA gives opportunite to do more aggressive memory optimizations. Reviewed-by: never, jrose ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/cfgnode.hpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp Changeset: f68325221ce1 Author: kvn Date: 2008-03-21 00:49 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f68325221ce1 6678377: Update build number for HS12 Summary: b01 -> b02 Reviewed-by: kvn ! make/hotspot_version Changeset: d6fe2e4959d6 Author: rasbold Date: 2008-03-21 08:32 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d6fe2e4959d6 Merge ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: 36cd3cc4d27b Author: kvn Date: 2008-03-27 09:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/36cd3cc4d27b 6679854: assert in escape.cpp:397 Summary: The assert misses the case CastX2P 'base' for an unsafe field reference Reviewed-by: never, jrose ! src/share/vm/opto/escape.cpp Changeset: e1e86702e43e Author: kvn Date: 2008-03-28 11:52 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e1e86702e43e 6680665: bytecode Escape Analyzer produces incorrect escape information for methods without oop arguments Summary: bcEscapeAnalyzer does not analyze methods with no oop arguments. Reviewed-by: rasbold ! src/share/vm/ci/bcEscapeAnalyzer.cpp ! src/share/vm/ci/bcEscapeAnalyzer.hpp ! src/share/vm/oops/methodDataOop.hpp Changeset: 82db0859acbe Author: jcoomes Date: 2008-03-28 23:35 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/82db0859acbe 6642862: Code cache allocation fails with large pages after 6588638 Reviewed-by: apetrusenko ! src/os/linux/vm/os_linux.cpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/windows/vm/os_windows.cpp ! src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/memory/heap.cpp ! src/share/vm/runtime/os.hpp Changeset: 092ea87cc974 Author: jcoomes Date: 2008-03-28 23:35 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/092ea87cc974 6679422: networkStream::connect() in ostream.cpp is not 64-bit clean Reviewed-by: jmasa, xlu ! src/share/vm/utilities/ostream.cpp Changeset: dee7a3f3dc9d Author: never Date: 2008-03-31 16:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/dee7a3f3dc9d 6636352: Unit tests for supplementary character support fail with -XX:+AggressiveOpts Summary: incorrect encoding Reviewed-by: kvn, rasbold, sgoldman, jrose ! src/cpu/sparc/vm/sparc.ad Changeset: de93acbb64fc Author: kvn Date: 2008-03-31 18:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/de93acbb64fc 6682236: C2 hits ideal nodes limit during IGVN optimization with EA Summary: missing check in LoadNode::Ideal() causes infinite generation of a value Phi. Reviewed-by: jrose, never ! src/share/vm/opto/memnode.cpp Changeset: d3cd40645d0d Author: kvn Date: 2008-04-01 16:14 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d3cd40645d0d 6681646: Relocking of a scalar replaced object during deoptimization is broken Summary: Relocking of a thread-local object during deoptimization is broken Reviewed-by: kbr, jrose, never ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/vframe.cpp ! src/share/vm/runtime/vframe.hpp ! src/share/vm/runtime/vframe_hp.cpp Changeset: 6e085831cad7 Author: sbohne Date: 2008-04-10 15:49 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6e085831cad7 6692235: Fix for 6666698 broke -XX:BiasedLockingStartupDelay=0 Summary: Stack allocated VM_EnableBiasedLocking op must be marked as such Reviewed-by: xlu, acorn, never, dholmes ! src/share/vm/runtime/biasedLocking.cpp Changeset: f3b3fe64f59f Author: kvn Date: 2008-04-15 10:49 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f3b3fe64f59f 6692301: Side effect in NumberFormat tests with -server -Xcomp Summary: Optimization in CmpPNode::sub() removed the valid compare instruction because of false positive answer from detect_dominating_control(). Reviewed-by: jrose, sgoldman ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp Changeset: 6cc3576e5142 Author: jcoomes Date: 2008-04-16 15:34 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6cc3576e5142 6689788: Bump HSX12 build version number Summary: Update HSX12 build number to 03 Reviewed-by: kvn ! make/hotspot_version Changeset: ad0b851458ff Author: trims Date: 2008-04-22 15:36 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ad0b851458ff Merge - src/share/vm/memory/allocationStats.cpp - src/share/vm/memory/allocationStats.hpp Changeset: 24706b95d959 Author: xdono Date: 2008-04-24 12:12 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/24706b95d959 Added tag jdk7-b26 for changeset ad0b851458ff ! .hgtags Changeset: b97de546208e Author: xlu Date: 2008-04-03 12:21 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b97de546208e 6671882: memory access after free in solaris/vm/os_solaris.cpp Summary: Corrected the wrong memory access problem and made some minor clean ups Reviewed-by: dholmes, jcoomes ! src/os/solaris/vm/os_solaris.cpp Changeset: cf4e16e9ca60 Author: kamg Date: 2008-04-04 10:48 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/cf4e16e9ca60 Merge Changeset: a294fd0c4b38 Author: kamg Date: 2008-04-09 14:22 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a294fd0c4b38 6583644: Move all managed/SCCS files out of 'build' into 'make' directory Summary: Moved makefiles out of build and build/closed into make/ Reviewed-by: kvn, ohair ! .hgignore - build/hotspot_distro - build/linux/Makefile - build/linux/Queens.class - build/linux/README - build/linux/adlc_updater - build/linux/build.sh - build/linux/makefiles/adjust-mflags.sh - build/linux/makefiles/adlc.make - build/linux/makefiles/amd64.make - build/linux/makefiles/buildtree.make - build/linux/makefiles/compiler1.make - build/linux/makefiles/compiler2.make - build/linux/makefiles/core.make - build/linux/makefiles/cscope.make - build/linux/makefiles/debug.make - build/linux/makefiles/defs.make - build/linux/makefiles/dtrace.make - build/linux/makefiles/fastdebug.make - build/linux/makefiles/gcc.make - build/linux/makefiles/hp.make - build/linux/makefiles/hp1.make - build/linux/makefiles/i486.make - build/linux/makefiles/jsig.make - build/linux/makefiles/jvmg.make - build/linux/makefiles/jvmti.make - build/linux/makefiles/launcher.make - build/linux/makefiles/makedeps.make - build/linux/makefiles/mapfile-vers-debug - build/linux/makefiles/mapfile-vers-jsig - build/linux/makefiles/mapfile-vers-product - build/linux/makefiles/optimized.make - build/linux/makefiles/product.make - build/linux/makefiles/profiled.make - build/linux/makefiles/rules.make - build/linux/makefiles/sa.make - build/linux/makefiles/saproc.make - build/linux/makefiles/sparcWorks.make - build/linux/makefiles/tiered.make - build/linux/makefiles/top.make - build/linux/makefiles/vm.make - build/linux/platform_amd64 - build/linux/platform_amd64.suncc - build/linux/platform_i486 - build/linux/platform_i486.suncc - build/linux/platform_sparc - build/sa.files - build/solaris/Makefile - build/solaris/Queens.class - build/solaris/adlc_updater - build/solaris/build.sh - build/solaris/makefiles/adjust-mflags.sh - build/solaris/makefiles/adlc.make - build/solaris/makefiles/amd64.make - build/solaris/makefiles/buildtree.make - build/solaris/makefiles/compiler1.make - build/solaris/makefiles/compiler2.make - build/solaris/makefiles/core.make - build/solaris/makefiles/cscope.make - build/solaris/makefiles/debug.make - build/solaris/makefiles/defs.make - build/solaris/makefiles/dtrace.make - build/solaris/makefiles/fastdebug.make - build/solaris/makefiles/gcc.make - build/solaris/makefiles/hp.make - build/solaris/makefiles/hp1.make - build/solaris/makefiles/i486.make - build/solaris/makefiles/jsig.make - build/solaris/makefiles/jvmg.make - build/solaris/makefiles/jvmti.make - build/solaris/makefiles/kernel.make - build/solaris/makefiles/launcher.make - build/solaris/makefiles/makedeps.make - build/solaris/makefiles/mapfile-vers - build/solaris/makefiles/mapfile-vers-COMPILER1 - build/solaris/makefiles/mapfile-vers-COMPILER2 - build/solaris/makefiles/mapfile-vers-CORE - build/solaris/makefiles/mapfile-vers-TIERED - build/solaris/makefiles/mapfile-vers-debug - build/solaris/makefiles/mapfile-vers-jsig - build/solaris/makefiles/mapfile-vers-jvm_db - build/solaris/makefiles/mapfile-vers-jvm_dtrace - build/solaris/makefiles/mapfile-vers-nonproduct - build/solaris/makefiles/optimized.make - build/solaris/makefiles/product.make - build/solaris/makefiles/profiled.make - build/solaris/makefiles/reorder_COMPILER1_i486 - build/solaris/makefiles/reorder_COMPILER1_sparc - build/solaris/makefiles/reorder_COMPILER1_sparcv9 - build/solaris/makefiles/reorder_COMPILER2_amd64 - build/solaris/makefiles/reorder_COMPILER2_i486 - build/solaris/makefiles/reorder_COMPILER2_sparc - build/solaris/makefiles/reorder_COMPILER2_sparcv9 - build/solaris/makefiles/reorder_CORE_amd64 - build/solaris/makefiles/reorder_CORE_i486 - build/solaris/makefiles/reorder_CORE_sparc - build/solaris/makefiles/reorder_CORE_sparcv9 - build/solaris/makefiles/reorder_TIERED_amd64 - build/solaris/makefiles/reorder_TIERED_i486 - build/solaris/makefiles/reorder_TIERED_sparc - build/solaris/makefiles/rules.make - build/solaris/makefiles/sa.make - build/solaris/makefiles/saproc.make - build/solaris/makefiles/sparc.make - build/solaris/makefiles/sparcWorks.make - build/solaris/makefiles/sparcv9.make - build/solaris/makefiles/tiered.make - build/solaris/makefiles/top.make - build/solaris/makefiles/vm.make - build/solaris/platform_amd64 - build/solaris/platform_amd64.gcc - build/solaris/platform_i486 - build/solaris/platform_i486.gcc - build/solaris/platform_sparc - build/solaris/platform_sparc.gcc - build/solaris/platform_sparcv9 - build/solaris/platform_sparcv9.gcc - build/solaris/reorder.sh - build/test/Queens.java - build/windows/README - build/windows/build.bat - build/windows/build.make - build/windows/build_vm_def.sh - build/windows/create.bat - build/windows/cross_build.bat - build/windows/get_msc_ver.sh - build/windows/jvmexp.lcf - build/windows/jvmexp_g.lcf - build/windows/makefiles/adlc.make - build/windows/makefiles/compile.make - build/windows/makefiles/debug.make - build/windows/makefiles/defs.make - build/windows/makefiles/fastdebug.make - build/windows/makefiles/generated.make - build/windows/makefiles/jvmti.make - build/windows/makefiles/makedeps.make - build/windows/makefiles/product.make - build/windows/makefiles/rules.make - build/windows/makefiles/sa.make - build/windows/makefiles/sanity.make - build/windows/makefiles/shared.make - build/windows/makefiles/top.make - build/windows/makefiles/vm.make - build/windows/platform_amd64 - build/windows/platform_i486 - build/windows/projectfiles/common/Makefile - build/windows/projectfiles/compiler1/Makefile - build/windows/projectfiles/compiler1/vm.def - build/windows/projectfiles/compiler1/vm.dsw - build/windows/projectfiles/compiler2/ADLCompiler.dsp - build/windows/projectfiles/compiler2/ADLCompiler.dsw - build/windows/projectfiles/compiler2/Makefile - build/windows/projectfiles/compiler2/vm.def - build/windows/projectfiles/compiler2/vm.dsw - build/windows/projectfiles/core/Makefile - build/windows/projectfiles/core/vm.def - build/windows/projectfiles/core/vm.dsw - build/windows/projectfiles/kernel/Makefile - build/windows/projectfiles/kernel/vm.def - build/windows/projectfiles/kernel/vm.dsw - build/windows/projectfiles/tiered/ADLCompiler.dsp - build/windows/projectfiles/tiered/ADLCompiler.dsw - build/windows/projectfiles/tiered/Makefile - build/windows/projectfiles/tiered/vm.def - build/windows/projectfiles/tiered/vm.dsw ! make/defs.make + make/hotspot_distro ! make/jprt.properties + make/linux/Makefile + make/linux/Queens.class + make/linux/README + make/linux/adlc_updater + make/linux/build.sh + make/linux/makefiles/adjust-mflags.sh + make/linux/makefiles/adlc.make + make/linux/makefiles/amd64.make + make/linux/makefiles/buildtree.make + make/linux/makefiles/compiler1.make + make/linux/makefiles/compiler2.make + make/linux/makefiles/core.make + make/linux/makefiles/cscope.make + make/linux/makefiles/debug.make + make/linux/makefiles/defs.make + make/linux/makefiles/dtrace.make + make/linux/makefiles/fastdebug.make + make/linux/makefiles/gcc.make + make/linux/makefiles/hp.make + make/linux/makefiles/hp1.make + make/linux/makefiles/i486.make + make/linux/makefiles/ia64.make + make/linux/makefiles/jsig.make + make/linux/makefiles/jvmg.make + make/linux/makefiles/jvmti.make + make/linux/makefiles/launcher.make + make/linux/makefiles/makedeps.make + make/linux/makefiles/mapfile-vers-debug + make/linux/makefiles/mapfile-vers-jsig + make/linux/makefiles/mapfile-vers-product + make/linux/makefiles/optimized.make + make/linux/makefiles/product.make + make/linux/makefiles/profiled.make + make/linux/makefiles/rules.make + make/linux/makefiles/sa.make + make/linux/makefiles/saproc.make + make/linux/makefiles/sparc.make + make/linux/makefiles/sparcWorks.make + make/linux/makefiles/sparcv9.make + make/linux/makefiles/tiered.make + make/linux/makefiles/top.make + make/linux/makefiles/vm.make + make/linux/platform_amd64 + make/linux/platform_amd64.suncc + make/linux/platform_i486 + make/linux/platform_i486.suncc + make/linux/platform_ia64 + make/linux/platform_sparc + make/openjdk_distro + make/sa.files + make/solaris/Makefile + make/solaris/Queens.class + make/solaris/adlc_updater + make/solaris/build.sh + make/solaris/makefiles/adjust-mflags.sh + make/solaris/makefiles/adlc.make + make/solaris/makefiles/amd64.make + make/solaris/makefiles/buildtree.make + make/solaris/makefiles/compiler1.make + make/solaris/makefiles/compiler2.make + make/solaris/makefiles/core.make + make/solaris/makefiles/cscope.make + make/solaris/makefiles/debug.make + make/solaris/makefiles/defs.make + make/solaris/makefiles/dtrace.make + make/solaris/makefiles/fastdebug.make + make/solaris/makefiles/gcc.make + make/solaris/makefiles/hp.make + make/solaris/makefiles/hp1.make + make/solaris/makefiles/i486.make + make/solaris/makefiles/jsig.make + make/solaris/makefiles/jvmg.make + make/solaris/makefiles/jvmti.make + make/solaris/makefiles/kernel.make + make/solaris/makefiles/launcher.make + make/solaris/makefiles/makedeps.make + make/solaris/makefiles/mapfile-vers + make/solaris/makefiles/mapfile-vers-COMPILER1 + make/solaris/makefiles/mapfile-vers-COMPILER2 + make/solaris/makefiles/mapfile-vers-CORE + make/solaris/makefiles/mapfile-vers-TIERED + make/solaris/makefiles/mapfile-vers-debug + make/solaris/makefiles/mapfile-vers-jsig + make/solaris/makefiles/mapfile-vers-jvm_db + make/solaris/makefiles/mapfile-vers-jvm_dtrace + make/solaris/makefiles/mapfile-vers-nonproduct + make/solaris/makefiles/optimized.make + make/solaris/makefiles/product.make + make/solaris/makefiles/profiled.make + make/solaris/makefiles/reorder_COMPILER1_i486 + make/solaris/makefiles/reorder_COMPILER1_sparc + make/solaris/makefiles/reorder_COMPILER1_sparcv9 + make/solaris/makefiles/reorder_COMPILER2_amd64 + make/solaris/makefiles/reorder_COMPILER2_i486 + make/solaris/makefiles/reorder_COMPILER2_sparc + make/solaris/makefiles/reorder_COMPILER2_sparcv9 + make/solaris/makefiles/reorder_CORE_amd64 + make/solaris/makefiles/reorder_CORE_i486 + make/solaris/makefiles/reorder_CORE_sparc + make/solaris/makefiles/reorder_CORE_sparcv9 + make/solaris/makefiles/reorder_TIERED_amd64 + make/solaris/makefiles/reorder_TIERED_i486 + make/solaris/makefiles/reorder_TIERED_sparc + make/solaris/makefiles/rules.make + make/solaris/makefiles/sa.make + make/solaris/makefiles/saproc.make + make/solaris/makefiles/sparc.make + make/solaris/makefiles/sparcWorks.make + make/solaris/makefiles/sparcv9.make + make/solaris/makefiles/tiered.make + make/solaris/makefiles/top.make + make/solaris/makefiles/vm.make + make/solaris/platform_amd64 + make/solaris/platform_amd64.gcc + make/solaris/platform_i486 + make/solaris/platform_i486.gcc + make/solaris/platform_sparc + make/solaris/platform_sparc.gcc + make/solaris/platform_sparcv9 + make/solaris/platform_sparcv9.gcc + make/solaris/reorder.sh + make/test/Queens.java + make/windows/README + make/windows/build.bat + make/windows/build.make + make/windows/build_vm_def.sh + make/windows/create.bat + make/windows/cross_build.bat + make/windows/get_msc_ver.sh + make/windows/jvmexp.lcf + make/windows/jvmexp_g.lcf + make/windows/makefiles/adlc.make + make/windows/makefiles/compile.make + make/windows/makefiles/debug.make + make/windows/makefiles/defs.make + make/windows/makefiles/fastdebug.make + make/windows/makefiles/generated.make + make/windows/makefiles/jvmti.make + make/windows/makefiles/makedeps.make + make/windows/makefiles/product.make + make/windows/makefiles/rules.make + make/windows/makefiles/sa.make + make/windows/makefiles/sanity.make + make/windows/makefiles/shared.make + make/windows/makefiles/top.make + make/windows/makefiles/vm.make + make/windows/platform_amd64 + make/windows/platform_i486 + make/windows/platform_ia64 + make/windows/projectfiles/common/Makefile + make/windows/projectfiles/compiler1/Makefile + make/windows/projectfiles/compiler1/vm.def + make/windows/projectfiles/compiler1/vm.dsw + make/windows/projectfiles/compiler2/ADLCompiler.dsp + make/windows/projectfiles/compiler2/ADLCompiler.dsw + make/windows/projectfiles/compiler2/Makefile + make/windows/projectfiles/compiler2/vm.def + make/windows/projectfiles/compiler2/vm.dsw + make/windows/projectfiles/core/Makefile + make/windows/projectfiles/core/vm.def + make/windows/projectfiles/core/vm.dsw + make/windows/projectfiles/kernel/Makefile + make/windows/projectfiles/kernel/vm.def + make/windows/projectfiles/kernel/vm.dsw + make/windows/projectfiles/tiered/ADLCompiler.dsp + make/windows/projectfiles/tiered/ADLCompiler.dsw + make/windows/projectfiles/tiered/Makefile + make/windows/projectfiles/tiered/vm.def + make/windows/projectfiles/tiered/vm.dsw Changeset: ebec5b9731e2 Author: kamg Date: 2008-04-10 12:21 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ebec5b9731e2 6615981: JVM class file parser incorrectly rejects class files with version < 45.2 Summary: A check on Code length did not take into account the old sizes of the max_stack, max_locals, and code_length. Reviewed-by: phh, sbohne ! src/share/vm/classfile/classFileParser.cpp Changeset: c6ff24ceec1c Author: sbohne Date: 2008-04-10 15:49 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c6ff24ceec1c 6686407: Fix for 6666698 broke -XX:BiasedLockingStartupDelay=0 Summary: Stack allocated VM_EnableBiasedLocking op must be marked as such Reviewed-by: xlu, acorn, never, dholmes ! src/share/vm/runtime/biasedLocking.cpp Changeset: 0834225a7916 Author: ysr Date: 2008-03-16 21:57 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/0834225a7916 6634032: CMS: Need CMSInitiatingPermOccupancyFraction for perm, divorcing from CMSInitiatingOccupancyFraction Summary: The option CMSInitiatingPermOccupancyFraction now controls perm triggering threshold. Even though the actual value of the threshold has not yet been changed, so there is no change in policy, we now have the infrastructure in place for dynamically deciding when to collect the perm gen, an issue that will be addressed in the near future. Reviewed-by: jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp ! src/share/vm/runtime/globals.hpp Changeset: d05ebaf00ed0 Author: tonyp Date: 2008-03-27 17:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d05ebaf00ed0 Merge ! src/share/vm/runtime/globals.hpp Changeset: 2acabb781f53 Author: apetrusenko Date: 2008-04-07 09:32 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2acabb781f53 Merge Changeset: f38a25e2458a Author: kamg Date: 2008-04-09 10:38 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f38a25e2458a Merge Changeset: deb97b8ef02b Author: never Date: 2008-03-26 12:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/deb97b8ef02b 6679708: No_Safepoint_Verifier and BacktraceBuilder have uninitialized fields Summary: fix or remove uninitialized fields Reviewed-by: kvn, rasbold ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/memory/gcLocker.hpp Changeset: 8a4ef4e001d3 Author: never Date: 2008-03-28 09:00 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8a4ef4e001d3 6680594: Load + Load isn't canonicalized leading to missed GVN opportunities Reviewed-by: kvn, jrose ! src/share/vm/opto/addnode.cpp Changeset: c7c777385a15 Author: jrose Date: 2008-04-02 12:09 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c7c777385a15 6667042: PrintAssembly option does not work without special plugin Summary: remove old private plugin interface, simplify, rework old plugin to use unchanged Gnu sources Reviewed-by: kvn, rasbold ! .hgignore ! build/linux/makefiles/vm.make ! build/linux/platform_amd64 ! build/linux/platform_i486 ! build/linux/platform_sparc ! build/solaris/makefiles/vm.make ! build/solaris/platform_amd64 ! build/solaris/platform_amd64.gcc ! build/solaris/platform_i486 ! build/solaris/platform_i486.gcc ! build/solaris/platform_sparc ! build/solaris/platform_sparc.gcc ! build/solaris/platform_sparcv9 ! build/solaris/platform_sparcv9.gcc ! build/windows/makefiles/vm.make ! build/windows/platform_amd64 ! build/windows/platform_i486 - src/cpu/sparc/vm/disassembler_sparc.cpp ! src/cpu/sparc/vm/disassembler_sparc.hpp - src/cpu/x86/vm/disassembler_x86.cpp ! src/cpu/x86/vm/disassembler_x86.hpp + src/share/tools/hsdis/Makefile + src/share/tools/hsdis/README + src/share/tools/hsdis/hsdis-demo.c + src/share/tools/hsdis/hsdis.c + src/share/tools/hsdis/hsdis.h ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/code/vmreg.cpp ! src/share/vm/code/vmreg.hpp + src/share/vm/compiler/disassembler.cpp + src/share/vm/compiler/disassembler.hpp - src/share/vm/compiler/disassemblerEnv.hpp ! src/share/vm/compiler/oopMap.cpp ! src/share/vm/compiler/oopMap.hpp ! src/share/vm/includeDB_compiler1 ! src/share/vm/includeDB_core ! src/share/vm/opto/compile.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/stubCodeGenerator.cpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp Changeset: a6cb86dd209b Author: kvn Date: 2008-04-02 16:59 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a6cb86dd209b 6681577: PIT: some VM tests fails with -XX:+AggressiveOpts in 6u5p b01 Summary: C2 spends > 60% in escape analysis code during test nsk/regression/b4675027. Reviewed-by: never ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/escape.hpp Changeset: f96100ac3d12 Author: rasbold Date: 2008-04-03 06:41 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f96100ac3d12 Merge - src/cpu/sparc/vm/disassembler_sparc.cpp - src/cpu/x86/vm/disassembler_x86.cpp - src/share/vm/compiler/disassemblerEnv.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/utilities/ostream.cpp Changeset: 38a50dd839cf Author: never Date: 2008-04-03 10:20 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/38a50dd839cf 6619271: The -Xprintflags causes the VM to segv Summary: add null checks Reviewed-by: jrose, kvn ! src/share/vm/runtime/globals.cpp Changeset: 541929da62d2 Author: rasbold Date: 2008-04-03 13:33 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/541929da62d2 6624474: Server compiler generates unexpected LinkageError Summary: Fix load_signature_classes to tolerate LinkageErrors Reviewed-by: kvn, never ! src/share/vm/oops/methodOop.cpp Changeset: a7d0f95410bd Author: never Date: 2008-04-03 21:26 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a7d0f95410bd 6646020: assert(in_bb(n),"must be in block") in -Xcomp mode Reviewed-by: kvn, rasbold ! src/share/vm/opto/superword.cpp + test/compiler/6646020/Tester.java Changeset: c9314fa4f757 Author: rasbold Date: 2008-04-07 15:15 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c9314fa4f757 6663908: NegativeArraySizeException is not thrown Summary: Don't optimize zero length array allocations at compile time. Reviewed-by: kvn, never ! src/share/vm/opto/parse3.cpp Changeset: 93b6525e3b82 Author: sgoldman Date: 2008-04-08 12:23 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/93b6525e3b82 6603919: Stackwalking crash on x86 -server with Sun Studio's collect -j on Summary: Rewrite frame::safe_for_sender and friends to be safe for collector/analyzer Reviewed-by: dcubed, kvn ! src/cpu/sparc/vm/frame_sparc.cpp ! src/cpu/x86/vm/frame_x86.cpp ! src/cpu/x86/vm/frame_x86.inline.hpp ! src/cpu/x86/vm/templateTable_x86_32.cpp ! src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp ! src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp ! src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp ! src/share/vm/code/codeCache.hpp ! src/share/vm/prims/forte.cpp ! src/share/vm/runtime/fprofiler.cpp ! src/share/vm/runtime/fprofiler.hpp ! src/share/vm/runtime/frame.hpp ! src/share/vm/runtime/vframe.hpp Changeset: a761c2d3b76a Author: rasbold Date: 2008-04-09 09:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a761c2d3b76a 6684385: Loop unswitching crashes without LoopNode Summary: Without LoopNode, exit early from loop unswitching and partial peeling Reviewed-by: kvn, never, sgoldman ! src/share/vm/opto/loopUnswitch.cpp ! src/share/vm/opto/loopopts.cpp Changeset: 9f4457a14b58 Author: rasbold Date: 2008-04-09 15:10 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9f4457a14b58 Merge - src/cpu/sparc/vm/disassembler_sparc.cpp - src/cpu/x86/vm/disassembler_x86.cpp - src/share/vm/compiler/disassemblerEnv.hpp ! src/share/vm/runtime/globals.hpp Changeset: a49a647afe9a Author: kamg Date: 2008-04-11 09:56 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a49a647afe9a Merge ! .hgignore ! make/linux/makefiles/vm.make ! make/linux/platform_amd64 ! make/linux/platform_i486 ! make/linux/platform_sparc ! make/solaris/makefiles/vm.make ! make/solaris/platform_amd64 ! make/solaris/platform_amd64.gcc ! make/solaris/platform_i486 ! make/solaris/platform_i486.gcc ! make/solaris/platform_sparc ! make/solaris/platform_sparc.gcc ! make/solaris/platform_sparcv9 ! make/solaris/platform_sparcv9.gcc ! make/windows/makefiles/vm.make ! make/windows/platform_amd64 ! make/windows/platform_i486 - src/cpu/sparc/vm/disassembler_sparc.cpp - src/cpu/x86/vm/disassembler_x86.cpp - src/share/vm/compiler/disassemblerEnv.hpp Changeset: 7747916a0945 Author: ysr Date: 2008-04-08 12:10 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7747916a0945 6685160: fix cscope build with hg Summary: Use hg's fstatus instead of teamware's nametable to trigger cscope database rebuild Reviewed-by: jcoomes, kamg ! build/linux/makefiles/cscope.make ! build/solaris/makefiles/cscope.make Changeset: 7c5dac90daef Author: apetrusenko Date: 2008-04-14 08:29 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7c5dac90daef Merge Changeset: ba764ed4b6f2 Author: coleenp Date: 2008-04-13 17:43 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ba764ed4b6f2 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold ! agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java ! agent/src/share/classes/sun/jvm/hotspot/HSDB.java ! agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/Address.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescription.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAMD64.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIntelX86.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC32Bit.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC64Bit.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Address.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Debugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32DebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Array.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java ! agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java + agent/src/share/classes/sun/jvm/hotspot/oops/NarrowOopField.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjArray.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogram.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/AddressVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java ! agent/src/share/classes/sun/jvm/hotspot/types/Field.java + agent/src/share/classes/sun/jvm/hotspot/types/NarrowOopField.java ! agent/src/share/classes/sun/jvm/hotspot/types/Type.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicField.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicFieldWrapper.java + agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicNarrowOopField.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicOopField.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicType.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java ! agent/src/share/classes/sun/jvm/hotspot/ui/FindInHeapPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java ! make/Makefile ! make/solaris/makefiles/sparcWorks.make ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp ! src/cpu/sparc/vm/copy_sparc.hpp ! src/cpu/sparc/vm/interp_masm_sparc.cpp ! src/cpu/sparc/vm/register_definitions_sparc.cpp ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/sparc/vm/templateInterpreter_sparc.cpp ! src/cpu/sparc/vm/templateTable_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vtableStubs_sparc.cpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/c1_MacroAssembler_x86.cpp ! src/cpu/x86/vm/interp_masm_x86_64.cpp ! src/cpu/x86/vm/interpreter_x86_64.cpp ! src/cpu/x86/vm/register_definitions_x86.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86_64.cpp ! src/cpu/x86/vm/vtableStubs_x86_64.cpp ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad ! src/os/solaris/dtrace/generateJvmOffsets.cpp ! src/os/solaris/dtrace/jhelper.d ! src/os/solaris/dtrace/libjvm_db.c ! src/os/windows/vm/os_windows.cpp ! src/os_cpu/solaris_sparc/vm/solaris_sparc.s ! src/share/vm/adlc/archDesc.cpp ! src/share/vm/adlc/forms.cpp ! src/share/vm/adlc/forms.hpp ! src/share/vm/adlc/formssel.cpp ! src/share/vm/adlc/output_c.cpp ! src/share/vm/adlc/output_h.cpp ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/ci/ciInstanceKlass.cpp ! src/share/vm/ci/ciInstanceKlass.hpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/compiler/oopMap.cpp ! src/share/vm/compiler/oopMap.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/includeDB_gc_parNew ! src/share/vm/gc_implementation/includeDB_gc_parallelScavenge ! src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp ! src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp ! src/share/vm/gc_implementation/parNew/parOopClosures.hpp ! src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp ! src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp ! src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ! src/share/vm/gc_implementation/shared/markSweep.cpp ! src/share/vm/gc_implementation/shared/markSweep.hpp ! src/share/vm/gc_implementation/shared/markSweep.inline.hpp ! src/share/vm/gc_interface/collectedHeap.cpp ! src/share/vm/gc_interface/collectedHeap.hpp ! src/share/vm/gc_interface/collectedHeap.inline.hpp ! src/share/vm/includeDB_core ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/memory/barrierSet.hpp ! src/share/vm/memory/barrierSet.inline.hpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/cardTableModRefBS.hpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/memory/cardTableRS.hpp ! src/share/vm/memory/compactingPermGenGen.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/defNewGeneration.hpp ! src/share/vm/memory/defNewGeneration.inline.hpp ! src/share/vm/memory/dump.cpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/genOopClosures.hpp ! src/share/vm/memory/genOopClosures.inline.hpp ! src/share/vm/memory/genRemSet.hpp ! src/share/vm/memory/genRemSet.inline.hpp ! src/share/vm/memory/generation.cpp ! src/share/vm/memory/generation.hpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/memory/modRefBarrierSet.hpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/memory/restore.cpp ! src/share/vm/memory/serialize.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp ! src/share/vm/memory/universe.cpp ! src/share/vm/memory/universe.hpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/constantPoolKlass.cpp ! src/share/vm/oops/constantPoolKlass.hpp ! src/share/vm/oops/constantPoolOop.hpp ! src/share/vm/oops/cpCacheKlass.cpp ! src/share/vm/oops/cpCacheKlass.hpp ! src/share/vm/oops/cpCacheOop.cpp ! src/share/vm/oops/cpCacheOop.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/instanceKlassKlass.cpp ! src/share/vm/oops/instanceOop.hpp ! src/share/vm/oops/instanceRefKlass.cpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/markOop.hpp ! src/share/vm/oops/methodDataKlass.cpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/objArrayOop.cpp ! src/share/vm/oops/objArrayOop.hpp ! src/share/vm/oops/oop.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/oop.pcgc.inline.hpp ! src/share/vm/oops/oopsHierarchy.hpp ! src/share/vm/opto/buildOopMap.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/chaitin.cpp ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/idealKit.cpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/machnode.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/macro.hpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/opcodes.cpp ! src/share/vm/opto/opcodes.hpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/opto/parse3.cpp ! src/share/vm/opto/phaseX.cpp ! src/share/vm/opto/phaseX.hpp ! src/share/vm/opto/subnode.cpp ! src/share/vm/opto/subnode.hpp ! src/share/vm/opto/superword.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jvmtiTagMap.cpp ! src/share/vm/prims/unsafe.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/atomic.cpp ! src/share/vm/runtime/atomic.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/frame.hpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/globals_extension.hpp ! src/share/vm/runtime/hpi.cpp ! src/share/vm/runtime/init.cpp ! src/share/vm/runtime/jniHandles.cpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/services/heapDumper.cpp ! src/share/vm/utilities/copy.hpp ! src/share/vm/utilities/debug.cpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp ! src/share/vm/utilities/taskqueue.hpp ! src/share/vm/utilities/vmError.cpp Changeset: 34935c25a52d Author: kamg Date: 2008-04-15 18:11 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/34935c25a52d Merge ! make/linux/makefiles/cscope.make ! make/solaris/makefiles/cscope.make Changeset: e7a91a357527 Author: kamg Date: 2008-04-16 17:36 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e7a91a357527 6622385: Accessing protected static methods Summary: Protected contraints should only be applied if member is not static Reviewed-by: acorn, coleenp ! src/share/vm/runtime/reflection.cpp Changeset: 018d5b58dd4f Author: kamg Date: 2008-04-17 22:18 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/018d5b58dd4f 6537506: Provide a mechanism for specifying Java-level USDT-like dtrace probes Summary: Initial checkin of JSDT code Reviewed-by: acorn, sbohne ! make/linux/makefiles/mapfile-vers-debug ! make/linux/makefiles/mapfile-vers-product ! make/solaris/makefiles/dtrace.make ! make/solaris/makefiles/mapfile-vers ! src/cpu/sparc/vm/nativeInst_sparc.cpp ! src/cpu/sparc/vm/nativeInst_sparc.hpp ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/x86/vm/nativeInst_x86.cpp ! src/cpu/x86/vm/nativeInst_x86.hpp ! src/cpu/x86/vm/sharedRuntime_x86_32.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp + src/os/linux/vm/dtraceJSDT_linux.cpp + src/os/solaris/vm/dtraceJSDT_solaris.cpp + src/os/windows/vm/dtraceJSDT_windows.cpp ! src/share/vm/asm/codeBuffer.hpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/includeDB_core ! src/share/vm/oops/methodOop.cpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h + src/share/vm/runtime/dtraceJSDT.cpp + src/share/vm/runtime/dtraceJSDT.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/sharedRuntime.hpp Changeset: deadee49286e Author: sgoldman Date: 2008-04-11 06:18 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/deadee49286e 6644928: Internal Error (src/share/vm/code/relocInfo.hpp:1089) Summary: Cardtable base can be zero, ExternalAddress can't take a NULL. ! src/cpu/x86/vm/assembler_x86_32.cpp ! src/cpu/x86/vm/assembler_x86_64.cpp Changeset: fb75a7673531 Author: rasbold Date: 2008-04-16 14:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/fb75a7673531 Merge ! src/cpu/x86/vm/assembler_x86_64.cpp Changeset: d1a5218d7eaf Author: kvn Date: 2008-04-16 19:19 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d1a5218d7eaf 6686791: Side effect in NumberFormat tests with -server -Xcomp Summary: Optimization in CmpPNode::sub() removed the valid compare instruction because of false positive answer from detect_dominating_control(). Reviewed-by: jrose, sgoldman ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp Changeset: aab136449123 Author: trims Date: 2008-04-17 16:29 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/aab136449123 6690518: Bump Version to 13 B01 Summary: Change Hotspot version and build number for 13b1 Reviewed-by: pbk ! make/hotspot_version Changeset: 86a689f680c5 Author: kamg Date: 2008-04-18 07:51 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/86a689f680c5 Merge Changeset: ec73d88d5b43 Author: kamg Date: 2008-04-23 06:35 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/ec73d88d5b43 Merge ! make/hotspot_version ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp Changeset: 9e5a7340635e Author: sgoldman Date: 2008-04-17 07:16 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9e5a7340635e 6688137: c++ interpreter fails on 64bit sparc Summary: Misc. 64bit and endian fixes for sparc Reviewed-by: never, kvn, rasbold Contributed-by: volker.simonis at gmail.com ! src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp ! src/cpu/sparc/vm/cppInterpreter_sparc.cpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp Changeset: b130b98db9cf Author: kvn Date: 2008-04-23 11:20 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b130b98db9cf 6689060: Escape Analysis does not work with Compressed Oops Summary: 64-bits VM crashes with -XX:+AggresiveOpts (Escape Analysis + Compressed Oops) Reviewed-by: never, sgoldman ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: d942c7e64bd9 Author: never Date: 2008-04-23 13:57 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d942c7e64bd9 6601321: Assert(j == 1 || b->_nodes[j-1]->is_Phi(),"CreateEx must be first instruction in block") Reviewed-by: kvn, rasbold, sgoldman, jrose ! src/share/vm/opto/lcm.cpp Changeset: 72f4a668df19 Author: kvn Date: 2008-04-23 19:09 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/72f4a668df19 6625997: CastPP, CheckCastPP and Proj nodes are not dead loop safe Summary: EA and initialization optimizations could bypass these nodes. Reviewed-by: rasbold, never ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/multnode.hpp ! src/share/vm/opto/node.hpp Changeset: e0bd2e08e3d0 Author: never Date: 2008-04-24 11:13 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e0bd2e08e3d0 6663848: assert(i < Max(),"oob") in C2 with -Xcomp Summary: NeverBranchNodes aren't handled properly Reviewed-by: kvn, sgoldman, rasbold, jrose ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/cfgnode.hpp ! src/share/vm/opto/compile.cpp + test/compiler/6663848/Tester.java Changeset: a76240c8b133 Author: rasbold Date: 2008-04-28 08:08 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a76240c8b133 Merge ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/runtime/sharedRuntime.cpp Changeset: c0939256690b Author: rasbold Date: 2008-04-24 14:02 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c0939256690b 6646019: array subscript expressions become top() with -d64 Summary: stop compilation after negative array allocation Reviewed-by: never, jrose ! src/share/vm/opto/parse2.cpp + test/compiler/6646019/Test.java Changeset: 3e2d987e2e68 Author: rasbold Date: 2008-04-29 06:52 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3e2d987e2e68 Merge Changeset: 6e825ad773c6 Author: jrose Date: 2008-04-29 19:40 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6e825ad773c6 6695288: runThese tests expr30303 and drem00301m1 fail when compiled code executes without deopt Summary: rework Value method for ModD and ModF, to DTRT for infinities Reviewed-by: sgoldman, kvn, rasbold ! src/share/vm/opto/divnode.cpp Changeset: 60b728ec77c1 Author: jrose Date: 2008-04-29 19:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/60b728ec77c1 6652736: well known classes in system dictionary are inefficiently processed Summary: combine many scalar variables into a single enum-indexed array in SystemDictionary. Reviewed-by: kvn ! agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/services/threadService.cpp Changeset: 435e64505015 Author: phh Date: 2008-04-24 15:07 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/435e64505015 6693457: Open-source hotspot linux-sparc support Summary: Move os_cpu/linux_sparc from closed to open Reviewed-by: kamg + make/linux/platform_sparcv9 + src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp + src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp + src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp + src/os_cpu/linux_sparc/vm/linux_sparc.ad + src/os_cpu/linux_sparc/vm/linux_sparc.s + src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp + src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp + src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp + src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp + src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp + src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp + src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp + src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp + src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp + src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp ! src/share/vm/oops/oop.inline.hpp Changeset: 8a79f7ec8f5d Author: kamg Date: 2008-04-29 11:21 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8a79f7ec8f5d 6692246: Regression : JDK 6u4 b01 fails two JCK tests when fallback is switched off Summary: Added a clause to allow null to be an operand to the arraylength bytecode Reviewed-by: sbohne, coleenp ! src/share/vm/classfile/verifier.cpp Changeset: b7268662a986 Author: coleenp Date: 2008-04-29 19:31 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b7268662a986 6689523: max heap calculation for compressed oops is off by MaxPermSize Summary: Need to subtract MaxPermSize from the total heap size when determining whether compressed oops is turned on. Reviewed-by: jmasa, jcoomes, kvn ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/runtime/arguments.cpp Changeset: 7f3a69574470 Author: kamg Date: 2008-04-30 10:58 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7f3a69574470 6695506: JVM should accept classfiles with classfile version 51 Summary: increase class file parser's acceptable max to 51 Reviewed-by: sbohne, ikrylov ! src/share/vm/classfile/classFileParser.cpp Changeset: 53735b80b9f1 Author: sbohne Date: 2008-05-01 09:38 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/53735b80b9f1 Merge Changeset: bcdc68eb7e1f Author: sbohne Date: 2008-05-02 08:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/bcdc68eb7e1f Merge Changeset: c0492d52d55b Author: apetrusenko Date: 2008-04-01 15:13 +0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c0492d52d55b 6539517: CR 6186200 should be extended to perm gen allocation to prevent spurious OOM's from perm gen Reviewed-by: ysr, jmasa ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! src/share/vm/gc_implementation/shared/vmGCOperations.hpp ! src/share/vm/includeDB_core ! src/share/vm/memory/gcLocker.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/permGen.cpp ! src/share/vm/memory/permGen.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/vm_operations.hpp Changeset: 3febac328d82 Author: apetrusenko Date: 2008-04-16 12:58 +0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3febac328d82 Merge - src/cpu/sparc/vm/disassembler_sparc.cpp - src/cpu/x86/vm/disassembler_x86.cpp - src/share/vm/compiler/disassemblerEnv.hpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/includeDB_core ! src/share/vm/runtime/globals.hpp Changeset: fcbfc50865ab Author: iveresov Date: 2008-04-29 13:51 +0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/fcbfc50865ab 6684395: Port NUMA-aware allocator to linux Summary: NUMA-aware allocator port to Linux Reviewed-by: jmasa, apetrusenko ! build/linux/makefiles/mapfile-vers-debug ! build/linux/makefiles/mapfile-vers-product ! src/os/linux/vm/os_linux.cpp ! src/os/linux/vm/os_linux.hpp ! src/os/linux/vm/os_linux.inline.hpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.inline.hpp ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/os_windows.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp ! src/share/vm/includeDB_core ! src/share/vm/runtime/os.hpp Changeset: 8bd1e4487c18 Author: iveresov Date: 2008-05-04 03:29 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8bd1e4487c18 Merge ! make/linux/makefiles/mapfile-vers-debug ! make/linux/makefiles/mapfile-vers-product ! src/os/windows/vm/os_windows.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/includeDB_core ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/runtime/globals.hpp Changeset: b5489bb705c9 Author: ysr Date: 2008-05-06 15:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b5489bb705c9 6662086: 6u4+, 7b11+: CMS never clears referents when -XX:+ParallelRefProcEnabled Summary: Construct the relevant CMSIsAliveClosure used by CMS during parallel reference processing with the correct span. It had incorrectly been constructed with an empty span, a regression introduced in 6417901. Reviewed-by: jcoomes ! src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Changeset: e3729351c946 Author: iveresov Date: 2008-05-09 16:34 +0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e3729351c946 6697534: Premature GC and invalid lgrp selection with NUMA-aware allocator. Summary: Don't move tops of the chunks in ensure_parsibility(). Handle the situation with Solaris when a machine has a locality group with no memory. Reviewed-by: apetrusenko, jcoomes, ysr ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.hpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp Changeset: f3de1255b035 Author: rasbold Date: 2008-05-07 08:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f3de1255b035 6603011: RFE: Optimize long division Summary: Transform long division by constant into multiply Reviewed-by: never, kvn ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/divnode.cpp ! src/share/vm/opto/mulnode.cpp ! src/share/vm/opto/mulnode.hpp ! src/share/vm/opto/type.hpp ! src/share/vm/utilities/globalDefinitions.hpp Changeset: 7cce9e4e0f7c Author: rasbold Date: 2008-05-09 05:26 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7cce9e4e0f7c Merge Changeset: 83c868b757c0 Author: jrose Date: 2008-05-14 00:41 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/83c868b757c0 6701024: SAJDI functionality is broken Summary: back out sa-related changes to 6652736, use concrete expressions for WKK names in the SA Reviewed-by: never, sundar ! agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 7a0a921a1a8c Author: rasbold Date: 2008-05-14 15:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7a0a921a1a8c Merge Changeset: e3d2692f8442 Author: trims Date: 2008-05-20 19:50 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/e3d2692f8442 Merge Changeset: c14dab40ed9b Author: xdono Date: 2008-05-22 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c14dab40ed9b Added tag jdk7-b27 for changeset e3d2692f8442 ! .hgtags Changeset: abe7181cbe8a Author: xdono Date: 2008-06-10 10:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/abe7181cbe8a Added tag jdk7-b28 for changeset c14dab40ed9b ! .hgtags Changeset: c70a245cad3a Author: dcubed Date: 2008-05-09 08:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c70a245cad3a 6670684: 4/5 SA command universe did not print out CMS space information Summary: Forward port of Yumin's fix for 6670684 from HSX-11; Yumin verified the port was correct. Reviewed-by: dcubed ! agent/make/Makefile ! agent/src/share/classes/sun/jvm/hotspot/HSDB.java ! agent/src/share/classes/sun/jvm/hotspot/SALauncherLoader.java ! agent/src/share/classes/sun/jvm/hotspot/bugspot/Main.java ! agent/src/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java + agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java ! agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java ! agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java + agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java + agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java ! agent/src/share/classes/sun/jvm/hotspot/ui/AnnotatedMemoryPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/CommandProcessorPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/DebuggerConsolePanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/HighPrecisionJScrollBar.java ! agent/src/share/classes/sun/jvm/hotspot/ui/JFrameWrapper.java ! agent/src/share/classes/sun/jvm/hotspot/ui/treetable/JTreeTable.java ! src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 6ab92ec09f70 Author: dcubed Date: 2008-05-09 09:11 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6ab92ec09f70 Merge Changeset: 09c2ba680204 Author: kvn Date: 2008-05-15 22:40 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/09c2ba680204 6700102: c2 assertion "counter_changed,"failed dependencies, but counter didn't change")" with AggressiveOpts Summary: Bytecode Escape Analyzer does not have the check for the case described in 6389127. Reviewed-by: never ! src/share/vm/ci/bcEscapeAnalyzer.cpp Changeset: 723be81c1212 Author: kvn Date: 2008-05-15 22:43 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/723be81c1212 6701887: JDK7 server VM in endless loop in Node::dominates Summary: The method Node::dominates loops in the dead code which does not have a Region node. Reviewed-by: jrose, never ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/node.cpp Changeset: 5bba3366a9a2 Author: dcubed Date: 2008-05-16 13:42 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/5bba3366a9a2 Merge ! agent/src/share/classes/sun/jvm/hotspot/HSDB.java ! src/share/vm/runtime/vmStructs.cpp Changeset: a3e5744fafda Author: dcubed Date: 2008-05-20 09:47 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a3e5744fafda Merge Changeset: a49545cab84a Author: ohair Date: 2008-05-27 09:47 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/a49545cab84a 6563752: Build and test JDK7 with Sun Studio 12 Express compilers (prep makefiles) Summary: Allows for building with SS12, no longer requires SS11, warns if not SS11 for now. Once SS12 is validated and performance measurements look ok, SS12 will be the validated compiler. Reviewed-by: sspitsyn, ikrylov ! make/jprt.config ! make/solaris/makefiles/debug.make ! make/solaris/makefiles/dtrace.make ! make/solaris/makefiles/fastdebug.make ! make/solaris/makefiles/jvmg.make ! make/solaris/makefiles/optimized.make ! make/solaris/makefiles/product.make ! make/solaris/makefiles/sparc.make ! make/solaris/makefiles/sparcWorks.make ! make/solaris/makefiles/sparcv9.make Changeset: af059c49e677 Author: ohair Date: 2008-05-28 10:16 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/af059c49e677 6703308: Fix jprt.properties to allow for jdk6 and jdk7 builds Summary: Allows for jprt submit -release option to select jdk version and proper build targets. Reviewed-by: jcoomes ! make/jprt.properties Changeset: 23a06eca8e83 Author: jmasa Date: 2008-05-27 11:46 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/23a06eca8e83 6706662: Remove workaround introduced in fix for 6624782 Summary: Remove workaround compiler options for instanceKlass.cpp and objArrayKlass.cpp. Reviewed-by: ysr, jcoomes ! make/solaris/makefiles/amd64.make Changeset: 27f13876aef3 Author: iveresov Date: 2008-05-30 03:53 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/27f13876aef3 Merge Changeset: 8aa010f60e0f Author: rasbold Date: 2008-05-20 06:32 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8aa010f60e0f Merge Changeset: 885ed790ecf0 Author: kvn Date: 2008-05-21 10:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/885ed790ecf0 6695810: null oop passed to encode_heap_oop_not_null Summary: fix several problems in C2 related to Escape Analysis and Compressed Oops. Reviewed-by: never, jrose ! src/cpu/sparc/vm/sparc.ad ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/output.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp + test/compiler/6689060/Test.java + test/compiler/6695810/Test.java Changeset: c436414a719e Author: kvn Date: 2008-05-21 13:46 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c436414a719e 6703890: Compressed Oops: add LoadNKlass node to generate narrow oops (32-bits) compare instructions Summary: Add LoadNKlass and CMoveN nodes, use CmpN and ConN nodes to generate narrow oops compare instructions. Reviewed-by: never, rasbold ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/relocInfo_sparc.cpp ! src/cpu/sparc/vm/relocInfo_sparc.hpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/relocInfo_x86.cpp ! src/cpu/x86/vm/relocInfo_x86.hpp ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/adlc/forms.cpp ! src/share/vm/adlc/formssel.cpp ! src/share/vm/includeDB_core ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/loopopts.cpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parseHelper.cpp ! src/share/vm/runtime/globals.hpp Changeset: 437d03ea40b1 Author: kvn Date: 2008-05-21 16:31 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/437d03ea40b1 6703888: Compressed Oops: use the 32-bits gap after klass in a object Summary: Use the gap also for a narrow oop field and a boxing object value. Reviewed-by: coleenp, never ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/x86/vm/sharedRuntime_x86_32.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/share/vm/ci/ciInstanceKlass.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/gc_implementation/includeDB_gc_shared ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/instanceKlassKlass.cpp ! src/share/vm/oops/instanceOop.hpp Changeset: aaa1137c5ef4 Author: sgoldman Date: 2008-05-28 12:42 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/aaa1137c5ef4 6707485: bytecodeInterpreterWithChecks.xsl is malformed Summary: xsl output tag not at top level Reviewed-by: never, kvn, rasbold Contributed-by: gnu_andrew at member.fsf.org ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl Changeset: feeb96a45707 Author: coleenp Date: 2008-05-28 21:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/feeb96a45707 6696264: assert("narrow oop can never be zero") for GCBasher & ParNewGC Summary: decouple set_klass() with zeroing the gap when compressed. Reviewed-by: kvn, ysr, jrose ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/templateTable_sparc.cpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/templateTable_x86_64.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_interface/collectedHeap.inline.hpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp Changeset: 7793bd37a336 Author: kvn Date: 2008-05-29 12:04 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/7793bd37a336 6705887: Compressed Oops: generate x64 addressing and implicit null checks with narrow oops Summary: Generate addresses and implicit null checks with narrow oops to avoid decoding. Reviewed-by: jrose, never ! src/cpu/x86/vm/assembler_x86_32.hpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/x86_64.ad ! src/os_cpu/linux_x86/vm/assembler_linux_x86_32.cpp ! src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp ! src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.cpp ! src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp ! src/os_cpu/windows_x86/vm/assembler_windows_x86_32.cpp ! src/os_cpu/windows_x86/vm/assembler_windows_x86_64.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/chaitin.cpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/matcher.hpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/node.hpp Changeset: 9148c65abefc Author: rasbold Date: 2008-05-29 16:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9148c65abefc 6695049: (coll) Create an x86 intrinsic for Arrays.equals Summary: Intrinsify java/util/Arrays.equals(char[], char[]) Reviewed-by: kvn, never ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/loopnode.cpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: 02cc988a9fdc Author: rasbold Date: 2008-05-30 07:22 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/02cc988a9fdc Merge Changeset: 0e13255adcb0 Author: trims Date: 2008-05-30 14:30 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/0e13255adcb0 Merge Changeset: 3e4b7b5b2b4b Author: trims Date: 2008-05-30 14:31 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3e4b7b5b2b4b Merge Changeset: 9077d695a1b0 Author: trims Date: 2008-05-30 14:50 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/9077d695a1b0 6709213: Update Build number for HS13 b02 Summary: Bump up build number to 02 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 510f98a80563 Author: rasbold Date: 2008-06-03 13:14 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/510f98a80563 6709972: runThese failed with assert(false,"bad AD file") Summary: guard AryEqNode construction with has_match_rule() test, set SpecialArraysEquals default off Reviewed-by: kvn, never ! src/share/vm/opto/library_call.cpp ! src/share/vm/runtime/globals.hpp Changeset: f2759c126e9d Author: rasbold Date: 2008-06-03 15:38 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/f2759c126e9d Merge Changeset: 6b648fefb395 Author: kamg Date: 2008-05-22 13:03 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6b648fefb395 6705523: Fix for 6695506 will violate spec when used in JDK6 Summary: Make max classfile version number dependent on JDK version Reviewed-by: acorn, never ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/runtime/java.hpp Changeset: 2a8ec427fbe1 Author: kamg Date: 2008-05-29 14:06 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/2a8ec427fbe1 6706604: Copyright headers need to be changed to GPL. Summary: Update the copyrights Reviewed-by: ohair ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl ! test/compiler/6659207/Test.java ! test/compiler/6661247/Test.java ! test/compiler/6663621/IVTest.java Changeset: 6d172e3548cb Author: coleenp Date: 2008-06-05 17:02 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6d172e3548cb 6695819: verify_oopx rax: broken oop in decode_heap_oop Summary: Code in gen_subtype_check was encoding rax as an oop on a path where rax was not an oop. Reviewed-by: never, kvn ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/interp_masm_x86_64.cpp Changeset: 1f809e010142 Author: kamg Date: 2008-06-06 13:43 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/1f809e010142 Merge ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl Changeset: b9ebd46331d2 Author: kvn Date: 2008-06-04 14:03 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/b9ebd46331d2 6710654: SAJDI failures with Compressed Oops Summary: Use correct offset for the java.lang.Class _klass field in SA. Reviewed-by: jrose, never ! agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java Changeset: 823298b11afc Author: never Date: 2008-06-04 21:56 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/823298b11afc 6709165: Tests hang or misbahve with HS 13.0-b01 on solaris-sparcv9 Reviewed-by: kvn, jrose ! src/cpu/sparc/vm/sparc.ad Changeset: 44abbb0d4c18 Author: kvn Date: 2008-06-05 13:02 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/44abbb0d4c18 6709093: Compressed Oops: reduce size of compiled methods Summary: exclude UEP size from nmethod code size and use narrow klass oop to load prototype header. Reviewed-by: jrose, never ! src/cpu/sparc/vm/sparc.ad ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/opto/compile.cpp Changeset: d4dbd9f91680 Author: never Date: 2008-06-05 15:43 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d4dbd9f91680 6711083: 64bit JVM crashes with Internal Error (type.cpp:763) - ShouldNotReachHere() with enabled COOPs Summary: Add NarrowOop to various xmeet routines Reviewed-by: kvn, sgoldman, jrose, rasbold ! src/share/vm/opto/type.cpp Changeset: 65fe2bd88839 Author: never Date: 2008-06-05 21:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/65fe2bd88839 6614100: EXCEPTION_ACCESS_VIOLATION while running Eclipse with 1.6.0_05-ea Reviewed-by: kvn, jrose, rasbold ! src/share/vm/opto/cfgnode.cpp Changeset: 8759d37f2524 Author: rasbold Date: 2008-06-06 11:47 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/8759d37f2524 6711701: disable compressed oops by default Summary: comment out code that turns on compressed oops Reviewed-by: never, phh ! src/share/vm/runtime/arguments.cpp Changeset: cf1821c649d9 Author: never Date: 2008-06-06 14:34 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/cf1821c649d9 Merge ! src/cpu/x86/vm/assembler_x86_64.cpp Changeset: 790e66e5fbac Author: coleenp Date: 2008-06-09 11:51 -0400 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/790e66e5fbac 6687581: Make CMS work with compressed oops Summary: Make FreeChunk read markword instead of LSB in _klass pointer to indicate that it's a FreeChunk for compressed oops. Reviewed-by: ysr, jmasa ! agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java ! agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp + src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp ! src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep ! src/share/vm/oops/markOop.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/vmStructs.cpp Changeset: c0ecab83e6f3 Author: never Date: 2008-06-10 09:57 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c0ecab83e6f3 Merge ! agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java ! src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 0b27f3512f9e Author: jmasa Date: 2008-06-04 13:51 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/0b27f3512f9e 6629727: assertion in set_trap_state() in methodDataOop.hpp is too strong. Summary: The assertion can failure due to race conditions. Reviewed-by: never ! src/share/vm/oops/methodDataOop.hpp Changeset: d1635bf93939 Author: iveresov Date: 2008-06-09 07:18 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d1635bf93939 6711930: NUMA allocator: ParOld can create a hole less than minimal object size in the lgrp chunk Summary: The fix takes care of three issues that can create a hole less a minimal object in the lgrp chunk Reviewed-by: ysr, apetrusenko ! src/share/vm/gc_implementation/shared/immutableSpace.cpp ! src/share/vm/gc_implementation/shared/immutableSpace.hpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp ! src/share/vm/gc_implementation/shared/mutableSpace.cpp ! src/share/vm/gc_implementation/shared/mutableSpace.hpp Changeset: 3ad4bacbcdbe Author: jcoomes Date: 2008-06-10 11:14 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/3ad4bacbcdbe Merge Changeset: 6d13fcb3663f Author: kvn Date: 2008-06-13 14:49 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/6d13fcb3663f 6714404: Add UseStringCache switch to enable String caching under AggressiveOpts Summary: Poke String.stringCacheEnabled during vm initialization Reviewed-by: never ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/thread.cpp Changeset: 44a553b2809d Author: kvn Date: 2008-06-13 15:08 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/44a553b2809d 6714406: Node::dominates() does not always check for TOP Summary: Add missed checks for TOP and missed checks for non-dominating cases Reviewed-by: rasbold, jrose, never ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/node.cpp Changeset: 4f91c08b3e44 Author: trims Date: 2008-06-17 15:27 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/4f91c08b3e44 Merge Changeset: 93435819dba2 Author: xdono Date: 2008-06-20 08:44 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/93435819dba2 Added tag jdk7-b29 for changeset 4f91c08b3e44 ! .hgtags Changeset: 1000a73ac0d5 Author: gafter Date: 2008-07-01 21:29 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/1000a73ac0d5 Changes needed to compile on an updated ubuntu system. ! src/os/linux/vm/jvm_linux.cpp ! src/os/linux/vm/os_linux.cpp From neal at gafter.com Fri Jul 4 23:46:25 2008 From: neal at gafter.com (neal at gafter.com) Date: Sat, 05 Jul 2008 06:46:25 +0000 Subject: hg: closures/closures/jdk: 4 new changesets Message-ID: <20080705064712.E4B9128A1F@hg.openjdk.java.net> Changeset: 0ce6a3f3ee2f Author: swamyv Date: 2008-06-25 16:33 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/0ce6a3f3ee2f 6614556: null location for MonitorContendedEnterEvent Reviewed-by: jjh ! src/share/classes/com/sun/tools/jdi/EventSetImpl.java Changeset: 6bdb9094310f Author: swamyv Date: 2008-07-02 09:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/6bdb9094310f Merge Changeset: a031e88c72ec Author: emcmanus Date: 2008-07-04 18:55 +0200 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/a031e88c72ec 6601652: MXBeans: no IllegalArgumentException in the ex. chain for SortedSet/Map with a non-null comparator() Summary: Forward-port this bug fix from JDK 6 Reviewed-by: dfuchs, lmalvent ! src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java + test/javax/management/mxbean/ComparatorExceptionTest.java ! test/javax/management/mxbean/MXBeanTest.java + test/javax/management/mxbean/SameObjectTwoNamesTest.java Changeset: e787bbc0c32e Author: gafter Date: 2008-07-04 23:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/e787bbc0c32e Initial checkin of closures prototype [gafter] ! make/java/java/FILES_java.gmk ! src/share/classes/java/awt/ActiveEvent.java ! src/share/classes/java/awt/KeyEventDispatcher.java ! src/share/classes/java/awt/KeyEventPostProcessor.java ! src/share/classes/java/awt/PrintGraphics.java ! src/share/classes/java/awt/datatransfer/ClipboardOwner.java ! src/share/classes/java/awt/image/TileObserver.java ! src/share/classes/java/beans/ExceptionListener.java ! src/share/classes/java/lang/Comparable.java + src/share/classes/java/lang/Jump.java + src/share/classes/java/lang/Nothing.java + src/share/classes/java/lang/RestrictedFunction.java ! src/share/classes/java/lang/Runnable.java + src/share/classes/java/lang/Shared.java + src/share/classes/java/lang/UnmatchedTransfer.java ! src/share/classes/java/security/Guard.java ! src/share/classes/java/util/Comparator.java ! src/share/classes/java/util/EventListener.java ! src/share/classes/java/util/Observer.java ! src/share/classes/java/util/concurrent/Callable.java From neal at gafter.com Fri Jul 4 23:47:56 2008 From: neal at gafter.com (neal at gafter.com) Date: Sat, 05 Jul 2008 06:47:56 +0000 Subject: hg: closures/closures/langtools: Initial checkin of closures prototype [gafter] Message-ID: <20080705064758.6260328A24@hg.openjdk.java.net> Changeset: 9216417cc5c0 Author: gafter Date: 2008-07-04 23:38 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/9216417cc5c0 Initial checkin of closures prototype [gafter] + src/share/classes/com/sun/source/tree/ControlInvocationTree.java + src/share/classes/com/sun/source/tree/EtaExpansionTree.java + src/share/classes/com/sun/source/tree/FuncTypeTree.java + src/share/classes/com/sun/source/tree/LambdaTree.java ! src/share/classes/com/sun/source/tree/Tree.java ! src/share/classes/com/sun/source/tree/TreeVisitor.java ! src/share/classes/com/sun/source/tree/TypeParameterTree.java + src/share/classes/com/sun/source/tree/UnionTypeTree.java ! src/share/classes/com/sun/source/util/SimpleTreeVisitor.java ! src/share/classes/com/sun/source/util/TreeScanner.java ! src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java ! src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java ! src/share/classes/com/sun/tools/doclets/internal/toolkit/util/links/LinkFactory.java ! src/share/classes/com/sun/tools/javac/code/Flags.java + src/share/classes/com/sun/tools/javac/code/FunctionTypes.java ! src/share/classes/com/sun/tools/javac/code/Lint.java ! src/share/classes/com/sun/tools/javac/code/Scope.java ! src/share/classes/com/sun/tools/javac/code/Source.java ! src/share/classes/com/sun/tools/javac/code/Symbol.java ! src/share/classes/com/sun/tools/javac/code/Symtab.java ! src/share/classes/com/sun/tools/javac/code/Type.java ! src/share/classes/com/sun/tools/javac/code/TypeTags.java ! src/share/classes/com/sun/tools/javac/code/Types.java ! src/share/classes/com/sun/tools/javac/comp/Annotate.java + src/share/classes/com/sun/tools/javac/comp/Assign.java ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/comp/AttrContext.java ! src/share/classes/com/sun/tools/javac/comp/Check.java + src/share/classes/com/sun/tools/javac/comp/DeClosure.java ! src/share/classes/com/sun/tools/javac/comp/Flow.java ! src/share/classes/com/sun/tools/javac/comp/Infer.java ! src/share/classes/com/sun/tools/javac/comp/Lower.java ! src/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/jvm/CRTable.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/share/classes/com/sun/tools/javac/jvm/Code.java ! src/share/classes/com/sun/tools/javac/jvm/Gen.java ! src/share/classes/com/sun/tools/javac/jvm/Items.java ! src/share/classes/com/sun/tools/javac/jvm/Target.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/parser/Parser.java ! src/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/share/classes/com/sun/tools/javac/parser/Token.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/share/classes/com/sun/tools/javac/resources/legacy.properties ! src/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/share/classes/com/sun/tools/javac/tree/Pretty.java ! src/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! src/share/classes/com/sun/tools/javac/tree/TreeScanner.java ! src/share/classes/com/sun/tools/javac/tree/TreeTranslator.java ! src/share/classes/com/sun/tools/javac/util/Context.java ! src/share/classes/com/sun/tools/javac/util/List.java ! src/share/classes/com/sun/tools/javac/util/ListBuffer.java ! src/share/classes/com/sun/tools/javac/util/Log.java ! src/share/classes/com/sun/tools/javac/util/Messages.java ! src/share/classes/com/sun/tools/javac/util/Name.java ! src/share/classes/com/sun/tools/javadoc/JavadocTool.java ! src/share/classes/javax/lang/model/SourceVersion.java ! src/share/classes/javax/lang/model/type/ExecutableType.java + src/share/classes/javax/lang/model/type/UnionType.java ! test/tools/javac/6394683/T6394683.java ! test/tools/javac/6491592/T6491592.out + test/tools/javac/GenericEnum.java + test/tools/javac/Parse2.java + test/tools/javac/Parse3.java ! test/tools/javac/T6705935.java + test/tools/javac/closures/Bloch1.java + test/tools/javac/closures/Capture1.java + test/tools/javac/closures/Capture2.java + test/tools/javac/closures/Capture3.java + test/tools/javac/closures/Capture4.java + test/tools/javac/closures/Capture5.java + test/tools/javac/closures/Capture6.java + test/tools/javac/closures/Capture7.java + test/tools/javac/closures/Capture8.java + test/tools/javac/closures/Capture9.java + test/tools/javac/closures/Clarkson10.java + test/tools/javac/closures/Clarkson12.java + test/tools/javac/closures/Clarkson13.java + test/tools/javac/closures/Clarkson2.java + test/tools/javac/closures/Clarkson3.java + test/tools/javac/closures/Clarkson4.java + test/tools/javac/closures/Clarkson5.java + test/tools/javac/closures/Clarkson6.java + test/tools/javac/closures/Clarkson7.java + test/tools/javac/closures/Clarkson9.java + test/tools/javac/closures/ClosureConversion1.java + test/tools/javac/closures/ClosureConversion2.java + test/tools/javac/closures/ClosureConversion3.java + test/tools/javac/closures/CompletionTransparency1.java + test/tools/javac/closures/CompletionTransparency2.java + test/tools/javac/closures/CompletionTransparency3.java + test/tools/javac/closures/Continue1.java + test/tools/javac/closures/Continue2.java + test/tools/javac/closures/Control1.java + test/tools/javac/closures/DisjunctiveType1.java + test/tools/javac/closures/Eoin.java + test/tools/javac/closures/EtaExpansion.java + test/tools/javac/closures/ExceptionTransparency1.java + test/tools/javac/closures/ExceptionTransparency2.java + test/tools/javac/closures/ExceptionTransparency3.java + test/tools/javac/closures/ExceptionTransparency4.java + test/tools/javac/closures/ExceptionTransparency5.java + test/tools/javac/closures/ExceptionTransparency6.java + test/tools/javac/closures/ExceptionTransparency7.java + test/tools/javac/closures/ExtendsNothing.java + test/tools/javac/closures/Holser.java + test/tools/javac/closures/Inner1.java + test/tools/javac/closures/Javier.java + test/tools/javac/closures/Mahieu.java + test/tools/javac/closures/Mahieu10.java + test/tools/javac/closures/Mahieu11.java + test/tools/javac/closures/Mahieu12.java + test/tools/javac/closures/Mahieu13.java + test/tools/javac/closures/Mahieu14.java + test/tools/javac/closures/Mahieu15.java + test/tools/javac/closures/Mahieu16.java + test/tools/javac/closures/Mahieu2.java + test/tools/javac/closures/Mahieu3.java + test/tools/javac/closures/Mahieu4.java + test/tools/javac/closures/Mahieu5.java + test/tools/javac/closures/Mahieu6.java + test/tools/javac/closures/Mahieu7.java + test/tools/javac/closures/Mahieu8.java + test/tools/javac/closures/Mahieu9.java + test/tools/javac/closures/Morris.java + test/tools/javac/closures/Natural1.java + test/tools/javac/closures/Neal1.java + test/tools/javac/closures/Neal2.java + test/tools/javac/closures/Neal3.java + test/tools/javac/closures/Neal6.java + test/tools/javac/closures/NestedInvocation.java + test/tools/javac/closures/Nothing1.java + test/tools/javac/closures/Nothing2.java + test/tools/javac/closures/Nothing3.java + test/tools/javac/closures/Nothing4.java + test/tools/javac/closures/Parse1.java + test/tools/javac/closures/Parse2.java + test/tools/javac/closures/Parse3.java + test/tools/javac/closures/Parse4.java + test/tools/javac/closures/ParseEta.java + test/tools/javac/closures/Rajan1.java + test/tools/javac/closures/Restricted1.java + test/tools/javac/closures/Restricted2.java + test/tools/javac/closures/Restricted3.java + test/tools/javac/closures/SelectStatic.java + test/tools/javac/closures/Shared1.java + test/tools/javac/closures/Shared2.java + test/tools/javac/closures/Shared3.java + test/tools/javac/closures/Static1.java + test/tools/javac/closures/Subtype.java + test/tools/javac/closures/Swallow.java + test/tools/javac/closures/Variance1.java + test/tools/javac/closures/Variance2.java + test/tools/javac/closures/VoidResult1.java + test/tools/javac/closures/Weiqi.java + test/tools/javac/closures/Weiqi1.java + test/tools/javac/closures/Weiqi2.java + test/tools/javac/closures/With1.java + test/tools/javac/closures/WrongFrame.java ! test/tools/javac/processing/model/testgetallmembers/Main.java ! test/tools/javac/proprietary/WarnClass.java ! test/tools/javac/proprietary/WarnImport.java ! test/tools/javac/proprietary/WarnMethod.java ! test/tools/javac/proprietary/WarnStaticImport.java ! test/tools/javac/proprietary/WarnVariable.java ! test/tools/javac/proprietary/WarnWildcard.java From neal at gafter.com Sun Jul 6 20:28:06 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:28:06 +0000 Subject: hg: closures/closures: 2 new changesets Message-ID: <20080707032806.5A75F28AB6@hg.openjdk.java.net> Changeset: 2dab2f712e18 Author: xdono Date: 2008-07-02 12:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/2dab2f712e18 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! Makefile ! make/Defs-internal.gmk ! make/jdk-rules.gmk Changeset: 91b0b5f6f4a1 Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/rev/91b0b5f6f4a1 Added tag jdk7-b30 for changeset 2dab2f712e18 ! .hgtags From neal at gafter.com Sun Jul 6 20:28:43 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:28:43 +0000 Subject: hg: closures/closures/corba: 2 new changesets Message-ID: <20080707032845.4E62328ABB@hg.openjdk.java.net> Changeset: c0252adbb2ab Author: xdono Date: 2008-07-02 12:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/c0252adbb2ab 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! make/common/shared/Compiler-sun.gmk ! make/common/shared/Defs.gmk ! make/jprt.config ! src/share/classes/org/omg/CORBA/ir.idl ! src/share/classes/org/omg/DynamicAny/DynamicAny.idl Changeset: ef6af34d75a7 Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/corba/rev/ef6af34d75a7 Added tag jdk7-b30 for changeset c0252adbb2ab ! .hgtags From neal at gafter.com Sun Jul 6 20:29:26 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:29:26 +0000 Subject: hg: closures/closures/hotspot: 3 new changesets Message-ID: <20080707032932.0140F28AC0@hg.openjdk.java.net> Changeset: d1605aabd0a1 Author: xdono Date: 2008-07-02 12:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/d1605aabd0a1 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! agent/make/Makefile ! agent/src/os/linux/ps_core.c ! agent/src/os/linux/ps_proc.c ! agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java ! agent/src/share/classes/sun/jvm/hotspot/HSDB.java ! agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java ! agent/src/share/classes/sun/jvm/hotspot/SALauncherLoader.java ! agent/src/share/classes/sun/jvm/hotspot/bugspot/Main.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java ! agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/Address.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescription.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAMD64.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIntelX86.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC32Bit.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC64Bit.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Address.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Debugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32DebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgAddress.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebugger.java ! agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java ! agent/src/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java ! agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java ! agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java ! agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java ! agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java ! agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java ! agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java ! agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java ! agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Array.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java ! agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjArray.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogram.java ! agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java ! agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java ! agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/AddressVisitor.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java ! agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java ! agent/src/share/classes/sun/jvm/hotspot/types/Field.java ! agent/src/share/classes/sun/jvm/hotspot/types/Type.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicField.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicFieldWrapper.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicOopField.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicType.java ! agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java ! agent/src/share/classes/sun/jvm/hotspot/ui/AnnotatedMemoryPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/CommandProcessorPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/DebuggerConsolePanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/FindInHeapPanel.java ! agent/src/share/classes/sun/jvm/hotspot/ui/HighPrecisionJScrollBar.java ! agent/src/share/classes/sun/jvm/hotspot/ui/JFrameWrapper.java ! agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java ! agent/src/share/classes/sun/jvm/hotspot/ui/treetable/JTreeTable.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java ! agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java ! make/Makefile ! make/defs.make ! make/hotspot_distro ! make/hotspot_version ! make/jprt.config ! make/jprt.properties ! make/linux/Makefile ! make/linux/build.sh ! make/linux/makefiles/adjust-mflags.sh ! make/linux/makefiles/adlc.make ! make/linux/makefiles/amd64.make ! make/linux/makefiles/buildtree.make ! make/linux/makefiles/compiler1.make ! make/linux/makefiles/compiler2.make ! make/linux/makefiles/core.make ! make/linux/makefiles/cscope.make ! make/linux/makefiles/debug.make ! make/linux/makefiles/defs.make ! make/linux/makefiles/dtrace.make ! make/linux/makefiles/fastdebug.make ! make/linux/makefiles/gcc.make ! make/linux/makefiles/hp.make ! make/linux/makefiles/hp1.make ! make/linux/makefiles/i486.make ! make/linux/makefiles/ia64.make ! make/linux/makefiles/jsig.make ! make/linux/makefiles/jvmg.make ! make/linux/makefiles/jvmti.make ! make/linux/makefiles/launcher.make ! make/linux/makefiles/makedeps.make ! make/linux/makefiles/mapfile-vers-debug ! make/linux/makefiles/mapfile-vers-jsig ! make/linux/makefiles/mapfile-vers-product ! make/linux/makefiles/optimized.make ! make/linux/makefiles/product.make ! make/linux/makefiles/profiled.make ! make/linux/makefiles/rules.make ! make/linux/makefiles/sa.make ! make/linux/makefiles/saproc.make ! make/linux/makefiles/sparc.make ! make/linux/makefiles/sparcWorks.make ! make/linux/makefiles/sparcv9.make ! make/linux/makefiles/tiered.make ! make/linux/makefiles/top.make ! make/linux/makefiles/vm.make ! make/openjdk_distro ! make/sa.files ! make/solaris/Makefile ! make/solaris/build.sh ! make/solaris/makefiles/adjust-mflags.sh ! make/solaris/makefiles/adlc.make ! make/solaris/makefiles/amd64.make ! make/solaris/makefiles/buildtree.make ! make/solaris/makefiles/compiler1.make ! make/solaris/makefiles/compiler2.make ! make/solaris/makefiles/core.make ! make/solaris/makefiles/cscope.make ! make/solaris/makefiles/debug.make ! make/solaris/makefiles/defs.make ! make/solaris/makefiles/dtrace.make ! make/solaris/makefiles/fastdebug.make ! make/solaris/makefiles/gcc.make ! make/solaris/makefiles/hp.make ! make/solaris/makefiles/hp1.make ! make/solaris/makefiles/i486.make ! make/solaris/makefiles/jsig.make ! make/solaris/makefiles/jvmg.make ! make/solaris/makefiles/jvmti.make ! make/solaris/makefiles/launcher.make ! make/solaris/makefiles/makedeps.make ! make/solaris/makefiles/mapfile-vers ! make/solaris/makefiles/mapfile-vers-COMPILER1 ! make/solaris/makefiles/mapfile-vers-COMPILER2 ! make/solaris/makefiles/mapfile-vers-CORE ! make/solaris/makefiles/mapfile-vers-TIERED ! make/solaris/makefiles/mapfile-vers-debug ! make/solaris/makefiles/mapfile-vers-jsig ! make/solaris/makefiles/mapfile-vers-jvm_db ! make/solaris/makefiles/mapfile-vers-jvm_dtrace ! make/solaris/makefiles/mapfile-vers-nonproduct ! make/solaris/makefiles/optimized.make ! make/solaris/makefiles/product.make ! make/solaris/makefiles/profiled.make ! make/solaris/makefiles/rules.make ! make/solaris/makefiles/sa.make ! make/solaris/makefiles/saproc.make ! make/solaris/makefiles/sparc.make ! make/solaris/makefiles/sparcWorks.make ! make/solaris/makefiles/sparcv9.make ! make/solaris/makefiles/tiered.make ! make/solaris/makefiles/top.make ! make/solaris/makefiles/vm.make ! make/solaris/reorder.sh ! make/test/Queens.java ! make/windows/build.bat ! make/windows/build.make ! make/windows/build_vm_def.sh ! make/windows/create.bat ! make/windows/cross_build.bat ! make/windows/get_msc_ver.sh ! make/windows/makefiles/adlc.make ! make/windows/makefiles/compile.make ! make/windows/makefiles/debug.make ! make/windows/makefiles/defs.make ! make/windows/makefiles/fastdebug.make ! make/windows/makefiles/generated.make ! make/windows/makefiles/jvmti.make ! make/windows/makefiles/makedeps.make ! make/windows/makefiles/product.make ! make/windows/makefiles/rules.make ! make/windows/makefiles/sa.make ! make/windows/makefiles/sanity.make ! make/windows/makefiles/shared.make ! make/windows/makefiles/top.make ! make/windows/makefiles/vm.make ! make/windows/projectfiles/common/Makefile ! make/windows/projectfiles/compiler1/Makefile ! make/windows/projectfiles/compiler2/Makefile ! make/windows/projectfiles/core/Makefile ! make/windows/projectfiles/tiered/Makefile ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp ! src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp ! src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp ! src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp ! src/cpu/sparc/vm/copy_sparc.hpp ! src/cpu/sparc/vm/cppInterpreter_sparc.cpp ! src/cpu/sparc/vm/frame_sparc.cpp ! src/cpu/sparc/vm/interp_masm_sparc.cpp ! src/cpu/sparc/vm/nativeInst_sparc.cpp ! src/cpu/sparc/vm/nativeInst_sparc.hpp ! src/cpu/sparc/vm/register_definitions_sparc.cpp ! src/cpu/sparc/vm/relocInfo_sparc.cpp ! src/cpu/sparc/vm/relocInfo_sparc.hpp ! src/cpu/sparc/vm/sharedRuntime_sparc.cpp ! src/cpu/sparc/vm/sparc.ad ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/sparc/vm/templateInterpreter_sparc.cpp ! src/cpu/sparc/vm/templateTable_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.cpp ! src/cpu/sparc/vm/vm_version_sparc.hpp ! src/cpu/sparc/vm/vtableStubs_sparc.cpp ! src/cpu/x86/vm/assembler_x86_32.cpp ! src/cpu/x86/vm/assembler_x86_32.hpp ! src/cpu/x86/vm/assembler_x86_64.cpp ! src/cpu/x86/vm/assembler_x86_64.hpp ! src/cpu/x86/vm/c1_LIRAssembler_x86.cpp ! src/cpu/x86/vm/c1_LIRGenerator_x86.cpp ! src/cpu/x86/vm/c1_MacroAssembler_x86.cpp ! src/cpu/x86/vm/frame_x86.cpp ! src/cpu/x86/vm/frame_x86.inline.hpp ! src/cpu/x86/vm/interp_masm_x86_64.cpp ! src/cpu/x86/vm/interpreter_x86_64.cpp ! src/cpu/x86/vm/nativeInst_x86.cpp ! src/cpu/x86/vm/nativeInst_x86.hpp ! src/cpu/x86/vm/register_definitions_x86.cpp ! src/cpu/x86/vm/relocInfo_x86.cpp ! src/cpu/x86/vm/relocInfo_x86.hpp ! src/cpu/x86/vm/sharedRuntime_x86_32.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86_32.cpp ! src/cpu/x86/vm/templateTable_x86_64.cpp ! src/cpu/x86/vm/vm_version_x86_32.cpp ! src/cpu/x86/vm/vm_version_x86_64.cpp ! src/cpu/x86/vm/vtableStubs_x86_64.cpp ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad ! src/os/linux/vm/attachListener_linux.cpp ! src/os/linux/vm/dtraceJSDT_linux.cpp ! src/os/linux/vm/os_linux.cpp ! src/os/linux/vm/os_linux.hpp ! src/os/linux/vm/os_linux.inline.hpp ! src/os/solaris/dtrace/generateJvmOffsets.cpp ! src/os/solaris/dtrace/jhelper.d ! src/os/solaris/dtrace/libjvm_db.c ! src/os/solaris/vm/dtraceJSDT_solaris.cpp ! src/os/solaris/vm/os_solaris.cpp ! src/os/solaris/vm/os_solaris.hpp ! src/os/solaris/vm/os_solaris.inline.hpp ! src/os/windows/vm/dtraceJSDT_windows.cpp ! src/os/windows/vm/os_windows.cpp ! src/os/windows/vm/os_windows.inline.hpp ! src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp ! src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp ! src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp ! src/os_cpu/linux_sparc/vm/linux_sparc.ad ! src/os_cpu/linux_sparc/vm/linux_sparc.s ! src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp ! src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp ! src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp ! src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp ! src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp ! src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp ! src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp ! src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp ! src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp ! src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp ! src/os_cpu/linux_x86/vm/assembler_linux_x86_32.cpp ! src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp ! src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp ! src/os_cpu/linux_x86/vm/os_linux_x86.cpp ! src/os_cpu/solaris_sparc/vm/solaris_sparc.s ! src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp ! src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.cpp ! src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp ! src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp ! src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp ! src/os_cpu/windows_x86/vm/assembler_windows_x86_32.cpp ! src/os_cpu/windows_x86/vm/assembler_windows_x86_64.cpp ! src/share/vm/adlc/archDesc.cpp ! src/share/vm/adlc/forms.cpp ! src/share/vm/adlc/forms.hpp ! src/share/vm/adlc/formssel.cpp ! src/share/vm/adlc/output_c.cpp ! src/share/vm/adlc/output_h.cpp ! src/share/vm/asm/codeBuffer.cpp ! src/share/vm/asm/codeBuffer.hpp ! src/share/vm/c1/c1_LIR.cpp ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/ci/bcEscapeAnalyzer.cpp ! src/share/vm/ci/bcEscapeAnalyzer.hpp ! src/share/vm/ci/ciField.hpp ! src/share/vm/ci/ciInstanceKlass.cpp ! src/share/vm/ci/ciInstanceKlass.hpp ! src/share/vm/ci/ciMethod.cpp ! src/share/vm/ci/ciMethodBlocks.cpp ! src/share/vm/ci/ciMethodBlocks.hpp ! src/share/vm/ci/ciMethodData.cpp ! src/share/vm/ci/ciMethodData.hpp ! src/share/vm/ci/ciObjectFactory.cpp ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/classfile/dictionary.cpp ! src/share/vm/classfile/javaClasses.cpp ! src/share/vm/classfile/javaClasses.hpp ! src/share/vm/classfile/systemDictionary.cpp ! src/share/vm/classfile/systemDictionary.hpp ! src/share/vm/classfile/verifier.cpp ! src/share/vm/classfile/vmSymbols.cpp ! src/share/vm/classfile/vmSymbols.hpp ! src/share/vm/code/codeCache.hpp ! src/share/vm/code/debugInfo.cpp ! src/share/vm/code/dependencies.cpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/code/scopeDesc.cpp ! src/share/vm/code/vmreg.cpp ! src/share/vm/code/vmreg.hpp ! src/share/vm/compiler/oopMap.cpp ! src/share/vm/compiler/oopMap.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp ! src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep ! src/share/vm/gc_implementation/includeDB_gc_parallelScavenge ! src/share/vm/gc_implementation/includeDB_gc_shared ! src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp ! src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp ! src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.cpp ! src/share/vm/gc_implementation/parNew/parNewGeneration.hpp ! src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp ! src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp ! src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp ! src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp ! src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp ! src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp ! src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp ! src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp ! src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp ! src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp ! src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp ! src/share/vm/gc_implementation/shared/allocationStats.cpp ! src/share/vm/gc_implementation/shared/allocationStats.hpp ! src/share/vm/gc_implementation/shared/immutableSpace.cpp ! src/share/vm/gc_implementation/shared/immutableSpace.hpp ! src/share/vm/gc_implementation/shared/markSweep.cpp ! src/share/vm/gc_implementation/shared/markSweep.hpp ! src/share/vm/gc_implementation/shared/markSweep.inline.hpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp ! src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp ! src/share/vm/gc_implementation/shared/mutableSpace.cpp ! src/share/vm/gc_implementation/shared/mutableSpace.hpp ! src/share/vm/gc_implementation/shared/vmGCOperations.cpp ! src/share/vm/gc_implementation/shared/vmGCOperations.hpp ! src/share/vm/gc_interface/collectedHeap.cpp ! src/share/vm/gc_interface/collectedHeap.hpp ! src/share/vm/gc_interface/collectedHeap.inline.hpp ! src/share/vm/includeDB_compiler1 ! src/share/vm/includeDB_compiler2 ! src/share/vm/includeDB_core ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml ! src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl ! src/share/vm/interpreter/interpreterRuntime.hpp ! src/share/vm/interpreter/oopMapCache.cpp ! src/share/vm/memory/barrierSet.hpp ! src/share/vm/memory/barrierSet.inline.hpp ! src/share/vm/memory/cardTableModRefBS.cpp ! src/share/vm/memory/cardTableModRefBS.hpp ! src/share/vm/memory/cardTableRS.cpp ! src/share/vm/memory/cardTableRS.hpp ! src/share/vm/memory/collectorPolicy.cpp ! src/share/vm/memory/collectorPolicy.hpp ! src/share/vm/memory/compactingPermGenGen.cpp ! src/share/vm/memory/defNewGeneration.cpp ! src/share/vm/memory/defNewGeneration.hpp ! src/share/vm/memory/defNewGeneration.inline.hpp ! src/share/vm/memory/dump.cpp ! src/share/vm/memory/gcLocker.cpp ! src/share/vm/memory/gcLocker.hpp ! src/share/vm/memory/genCollectedHeap.cpp ! src/share/vm/memory/genCollectedHeap.hpp ! src/share/vm/memory/genMarkSweep.cpp ! src/share/vm/memory/genOopClosures.hpp ! src/share/vm/memory/genOopClosures.inline.hpp ! src/share/vm/memory/genRemSet.hpp ! src/share/vm/memory/genRemSet.inline.hpp ! src/share/vm/memory/generation.cpp ! src/share/vm/memory/generation.hpp ! src/share/vm/memory/heap.cpp ! src/share/vm/memory/heapInspection.cpp ! src/share/vm/memory/heapInspection.hpp ! src/share/vm/memory/iterator.hpp ! src/share/vm/memory/modRefBarrierSet.hpp ! src/share/vm/memory/permGen.cpp ! src/share/vm/memory/permGen.hpp ! src/share/vm/memory/referenceProcessor.cpp ! src/share/vm/memory/referenceProcessor.hpp ! src/share/vm/memory/restore.cpp ! src/share/vm/memory/serialize.cpp ! src/share/vm/memory/sharedHeap.cpp ! src/share/vm/memory/space.cpp ! src/share/vm/memory/space.hpp ! src/share/vm/memory/tenuredGeneration.cpp ! src/share/vm/memory/universe.cpp ! src/share/vm/memory/universe.hpp ! src/share/vm/oops/arrayOop.hpp ! src/share/vm/oops/constantPoolKlass.cpp ! src/share/vm/oops/constantPoolKlass.hpp ! src/share/vm/oops/constantPoolOop.hpp ! src/share/vm/oops/cpCacheKlass.cpp ! src/share/vm/oops/cpCacheKlass.hpp ! src/share/vm/oops/cpCacheOop.cpp ! src/share/vm/oops/cpCacheOop.hpp ! src/share/vm/oops/instanceKlass.cpp ! src/share/vm/oops/instanceKlass.hpp ! src/share/vm/oops/instanceKlassKlass.cpp ! src/share/vm/oops/instanceOop.hpp ! src/share/vm/oops/instanceRefKlass.cpp ! src/share/vm/oops/klass.cpp ! src/share/vm/oops/klass.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/markOop.cpp ! src/share/vm/oops/markOop.hpp ! src/share/vm/oops/methodDataKlass.cpp ! src/share/vm/oops/methodDataOop.cpp ! src/share/vm/oops/methodDataOop.hpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/methodOop.hpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlass.hpp ! src/share/vm/oops/objArrayOop.cpp ! src/share/vm/oops/objArrayOop.hpp ! src/share/vm/oops/oop.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.inline.hpp ! src/share/vm/oops/oop.pcgc.inline.hpp ! src/share/vm/oops/oopsHierarchy.hpp ! src/share/vm/opto/addnode.cpp ! src/share/vm/opto/buildOopMap.cpp ! src/share/vm/opto/bytecodeInfo.cpp ! src/share/vm/opto/c2_globals.hpp ! src/share/vm/opto/c2compiler.cpp ! src/share/vm/opto/c2compiler.hpp ! src/share/vm/opto/callnode.cpp ! src/share/vm/opto/callnode.hpp ! src/share/vm/opto/cfgnode.cpp ! src/share/vm/opto/cfgnode.hpp ! src/share/vm/opto/chaitin.cpp ! src/share/vm/opto/chaitin.hpp ! src/share/vm/opto/classes.hpp ! src/share/vm/opto/compile.cpp ! src/share/vm/opto/compile.hpp ! src/share/vm/opto/connode.cpp ! src/share/vm/opto/connode.hpp ! src/share/vm/opto/divnode.cpp ! src/share/vm/opto/doCall.cpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/escape.hpp ! src/share/vm/opto/gcm.cpp ! src/share/vm/opto/graphKit.cpp ! src/share/vm/opto/idealKit.cpp ! src/share/vm/opto/lcm.cpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/locknode.cpp ! src/share/vm/opto/locknode.hpp ! src/share/vm/opto/loopTransform.cpp ! src/share/vm/opto/loopUnswitch.cpp ! src/share/vm/opto/loopnode.cpp ! src/share/vm/opto/loopnode.hpp ! src/share/vm/opto/loopopts.cpp ! src/share/vm/opto/machnode.cpp ! src/share/vm/opto/macro.cpp ! src/share/vm/opto/macro.hpp ! src/share/vm/opto/matcher.cpp ! src/share/vm/opto/matcher.hpp ! src/share/vm/opto/memnode.cpp ! src/share/vm/opto/memnode.hpp ! src/share/vm/opto/mulnode.cpp ! src/share/vm/opto/mulnode.hpp ! src/share/vm/opto/multnode.hpp ! src/share/vm/opto/node.cpp ! src/share/vm/opto/node.hpp ! src/share/vm/opto/opcodes.cpp ! src/share/vm/opto/opcodes.hpp ! src/share/vm/opto/output.cpp ! src/share/vm/opto/parse.hpp ! src/share/vm/opto/parse1.cpp ! src/share/vm/opto/parse2.cpp ! src/share/vm/opto/parse3.cpp ! src/share/vm/opto/parseHelper.cpp ! src/share/vm/opto/phaseX.cpp ! src/share/vm/opto/phaseX.hpp ! src/share/vm/opto/postaloc.cpp ! src/share/vm/opto/subnode.cpp ! src/share/vm/opto/subnode.hpp ! src/share/vm/opto/superword.cpp ! src/share/vm/opto/type.cpp ! src/share/vm/opto/type.hpp ! src/share/vm/opto/vectornode.cpp ! src/share/vm/opto/vectornode.hpp ! src/share/vm/prims/forte.cpp ! src/share/vm/prims/jni.cpp ! src/share/vm/prims/jvm.cpp ! src/share/vm/prims/jvm.h ! src/share/vm/prims/jvmtiRedefineClassesTrace.hpp ! src/share/vm/prims/jvmtiTagMap.cpp ! src/share/vm/prims/unsafe.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/arguments.hpp ! src/share/vm/runtime/atomic.cpp ! src/share/vm/runtime/atomic.hpp ! src/share/vm/runtime/biasedLocking.cpp ! src/share/vm/runtime/deoptimization.cpp ! src/share/vm/runtime/deoptimization.hpp ! src/share/vm/runtime/dtraceJSDT.cpp ! src/share/vm/runtime/dtraceJSDT.hpp ! src/share/vm/runtime/fprofiler.cpp ! src/share/vm/runtime/fprofiler.hpp ! src/share/vm/runtime/frame.cpp ! src/share/vm/runtime/frame.hpp ! src/share/vm/runtime/globals.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/globals_extension.hpp ! src/share/vm/runtime/hpi.cpp ! src/share/vm/runtime/init.cpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/java.hpp ! src/share/vm/runtime/jniHandles.cpp ! src/share/vm/runtime/mutex.cpp ! src/share/vm/runtime/mutex.hpp ! src/share/vm/runtime/mutexLocker.cpp ! src/share/vm/runtime/mutexLocker.hpp ! src/share/vm/runtime/os.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/reflection.cpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/runtime/sharedRuntime.hpp ! src/share/vm/runtime/stubCodeGenerator.cpp ! src/share/vm/runtime/task.cpp ! src/share/vm/runtime/task.hpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/runtime/vframe.cpp ! src/share/vm/runtime/vframe.hpp ! src/share/vm/runtime/vframe_hp.cpp ! src/share/vm/runtime/vmStructs.cpp ! src/share/vm/runtime/vm_operations.hpp ! src/share/vm/runtime/vm_version.cpp ! src/share/vm/runtime/vm_version.hpp ! src/share/vm/services/heapDumper.cpp ! src/share/vm/services/threadService.cpp ! src/share/vm/utilities/copy.hpp ! src/share/vm/utilities/debug.cpp ! src/share/vm/utilities/globalDefinitions.cpp ! src/share/vm/utilities/globalDefinitions.hpp ! src/share/vm/utilities/globalDefinitions_sparcWorks.hpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp ! src/share/vm/utilities/taskqueue.hpp ! src/share/vm/utilities/vmError.cpp ! test/compiler/6659207/Test.java ! test/compiler/6661247/Test.java ! test/compiler/6663621/IVTest.java Changeset: de141433919f Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/de141433919f Added tag jdk7-b30 for changeset d1605aabd0a1 ! .hgtags Changeset: bea6f69c480e Author: gafter Date: 2008-07-06 18:54 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/bea6f69c480e Merge with parent ! src/os/linux/vm/os_linux.cpp From neal at gafter.com Sun Jul 6 20:30:08 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:30:08 +0000 Subject: hg: closures/closures/jaxp: 2 new changesets Message-ID: <20080707033011.A308628AC5@hg.openjdk.java.net> Changeset: 2d94a238a164 Author: xdono Date: 2008-07-02 12:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/2d94a238a164 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! make/Makefile Changeset: 255d64ee287e Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxp/rev/255d64ee287e Added tag jdk7-b30 for changeset 2d94a238a164 ! .hgtags From neal at gafter.com Sun Jul 6 20:30:48 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:30:48 +0000 Subject: hg: closures/closures/jaxws: 2 new changesets Message-ID: <20080707033051.AC62B28ACA@hg.openjdk.java.net> Changeset: 7f2466f8cc70 Author: xdono Date: 2008-07-02 12:55 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/7f2466f8cc70 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! make/Makefile Changeset: f97862382536 Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/jaxws/rev/f97862382536 Added tag jdk7-b30 for changeset 7f2466f8cc70 ! .hgtags From neal at gafter.com Sun Jul 6 20:31:33 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 03:31:33 +0000 Subject: hg: closures/closures/langtools: 6 new changesets Message-ID: <20080707033143.8F77028AD1@hg.openjdk.java.net> Changeset: eaf608c64fec Author: xdono Date: 2008-07-02 12:56 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/eaf608c64fec 6719955: Update copyright year Summary: Update copyright year for files that have been modified in 2008 Reviewed-by: ohair, tbell ! make/build.xml ! make/netbeans/common/standard-ide-actions-no-javadoc.ent ! make/netbeans/common/standard-ide-actions.ent ! src/share/classes/com/sun/tools/apt/main/JavaCompiler.java ! src/share/classes/com/sun/tools/apt/main/Main.java ! src/share/classes/com/sun/tools/classfile/AccessFlags.java ! src/share/classes/com/sun/tools/classfile/Annotation.java ! src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java ! src/share/classes/com/sun/tools/classfile/Attribute.java ! src/share/classes/com/sun/tools/classfile/Attributes.java ! src/share/classes/com/sun/tools/classfile/CharacterRangeTable_attribute.java ! src/share/classes/com/sun/tools/classfile/ClassFile.java ! src/share/classes/com/sun/tools/classfile/ClassReader.java ! src/share/classes/com/sun/tools/classfile/Code_attribute.java ! src/share/classes/com/sun/tools/classfile/ConstantPool.java ! src/share/classes/com/sun/tools/classfile/ConstantValue_attribute.java ! src/share/classes/com/sun/tools/classfile/DefaultAttribute.java ! src/share/classes/com/sun/tools/classfile/Deprecated_attribute.java ! src/share/classes/com/sun/tools/classfile/Descriptor.java ! src/share/classes/com/sun/tools/classfile/EnclosingMethod_attribute.java ! src/share/classes/com/sun/tools/classfile/Exceptions_attribute.java ! src/share/classes/com/sun/tools/classfile/Field.java ! src/share/classes/com/sun/tools/classfile/InnerClasses_attribute.java ! src/share/classes/com/sun/tools/classfile/LineNumberTable_attribute.java ! src/share/classes/com/sun/tools/classfile/LocalVariableTable_attribute.java ! src/share/classes/com/sun/tools/classfile/LocalVariableTypeTable_attribute.java ! src/share/classes/com/sun/tools/classfile/Method.java ! src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java ! src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java ! src/share/classes/com/sun/tools/classfile/Module_attribute.java ! src/share/classes/com/sun/tools/classfile/OpCodes.java ! src/share/classes/com/sun/tools/classfile/RuntimeAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeInvisibleAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeInvisibleParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeVisibleAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeVisibleParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/Signature.java ! src/share/classes/com/sun/tools/classfile/Signature_attribute.java ! src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java ! src/share/classes/com/sun/tools/classfile/SourceFile_attribute.java ! src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java ! src/share/classes/com/sun/tools/classfile/StackMap_attribute.java ! src/share/classes/com/sun/tools/classfile/Synthetic_attribute.java ! src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java ! src/share/classes/com/sun/tools/javac/api/JavacTool.java ! src/share/classes/com/sun/tools/javac/code/Lint.java ! src/share/classes/com/sun/tools/javac/code/Symbol.java ! src/share/classes/com/sun/tools/javac/code/Type.java ! src/share/classes/com/sun/tools/javac/code/Types.java ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/comp/Check.java ! src/share/classes/com/sun/tools/javac/comp/Infer.java ! src/share/classes/com/sun/tools/javac/comp/Lower.java ! src/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/share/classes/com/sun/tools/javac/comp/Resolve.java ! src/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/share/classes/com/sun/tools/javac/file/BaseFileObject.java ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/file/Old199.java ! src/share/classes/com/sun/tools/javac/file/Paths.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/main/JavacOption.java ! src/share/classes/com/sun/tools/javac/main/Main.java ! src/share/classes/com/sun/tools/javac/main/OptionName.java ! src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java ! src/share/classes/com/sun/tools/javac/parser/Parser.java ! src/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java ! src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java ! src/share/classes/com/sun/tools/javac/util/Log.java ! src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java ! src/share/classes/com/sun/tools/javadoc/JavadocTool.java ! src/share/classes/com/sun/tools/javap/AnnotationWriter.java ! src/share/classes/com/sun/tools/javap/AttributeWriter.java ! src/share/classes/com/sun/tools/javap/BasicWriter.java ! src/share/classes/com/sun/tools/javap/ClassWriter.java ! src/share/classes/com/sun/tools/javap/CodeWriter.java ! src/share/classes/com/sun/tools/javap/ConstantWriter.java ! src/share/classes/com/sun/tools/javap/Context.java ! src/share/classes/com/sun/tools/javap/DisassemblerTool.java ! src/share/classes/com/sun/tools/javap/InternalError.java ! src/share/classes/com/sun/tools/javap/JavapFileManager.java ! src/share/classes/com/sun/tools/javap/JavapTask.java ! src/share/classes/com/sun/tools/javap/Main.java ! src/share/classes/com/sun/tools/javap/Options.java ! src/share/classes/sun/tools/javap/ClassData.java ! src/share/classes/sun/tools/javap/FieldData.java ! src/share/classes/sun/tools/javap/InnerClassData.java ! src/share/classes/sun/tools/javap/JavapPrinter.java ! src/share/classes/sun/tools/javap/Main.java ! src/share/classes/sun/tools/javap/MethodData.java ! src/share/classes/sun/tools/javap/Tables.java ! src/share/classes/sun/tools/javap/TypeSignature.java ! test/tools/javac/6304921/TestLog.java ! test/tools/javac/6341866/T6341866.java ! test/tools/javac/T6358024.java ! test/tools/javac/T6358166.java ! test/tools/javac/T6358168.java ! test/tools/javac/api/6431257/T6431257.java ! test/tools/javac/api/T6358786.java ! test/tools/javac/api/TestResolveIdent.java ! test/tools/javac/generics/Casting5.java ! test/tools/javac/generics/InheritanceConflict.java ! test/tools/javac/generics/InheritanceConflict2.java ! test/tools/javac/generics/wildcards/T6450290.java ! test/tools/javac/util/filemanager/TestName.java ! test/tools/javap/OptionTest.java Changeset: 1ffdb836f632 Author: xdono Date: 2008-07-03 11:01 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/1ffdb836f632 Added tag jdk7-b30 for changeset eaf608c64fec ! .hgtags Changeset: 07c916ecfc71 Author: tbell Date: 2008-07-04 15:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/07c916ecfc71 Merge ! src/share/classes/com/sun/tools/javac/comp/Check.java ! src/share/classes/com/sun/tools/javac/file/BaseFileObject.java ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/util/Log.java ! src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java ! src/share/classes/com/sun/tools/javap/JavapFileManager.java ! test/tools/javac/T6358024.java ! test/tools/javac/T6358166.java ! test/tools/javac/T6358168.java Changeset: 1139d105b576 Author: gafter Date: 2008-07-06 18:57 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/1139d105b576 Merge copyright changes ! .hgtags ! make/build.xml ! make/netbeans/common/standard-ide-actions-no-javadoc.ent ! make/netbeans/common/standard-ide-actions.ent ! src/share/classes/com/sun/tools/apt/main/JavaCompiler.java ! src/share/classes/com/sun/tools/apt/main/Main.java ! src/share/classes/com/sun/tools/classfile/AccessFlags.java ! src/share/classes/com/sun/tools/classfile/Annotation.java ! src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java ! src/share/classes/com/sun/tools/classfile/Attribute.java ! src/share/classes/com/sun/tools/classfile/Attributes.java ! src/share/classes/com/sun/tools/classfile/CharacterRangeTable_attribute.java ! src/share/classes/com/sun/tools/classfile/ClassFile.java ! src/share/classes/com/sun/tools/classfile/ClassReader.java ! src/share/classes/com/sun/tools/classfile/Code_attribute.java ! src/share/classes/com/sun/tools/classfile/ConstantPool.java ! src/share/classes/com/sun/tools/classfile/ConstantValue_attribute.java ! src/share/classes/com/sun/tools/classfile/DefaultAttribute.java ! src/share/classes/com/sun/tools/classfile/Deprecated_attribute.java ! src/share/classes/com/sun/tools/classfile/Descriptor.java ! src/share/classes/com/sun/tools/classfile/EnclosingMethod_attribute.java ! src/share/classes/com/sun/tools/classfile/Exceptions_attribute.java ! src/share/classes/com/sun/tools/classfile/Field.java ! src/share/classes/com/sun/tools/classfile/InnerClasses_attribute.java ! src/share/classes/com/sun/tools/classfile/LineNumberTable_attribute.java ! src/share/classes/com/sun/tools/classfile/LocalVariableTable_attribute.java ! src/share/classes/com/sun/tools/classfile/LocalVariableTypeTable_attribute.java ! src/share/classes/com/sun/tools/classfile/Method.java ! src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java ! src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java ! src/share/classes/com/sun/tools/classfile/Module_attribute.java ! src/share/classes/com/sun/tools/classfile/OpCodes.java ! src/share/classes/com/sun/tools/classfile/RuntimeAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeInvisibleAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeInvisibleParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeVisibleAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/RuntimeVisibleParameterAnnotations_attribute.java ! src/share/classes/com/sun/tools/classfile/Signature.java ! src/share/classes/com/sun/tools/classfile/Signature_attribute.java ! src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java ! src/share/classes/com/sun/tools/classfile/SourceFile_attribute.java ! src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java ! src/share/classes/com/sun/tools/classfile/StackMap_attribute.java ! src/share/classes/com/sun/tools/classfile/Synthetic_attribute.java ! src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java ! src/share/classes/com/sun/tools/javac/api/JavacTool.java Changeset: d32df898e692 Author: gafter Date: 2008-07-06 18:59 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/d32df898e692 Complete merge ! src/share/classes/com/sun/tools/javac/code/Symbol.java Changeset: d6aa352a0819 Author: gafter Date: 2008-07-06 19:37 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/d6aa352a0819 Merge copyright updates ! src/share/classes/com/sun/tools/javac/code/Lint.java ! src/share/classes/com/sun/tools/javac/code/Symbol.java ! src/share/classes/com/sun/tools/javac/code/Type.java ! src/share/classes/com/sun/tools/javac/code/Types.java ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/comp/Check.java ! src/share/classes/com/sun/tools/javac/comp/Infer.java ! src/share/classes/com/sun/tools/javac/comp/Lower.java ! src/share/classes/com/sun/tools/javac/comp/MemberEnter.java ! src/share/classes/com/sun/tools/javac/comp/TransTypes.java ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/parser/Parser.java ! src/share/classes/com/sun/tools/javac/parser/Scanner.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties ! src/share/classes/com/sun/tools/javac/util/Log.java ! src/share/classes/com/sun/tools/javadoc/JavadocTool.java From neal at gafter.com Sun Jul 6 22:26:40 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 05:26:40 +0000 Subject: hg: closures/closures/langtools: See Bloch's "Closures Controversy", slide 33, bottom, which Message-ID: <20080707052641.C357328AD8@hg.openjdk.java.net> Changeset: 0c9fdfcbeb0a Author: gafter Date: 2008-07-06 22:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/0c9fdfcbeb0a See Bloch's "Closures Controversy", slide 33, bottom, which audiences have taken as teaching that closures diagnostics are required to be reported in terms of wildcards. It ain't so! ! src/share/classes/com/sun/tools/javac/code/Types.java + test/tools/javac/closures/Bloch2.java + test/tools/javac/closures/Bloch2.out From neal at gafter.com Sun Jul 6 23:17:07 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 07 Jul 2008 06:17:07 +0000 Subject: hg: closures/closures/langtools: The type of a closure should be reported with the appropriate token Message-ID: <20080707061709.008B428ADD@hg.openjdk.java.net> Changeset: b965e47522e3 Author: gafter Date: 2008-07-06 23:16 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/b965e47522e3 The type of a closure should be reported with the appropriate token depending on whether it was written as a restricted closure or not. Fix a small regression involving captured return types. ! src/share/classes/com/sun/tools/javac/code/Type.java ! src/share/classes/com/sun/tools/javac/code/Types.java + test/tools/javac/closures/Mahieu17.java + test/tools/javac/closures/Mahieu18.java + test/tools/javac/closures/Mahieu18.out From neal at gafter.com Sun Jul 6 23:21:23 2008 From: neal at gafter.com (Neal Gafter) Date: Sun, 6 Jul 2008 23:21:23 -0700 Subject: Closure conversion vs silly type parameter In-Reply-To: <5F65A52B-38F1-4F95-982C-E061C8BCCC58@twistedbanana.demon.co.uk> References: <65BEF6E1-5CD6-4738-81CF-E6D82C15A8BC@twistedbanana.demon.co.uk> <15e8b9d20805132300n5191808boa0d49d8c1dcbdc77@mail.gmail.com> <5F65A52B-38F1-4F95-982C-E061C8BCCC58@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807062321h199a9119t1c664904402bd401@mail.gmail.com> Mark- This has been fixed. Regards, Neal On Wed, May 14, 2008 at 1:18 AM, Mark Mahieu wrote: > Thanks Neal. I also ran into this: > > > public class WrongFoundType { > > static void}> void foo(T block) { > block = { ==> }; > } > } > > > Attempting to compile it yields an 'incompatible types' error as expected, > but the 'found' type substituted into the error message is incorrect (should > be '{ ==> void }' not '{ => void }'): > > > WrongFoundType.java:4: incompatible types > found : { => void} > required: T > block = { ==> }; > ^ > 1 error > > > Regards, > > Mark > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080706/2152fc27/attachment.html From neal at gafter.com Sun Jul 6 23:44:41 2008 From: neal at gafter.com (Neal Gafter) Date: Sun, 6 Jul 2008 23:44:41 -0700 Subject: jsr166y.forkjoin vs closures - ambiguous method reference In-Reply-To: References: Message-ID: <15e8b9d20807062344r57bba72enbb0025a1123fcda5@mail.gmail.com> Mark- I'm going through the reported issues, and I see I haven't responded to the enclosed report. I'm not sure exactly how best to proceed on this issue. Your suggestion seems more based on the C++ overload resolution "best match" rules, but overload resolution doesn't work that way in Java. Which of several candidates is most specific is computed without reference to the actual arguments. Overload resolution is already a three-pass affair, and I don't relish adding new passes. The three passes are (1) no boxing or varargs, (2) boxing but not varargs, and (3) both boxing and varargs allowed. One possibility would be to have the closure conversion be sensitive to the boxing-allowed/not-allowed phase flag when passed directly as an argument to a method, which means that there are then two different versions of the closure conversion. Another possibility would be to disallow boxing in the closure conversion for restricted closures, and allow them in unrestricted closures; this parallels the closest existing language constructs to which they correspond (i.e. overriding in an anonymous class can't use an unboxed return type, but you can use a primitive loop index in a for-each loop). I suspect the right solution is to make the closure conversion sensitive to the overload resolution pass, but for now I'm just going to acknowledge that this is an open issue. Regards, Neal On Sat, Nov 24, 2007 at 5:57 AM, Mark Mahieu wrote: > Neal, > > Playing with the closures version of jsr166y I've run into something which > I think should compile, but doesn't. I've taken the example from the > javadoc for jsr166z.forkjoin.ParallelArray, and tried to pass closure > literals into the calls to withFilter() and withMapping(): > > import jsr166z.forkjoin.*; > > public class StudentStatistics { > > ParallelArray students = null; > // ... > public double getMaxSeniorGpa() { > > return students.withFilter({Student s => s.credits > > 90}) > .withMapping({Student s => s.gpa}) > .max(); > } > } > > class Student { > int credits; > double gpa; > } > > > However javac complains about the call to the overloaded withMapping() > method: > > StudentStatistics.java:10: reference to withMapping is ambiguous, > both method withMapping({U => V}) in > jsr166z.forkjoin.ParallelArray.WithMapping and method > withMapping({T => double}) in > jsr166z.forkjoin.ParallelArray.WithFilter match > .withMapping({Student s => s.gpa}) > ^ > 1 error > > > If I explicitly assign my closure literal to a variable of type > {Student=>double} and pass in that variable instead, it compiles (and > appears to resolve to the correct method). A stand-alone test case exhibits > the same behaviour: > > public class AmbiguousMethodReference { > > public static void main(String[] args) { > > // this is fine > { => double } fn = { => 2.0 }; > foo(fn).exec(); > > // compiler says 'reference to foo is ambiguous' > foo({ => 2.0 }).exec(); > } > > static Foo foo({ => T } fn) { > return new Foo(); > } > > static DoubleFoo foo({ => double } fn) { > return new DoubleFoo(); > } > > static class Foo { > void exec() { } > } > > static class DoubleFoo { > void exec() { System.out.println("success"); } > } > } > > > In this test case, it looks to me as though javac is viewing both > javax.lang.function.D and javax.lang.function.O as > equally specific candidate types for the closure literal, but I think what > I'm wanting is for the compiler to try javax.lang.function.D as the > more specific type first, and then only if it fails to find a match to fall > back on javax.lang.function.O. > > Incidentally, I also tried an explicit cast but javac doesn't like that at > all - should casts to function types be valid? > > public class CastToFunctionType { > > public static void main(String[] args) { > > { => double } foo = ({ => double }) { => 2.0 }; > } > } > > > > Regards, > > Mark > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080706/304fedca/attachment.html From neal at gafter.com Mon Jul 7 00:07:16 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 00:07:16 -0700 Subject: Alternative syntax for closures Message-ID: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> One idea we tossed around a few months ago, without any real conclusion, was to replace the curly braces with parens. Things have changed a bit since then; I'd now use a dash-greater instead of equals-greater. I think we could consider using the parens for restricted closures (for those of you who haven't been paying attention, restricted closures can't use return, break, or continue to a target outside the closure) and curly braces for the unrestricted form. *RestrictedLambdaExpression* ( *FormalParameterDecls**opt* *?**>* *BlockStatementsopt **Expression**opt** *) *RestrictedFunctionType* ( *TypeList**opt* *?**>* *Type* *ThrowsClause**opt* ) *UnrestrictedLambdaExpression* { *FormalParameterDecls**opt* *?**>* *BlockStatementsopt **Expression**opt** *} *UnrestrictedFunctionType* { *TypeList**opt* *?**>* *Type* *ThrowsClause**opt* } For example (this is *not* intended to be a motivational example): * (int, int **?**> int) plus = (int x, int y **?**> x+y);* *{ Answer ?**> void } block = { **Answer answer ?**> System.out.println(answer); };* The parens instead of curly braces emphasize to the reader that it is an expression closure, which is one of the principal use cases for the restricted form. Without an active working group, I don't expect to make any major syntax changes in the prototype, but I wanted to get this out there for you to think about. Regards, Neal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/c6cd9a22/attachment.html From neal at gafter.com Mon Jul 7 01:06:05 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 01:06:05 -0700 Subject: Slightly incorrect diagnostic In-Reply-To: <887297F4-2B39-4700-A843-7B977B6B50ED@twistedbanana.demon.co.uk> References: <887297F4-2B39-4700-A843-7B977B6B50ED@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807070106x10d310e1v68cce77cee0bda6e@mail.gmail.com> After analysis, it appears that the compiler's diagnostic, while admittedly a bit puzzling, is technically correct. The type of this closure literal is the interface type *{ ==> void }*, which inherits its *invoke* method from *{ ==> void }.* Therefore the compiler is technically correct in reporting which method it is unable to apply to the argument "1". On the other hand, we should do better. On Thu, May 15, 2008 at 2:05 PM, Mark Mahieu wrote: > I've found another example where the compiler gives a slightly misleading > compilation error: > > > public class WrongType { > > public static void main(String[] args) { > {=>}.invoke(1); > } > } > > > The message refers to an unrestricted type, yet I only have a restricted > closure: > > WrongType.java:4: invoke() in { ==> void} cannot be applied to (int) > {=>}.invoke(1); > ^ > 1 error > > > > Regards, > > Mark > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/aeb2751c/attachment.html From neal at gafter.com Mon Jul 7 01:12:14 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 01:12:14 -0700 Subject: Closure conversion vs inherited and redeclared method In-Reply-To: References: Message-ID: <15e8b9d20807070112h4ab08004p92b076735652459@mail.gmail.com> Mark- Sorry to take so long to respond to this. This definitely looks like a bug. Thanks for letting me know. I'll have it fixed shortly. Regards, Neal On Thu, May 15, 2008 at 2:57 PM, Mark Mahieu wrote: > Closure conversion doesn't seem to work correctly when the target interface > type inherits its single method and redeclares it: > > > public class Redeclared { > > interface Foo1 { > void foo(); > } > > interface Foo2 extends Foo1 { > void foo(); > } > > public static void main(String[] args) { > Foo1 foo1 = {=>}; > Foo2 foo2 = {=>}; > } > } > > > > Redeclared.java:13: incompatible types > found : { => void} > required: Redeclared.Foo2 > Foo2 foo2 = {=>}; > ^ > 1 error > > > > Regards, > > Mark > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/3cde2bf4/attachment.html From neal at gafter.com Mon Jul 7 01:22:46 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 01:22:46 -0700 Subject: Exception transparency vs constructors In-Reply-To: <15e8b9d20805151922q1eee4d2cw16d660e38f48d456@mail.gmail.com> References: <15e8b9d20805151922q1eee4d2cw16d660e38f48d456@mail.gmail.com> Message-ID: <15e8b9d20807070122m2d803c81gb4e592e79f878519@mail.gmail.com> Mark- This is indeed a bug in the underlying compiler. Generic constructors are pretty rare, and type parameters in throws clauses even more so. Apparently the combination doesn't currently work in javac. The following won't compile. *public class Hello { static class Foo {} Hello(Foo foo) throws X {} public static void main(String[] args) throws Exception { new Hello(new Foo()); } }* I've reported this as a bug against javac. Regards, Neal On Thu, May 15, 2008 at 7:22 PM, Neal Gafter wrote: > Got it, thanks! I suspect some of these are symptoms of existing problems, > but either way I'll track them down. > > Regards, > Neal > > > On Thu, May 15, 2008 at 6:22 PM, Mark Mahieu < > mark at twistedbanana.demon.co.uk> wrote: > >> It looks like exception transparency isn't working quite right with >> constructors - I think the following class should compile, but it doesn't: >> >> >> public class ExTrans { >> >> ExTrans({=> void throws X} block) throws X { >> block.invoke(); >> } >> >> public static void main(String[] args) throws Exception { >> new ExTrans({=> throw new Exception(); }); >> } >> } >> >> >> >> ExTrans.java:8: unreported exception X; must be caught or declared to be >> thrown >> new ExTrans({=> throw new Exception(); }); >> ^ >> 1 error >> >> >> >> Regards, >> >> Mark >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/0cf78382/attachment.html From neal at gafter.com Mon Jul 7 01:32:09 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 01:32:09 -0700 Subject: Eta expansion and unrestricted wildcard In-Reply-To: <20080517141226.r6a3dc6ogc4w4o0k@wimap.feld.cvut.cz> References: <20080517141226.r6a3dc6ogc4w4o0k@wimap.feld.cvut.cz> Message-ID: <15e8b9d20807070132r3e042c23g3b3126c52505338c@mail.gmail.com> Zdenek- Sorry to take so long to get back to you on this. This is definitely a bug, and I'll try to get it fixed in the next update. Regards, Neal On Sat, May 17, 2008 at 5:12 AM, wrote: > Hi, > > unrestricted wildcard in a method reference does not compile: > > interface Saveable { > void saveAll(); > void save(T t); > T restore(); > } > > public static void main(String[] args) throws Exception { > // this is ok > { Saveable => void } p1 = { Saveable s => s.saveAll(); }; > // this does not compile > //{ Saveable => void } p2 = Saveable#saveAll(); > } > > > Z. > -- > Zdenek Tronicek > Department of Computer Science and Engineering > Prague tel: +420 2 2435 7410 > http://cs.felk.cvut.cz/~tronicek > > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/7c351cbc/attachment.html From forax at univ-mlv.fr Mon Jul 7 06:19:45 2008 From: forax at univ-mlv.fr (=?windows-1252?Q?R=E9mi_Forax?=) Date: Mon, 07 Jul 2008 15:19:45 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> Message-ID: <487217F1.4030306@univ-mlv.fr> Neal Gafter a ?crit : > One idea we tossed around a few months ago, without any real > conclusion, was to replace the curly braces with parens. Things have > changed a bit since then; I'd now use a dash-greater instead of > equals-greater. I think we could consider using the parens for > restricted closures (for those of you who haven't been paying > attention, restricted closures can't use return, break, or continue to > a target outside the closure) and curly braces for the unrestricted form. > > /RestrictedLambdaExpression/ > ( /FormalParameterDecls////_/opt/ /// *?**>* ////BlockStatements_/opt > / ////////Expression///////_/opt/ /////// ////) > /RestrictedFunctionType/ > ( /TypeList////_/opt/ /// *?**>* /Type/ /ThrowsClause////_/opt/ /// ) > > /UnrestrictedLambdaExpression/ > { /FormalParameterDecls////_/opt/ /// *?**>* ////BlockStatements_/opt > / ////////Expression///////_/opt/ /////// ////} > /UnrestrictedFunctionType/ > { /TypeList////_/opt/ /// *?**>* /Type/ /ThrowsClause////_/opt/ /// } > > For example (this is /not/ intended to be a motivational example): > > *(int, int **?**> int) plus = (int x, int y **?**> x+y);* > *{ Answer ?**> void } block = { **Answer answer ?**> > System.out.println(answer); };* > > The parens instead of curly braces emphasize to the reader that it is > an expression closure, which is one of the principal use cases for the > restricted form. > > Without an active working group, I don't expect to make any major > syntax changes in the prototype, but I wanted to get this out there > for you to think about. > > Regards, > Neal I've just written a blog about an alternative syntax: http://weblogs.java.net/blog/forax/archive/2008/07/alternative_syn.html Remi From neal at gafter.com Mon Jul 7 08:22:29 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 08:22:29 -0700 Subject: Alternative syntax for closures In-Reply-To: <487217F1.4030306@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> Message-ID: <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> On Mon, Jul 7, 2008 at 6:19 AM, R?mi Forax wrote: > I've just written a blog about an alternative syntax: > http://weblogs.java.net/blog/forax/archive/2008/07/alternative_syn.html That's nice, but it doesn't really help evaluate this alternative. If your proposal, I see you use, but don't define, the syntax for function types. I see you allow referring to a method by its simple name as a closure, but I don't know what name lookup rules you have in mind that would make that possible. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/df806942/attachment.html From mark at twistedbanana.demon.co.uk Mon Jul 7 11:58:37 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Mon, 7 Jul 2008 19:58:37 +0100 Subject: Slightly incorrect diagnostic In-Reply-To: <15e8b9d20807070106x10d310e1v68cce77cee0bda6e@mail.gmail.com> References: <887297F4-2B39-4700-A843-7B977B6B50ED@twistedbanana.demon.co.uk> <15e8b9d20807070106x10d310e1v68cce77cee0bda6e@mail.gmail.com> Message-ID: <95E2D4AC-B94A-4BED-BC14-284CF5155A58@twistedbanana.demon.co.uk> Ah, yes I see - thanks for the explanation! I'd somehow got it into my head that the restricted interface types also (re)declare their invoke method, rather than just inherit it. On 7 Jul 2008, at 09:06, Neal Gafter wrote: > After analysis, it appears that the compiler's diagnostic, while > admittedly a bit puzzling, is technically correct. The type of > this closure literal is the interface type { ==> void }, which > inherits its invoke method from { ==> void }. Therefore the > compiler is technically correct in reporting which method it is > unable to apply to the argument "1". > > On the other hand, we should do better. > > On Thu, May 15, 2008 at 2:05 PM, Mark Mahieu > wrote: > I've found another example where the compiler gives a slightly > misleading compilation error: > > > public class WrongType { > > public static void main(String[] args) { > {=>}.invoke(1); > } > } > > > The message refers to an unrestricted type, yet I only have a > restricted closure: > > WrongType.java:4: invoke() in { ==> void} cannot be applied to (int) > {=>}.invoke(1); > ^ > 1 error > > > > Regards, > > Mark > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/42b5a993/attachment.html From neal at gafter.com Mon Jul 7 12:05:28 2008 From: neal at gafter.com (Neal Gafter) Date: Mon, 7 Jul 2008 12:05:28 -0700 Subject: Slightly incorrect diagnostic In-Reply-To: <95E2D4AC-B94A-4BED-BC14-284CF5155A58@twistedbanana.demon.co.uk> References: <887297F4-2B39-4700-A843-7B977B6B50ED@twistedbanana.demon.co.uk> <15e8b9d20807070106x10d310e1v68cce77cee0bda6e@mail.gmail.com> <95E2D4AC-B94A-4BED-BC14-284CF5155A58@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807071205k2af9a76eub17ff5385a141fbc@mail.gmail.com> On Mon, Jul 7, 2008 at 11:58 AM, Mark Mahieu wrote: > Ah, yes I see - thanks for the explanation! > I'd somehow got it into my head that the restricted interface types also > (re)declare their invoke method, rather than just inherit it. > Overriding the invoke method in the restricted interface would be a very good idea. I just didn't think of it. Thanks! Regards, Neal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080707/f4048ae8/attachment.html From neal at gafter.com Tue Jul 8 00:01:57 2008 From: neal at gafter.com (neal at gafter.com) Date: Tue, 08 Jul 2008 07:01:57 +0000 Subject: hg: closures/closures/langtools: 2 new changesets Message-ID: <20080708070200.84E3428C59@hg.openjdk.java.net> Changeset: e7a8bdf18063 Author: gafter Date: 2008-07-07 00:51 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/e7a8bdf18063 1. The closure conversion from an unrestricted closure to a restricted type doesn't exist. It used to exist as a conversion but generate an error, which had unfortunate effects on overload resolution. 2. Eta expressions produce restricted closures. ! src/share/classes/com/sun/tools/javac/code/Type.java ! src/share/classes/com/sun/tools/javac/code/Types.java + test/tools/javac/closures/Mahieu19.java Changeset: ba0c588680a8 Author: gafter Date: 2008-07-07 23:45 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/ba0c588680a8 Resolved some cases that would cause a failure to parse or a crash in semantic processing of eta expansion expressions in which the qualifying type has a wildcard argument. ! src/share/classes/com/sun/tools/javac/comp/DeClosure.java ! src/share/classes/com/sun/tools/javac/parser/Parser.java ! test/tools/javac/closures/ParseEta.java From neal at gafter.com Tue Jul 8 00:02:26 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 8 Jul 2008 00:02:26 -0700 Subject: Eta expansion and unrestricted wildcard In-Reply-To: <20080517141226.r6a3dc6ogc4w4o0k@wimap.feld.cvut.cz> References: <20080517141226.r6a3dc6ogc4w4o0k@wimap.feld.cvut.cz> Message-ID: <15e8b9d20807080002w20e2433g393fc4ba4d6ba864@mail.gmail.com> Zdenek- This has now been fixed. Regards, Neal On Sat, May 17, 2008 at 5:12 AM, wrote: > Hi, > > unrestricted wildcard in a method reference does not compile: > > interface Saveable { > void saveAll(); > void save(T t); > T restore(); > } > > public static void main(String[] args) throws Exception { > // this is ok > { Saveable => void } p1 = { Saveable s => s.saveAll(); }; > // this does not compile > //{ Saveable => void } p2 = Saveable#saveAll(); > } > > > Z. > -- > Zdenek Tronicek > Department of Computer Science and Engineering > Prague tel: +420 2 2435 7410 > http://cs.felk.cvut.cz/~tronicek > > > > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080708/29ca5d41/attachment.html From neal at gafter.com Tue Jul 8 00:07:20 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 8 Jul 2008 00:07:20 -0700 Subject: Closure conversion vs overloading In-Reply-To: <5C2BD32D-3644-42D4-9974-3EEB90793995@twistedbanana.demon.co.uk> References: <5C2BD32D-3644-42D4-9974-3EEB90793995@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807080007t3efadbccnea710b7603140554@mail.gmail.com> Mark- This issue has bee fixed. Regards, Neal On Mon, Feb 25, 2008 at 3:04 PM, Mark Mahieu wrote: > Neal, > > I'm not quite sure what to make of this one - it feels like a bug but I > could well be missing something. I have a class with an overloaded method > 'foo', one version having a single parameter of type {=>void} and the second > having a single parameter of type {==>void}. Intuitively, I'd expect to be > able to call foo passing a restricted or an unrestricted closure literal, > since I can do so with an object of restricted or unrestricted function > type. However, the unrestricted version fails to compile - javac appears to > select the 'unrestricted version' of foo, which I didn't expect. > > I'm imagining a scenario whereby an API can provide two versions of such a > method, with the one accepting the restricted type being able to make use of > concurrent operations, and the compiler would be able to select the most > appropriate automatically. > > The example also attempts to invoke foo using the control invocation > syntax, but this doesn't compile either - perhaps for the same reason the > 'normal' invocation doesn't? > > > Example is below: > > > public class Overload { > > public static void main(String[] args) { > > @Shared int restrictedCount = 0; > int unrestrictedCount = 0; > > {=>void} restricted = {=> restrictedCount++; }; > {==>void} unrestricted = {==> unrestrictedCount++; }; > > foo(restricted); > foo(unrestricted); > > foo({=> restrictedCount++; }); > foo({==> unrestrictedCount++; }); // fails to compile > > foo() { // fails to compile > unrestrictedCount++; > } > > if (restrictedCount != 2) > throw new AssertionError(); > if (unrestrictedCount != 3) > throw new AssertionError(); > } > > static void foo({=>void} block) { > block.invoke(); > } > > static void foo({==>void} block) { > block.invoke(); > } > } > > > And the compilation errors I get with the latest prototype: > > Overload.java:15: cannot assign an unrestricted closure to a restricted > interface type > foo({==> unrestrictedCount++; }); > ^ > Overload.java:17: cannot use the control invocation syntax with a method > that receives a restricted function > foo() { > ^ > 2 errors > > > > Mark > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080708/7fc9e2f6/attachment.html From forax at univ-mlv.fr Tue Jul 8 00:42:31 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 08 Jul 2008 09:42:31 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> Message-ID: <48731A67.80704@univ-mlv.fr> Neal Gafter a ?crit : > On Mon, Jul 7, 2008 at 6:19 AM, R?mi Forax > wrote: > > I've just written a blog about an alternative syntax: > http://weblogs.java.net/blog/forax/archive/2008/07/alternative_syn.html > > > That's nice, but it doesn't really help evaluate this alternative. It's just a syntax alternative, not a semantic alternative to BGGA. I don't like the fact BGGA use curly braces to define an expression, use a non natural (non Javaish) order between return type and parameter types in function type syntax and use two different types for restricted/unrestricted function types which is too complex. Furthermore, i don't like exception type parameter, too complex too, that why i've proposed a different syntax for method that takes an unrestricted closure, this allow to perform exception transparency seamlessly and avoid create a type for unrestricted function type (like T... which is only available in method declaration). > > If your proposal, I see you use, but don't define, the syntax for > function types. ok, fixed. > I see you allow referring to a method by its simple name as a closure, > but I don't know what name lookup rules you have in mind that would > make that possible. > ??, method name lookup is defined by 15.12.2 (JLS3), i don't want to change it. R?mi From neal at gafter.com Tue Jul 8 06:58:04 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 8 Jul 2008 06:58:04 -0700 Subject: Alternative syntax for closures In-Reply-To: <48731A67.80704@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> Message-ID: <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> On Tue, Jul 8, 2008 at 12:42 AM, R?mi Forax wrote: > Furthermore, i don't like exception type parameter, too complex too, that > why i've proposed > a different syntax for method that takes an unrestricted closure, this > allow to > perform exception transparency seamlessly and avoid create a type for > unrestricted function type > (like T... which is only available in method declaration). I'd love to see the semantic rules that you have in mind to achieve exception transparency. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080708/115bb59b/attachment.html From neal at gafter.com Tue Jul 8 07:00:12 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 8 Jul 2008 07:00:12 -0700 Subject: Exception transparency vs constructors In-Reply-To: <15e8b9d20807070122m2d803c81gb4e592e79f878519@mail.gmail.com> References: <15e8b9d20805151922q1eee4d2cw16d660e38f48d456@mail.gmail.com> <15e8b9d20807070122m2d803c81gb4e592e79f878519@mail.gmail.com> Message-ID: <15e8b9d20807080700w6dc8abc0xfbd1e9d50041d9ff@mail.gmail.com> Mark- FYI, the new javac bug report is 6723444 and will appear at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6723444 within a few days. Regards, Neal On Mon, Jul 7, 2008 at 1:22 AM, Neal Gafter wrote: > Mark- > > This is indeed a bug in the underlying compiler. Generic constructors are > pretty rare, and type parameters in throws clauses even more so. Apparently > the combination doesn't currently work in javac. The following won't > compile. > > *public class Hello { > static class Foo {} > > Hello(Foo foo) throws X {} > > public static void main(String[] args) throws Exception { > new Hello(new Foo()); > } > }* > > I've reported this as a bug against javac. > > Regards, > Neal > > > On Thu, May 15, 2008 at 7:22 PM, Neal Gafter wrote: > >> Got it, thanks! I suspect some of these are symptoms of existing >> problems, but either way I'll track them down. >> >> Regards, >> Neal >> >> >> On Thu, May 15, 2008 at 6:22 PM, Mark Mahieu < >> mark at twistedbanana.demon.co.uk> wrote: >> >>> It looks like exception transparency isn't working quite right with >>> constructors - I think the following class should compile, but it doesn't: >>> >>> >>> public class ExTrans { >>> >>> ExTrans({=> void throws X} block) throws X { >>> block.invoke(); >>> } >>> >>> public static void main(String[] args) throws Exception { >>> new ExTrans({=> throw new Exception(); }); >>> } >>> } >>> >>> >>> >>> ExTrans.java:8: unreported exception X; must be caught or declared to be >>> thrown >>> new ExTrans({=> throw new Exception(); }); >>> ^ >>> 1 error >>> >>> >>> >>> Regards, >>> >>> Mark >>> >>> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080708/7b428b8a/attachment.html From mark at twistedbanana.demon.co.uk Tue Jul 8 07:30:09 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Tue, 8 Jul 2008 15:30:09 +0100 Subject: Exception transparency vs constructors In-Reply-To: <15e8b9d20807080700w6dc8abc0xfbd1e9d50041d9ff@mail.gmail.com> References: <15e8b9d20805151922q1eee4d2cw16d660e38f48d456@mail.gmail.com> <15e8b9d20807070122m2d803c81gb4e592e79f878519@mail.gmail.com> <15e8b9d20807080700w6dc8abc0xfbd1e9d50041d9ff@mail.gmail.com> Message-ID: <6DFF1E93-66BF-4F15-86E7-2740306DB68A@twistedbanana.demon.co.uk> Thanks for the info. Regards, Mark On 8 Jul 2008, at 15:00, Neal Gafter wrote: > Mark- > > FYI, the new javac bug report is 6723444 and will appear at http:// > bugs.sun.com/bugdatabase/view_bug.do?bug_id=6723444 within a few days. > > Regards, > Neal > > On Mon, Jul 7, 2008 at 1:22 AM, Neal Gafter wrote: > Mark- > > This is indeed a bug in the underlying compiler. Generic > constructors are pretty rare, and type parameters in throws clauses > even more so. Apparently the combination doesn't currently work in > javac. The following won't compile. > > public class Hello { > static class Foo {} > > Hello(Foo foo) throws X {} > > > public static void main(String[] args) throws Exception { > new Hello(new Foo()); > } > } > > I've reported this as a bug against javac. > > Regards, > Neal > > > On Thu, May 15, 2008 at 7:22 PM, Neal Gafter wrote: > Got it, thanks! I suspect some of these are symptoms of existing > problems, but either way I'll track them down. > > Regards, > Neal > > > On Thu, May 15, 2008 at 6:22 PM, Mark Mahieu > wrote: > It looks like exception transparency isn't working quite right with > constructors - I think the following class should compile, but it > doesn't: > > > public class ExTrans { > > ExTrans({=> void throws X} block) throws X { > block.invoke(); > } > > public static void main(String[] args) throws Exception { > new ExTrans({=> throw new Exception(); }); > } > } > > > > ExTrans.java:8: unreported exception X; must be caught or declared > to be thrown > new ExTrans({=> throw new Exception(); }); > ^ > 1 error > > > > Regards, > > Mark > > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080708/91750520/attachment.html From mark at twistedbanana.demon.co.uk Wed Jul 9 07:17:53 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Wed, 9 Jul 2008 15:17:53 +0100 Subject: Method reference assignment compatibility In-Reply-To: <15e8b9d20806261520v49ba8700xfa08b1794f5227b0@mail.gmail.com> References: <15e8b9d20806261520v49ba8700xfa08b1794f5227b0@mail.gmail.com> Message-ID: <1CB398E6-AB6A-454C-9910-2872137E35DA@twistedbanana.demon.co.uk> Neal, Sorry, I meant to send this reply a couple of weeks ago... On 26 Jun 2008, at 23:20, Neal Gafter wrote: > final class Processor { > // ... > void process(Message msg) { > //... > } > } > > In Java 6, if I were to alter the process(Message) method to return > a value, such as a boolean indicating success or failure of the > operation, then I'd break binary compatibility but I think source > compatibility would be preserved. > > No, this breaks source compatibility. Another class might extend > Processor and implement an interface, and use the inherited process > (Message) method as an inherited overrider. > I can see how that might apply if only the process method were final, but not the Processor class, as in the example. Thinking about it some more, I'm not convinced that allowing the conversion would be the 'right thing' for closure literals in general, and nothing I've mentioned seems to warrant having two slightly different forms of closure conversion. More importantly, I've just realised that I forgot to mention that I triggered an ArrayIndexOutOfBoundsException in the compiler when I first encountered this scenario. A test case is below, followed by a variation using an incompatible number of parameters, which results in a slightly different crash. class ArrayIndexOOBCrash { public static void main(String[] args) { foo(ArrayIndexOOBCrash#bar()); } static void}> void foo(T t) {} static String bar() { return "value"; } } java.lang.ArrayIndexOutOfBoundsException: -1 at com.sun.tools.javac.jvm.Code$State.pop(Code.java:1686) at com.sun.tools.javac.jvm.Code.emitop0(Code.java:828) at com.sun.tools.javac.jvm.Items$Item.coerce(Items.java:252) at com.sun.tools.javac.jvm.Items$Item.coerce(Items.java:265) at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:836) at com.sun.tools.javac.jvm.Gen.visitTypeCast(Gen.java:2084) at com.sun.tools.javac.tree.JCTree$JCTypeCast.accept (JCTree.java:1859) at com.sun.tools.javac.jvm.Gen.genExpr(Gen.java:834) at com.sun.tools.javac.jvm.Gen.visitReturn(Gen.java:1672) at com.sun.tools.javac.tree.JCTree$JCReturn.accept (JCTree.java:1311) ... class MismatchedArgumentListsCrash { public static void main(String[] args) { foo({Object o => "value"}); } static void}> void foo(T t) {} } java.lang.AssertionError: mismatched argument lists at com.sun.tools.javac.comp.DeClosure$Phase2.visitLambda (DeClosure.java:968) at com.sun.tools.javac.tree.JCTree$JCLambda.accept (JCTree.java:1814) at com.sun.tools.javac.tree.TreeTranslator.translate (TreeTranslator.java:59) at com.sun.tools.javac.tree.TreeTranslator.translate (TreeTranslator.java:71) at com.sun.tools.javac.tree.TreeTranslator.visitApply (TreeTranslator.java:284) at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept (JCTree.java:1392) at com.sun.tools.javac.tree.TreeTranslator.translate (TreeTranslator.java:59) at com.sun.tools.javac.tree.TreeTranslator.visitExec (TreeTranslator.java:243) at com.sun.tools.javac.tree.JCTree $JCExpressionStatement.accept(JCTree.java:1238) at com.sun.tools.javac.tree.TreeTranslator.translate (TreeTranslator.java:59) Regards, Mark From neal at gafter.com Wed Jul 9 13:52:03 2008 From: neal at gafter.com (Neal Gafter) Date: Wed, 9 Jul 2008 13:52:03 -0700 Subject: Method reference assignment compatibility In-Reply-To: <1CB398E6-AB6A-454C-9910-2872137E35DA@twistedbanana.demon.co.uk> References: <15e8b9d20806261520v49ba8700xfa08b1794f5227b0@mail.gmail.com> <1CB398E6-AB6A-454C-9910-2872137E35DA@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807091352t3645c073g70206e9b4122ad93@mail.gmail.com> On Wed, Jul 9, 2008 at 7:17 AM, Mark Mahieu wrote: > On 26 Jun 2008, at 23:20, Neal Gafter wrote: > > final class Processor { >> // ... >> void process(Message msg) { >> //... >> } >> } >> >> In Java 6, if I were to alter the process(Message) method to return a >> value, such as a boolean indicating success or failure of the operation, >> then I'd break binary compatibility but I think source compatibility would >> be preserved. >> >> No, this breaks source compatibility. Another class might extend >> Processor and implement an interface, and use the inherited process(Message) >> method as an inherited overrider. >> >> > I can see how that might apply if only the process method were final, but > not the Processor class, as in the example. First, let me say that I expect to make this case (for method references) work as you prefer. But back to the Processor example regarding source and binary compatibility... We generally don't use the finalness of methods or classes to affect the type system, so I've removed that from the discussion. Here is how the change to Processor breaks source compatibility: => Before.java <= class Processor { public void process(Object o) { } } interface I { public void process(Object o); } class Mine extends Processor implements I {} => After.java <= class Processor { public Object process(Object o) { return null; } } interface I { public void process(Object o); } class Mine extends Processor implements I {} // error Regards, Neal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080709/69dbdb6d/attachment.html From mark at twistedbanana.demon.co.uk Wed Jul 9 20:23:57 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Thu, 10 Jul 2008 04:23:57 +0100 Subject: Exception transparency vs constructors In-Reply-To: <6DFF1E93-66BF-4F15-86E7-2740306DB68A@twistedbanana.demon.co.uk> References: <15e8b9d20805151922q1eee4d2cw16d660e38f48d456@mail.gmail.com> <15e8b9d20807070122m2d803c81gb4e592e79f878519@mail.gmail.com> <15e8b9d20807080700w6dc8abc0xfbd1e9d50041d9ff@mail.gmail.com> <6DFF1E93-66BF-4F15-86E7-2740306DB68A@twistedbanana.demon.co.uk> Message-ID: LOL, I thought this all sounded a bit familiar. It seems I actually bothered to get this working for CICE expressions - where it's even *less* useful, because you can't pass an argument to the constructor so need an explicit type argument - and never noticed it didn't work for regular 'new' expressions. I even have a jtreg test for it. Guess I must have a thing for generic constructors :) On 8 Jul 2008, at 15:30, Mark Mahieu wrote: > Thanks for the info. > > Regards, > Mark > > On 8 Jul 2008, at 15:00, Neal Gafter wrote: > >> Mark- >> >> FYI, the new javac bug report is 6723444 and will appear at http:// >> bugs.sun.com/bugdatabase/view_bug.do?bug_id=6723444 within a few >> days. >> >> Regards, >> Neal >> >> On Mon, Jul 7, 2008 at 1:22 AM, Neal Gafter wrote: >> Mark- >> >> This is indeed a bug in the underlying compiler. Generic >> constructors are pretty rare, and type parameters in throws >> clauses even more so. Apparently the combination doesn't >> currently work in javac. The following won't compile. >> >> public class Hello { >> static class Foo {} >> >> Hello(Foo foo) throws X {} >> >> >> public static void main(String[] args) throws Exception { >> new Hello(new Foo()); >> } >> } >> >> I've reported this as a bug against javac. >> >> Regards, >> Neal >> >> >> On Thu, May 15, 2008 at 7:22 PM, Neal Gafter wrote: >> Got it, thanks! I suspect some of these are symptoms of existing >> problems, but either way I'll track them down. >> >> Regards, >> Neal >> >> >> On Thu, May 15, 2008 at 6:22 PM, Mark Mahieu >> wrote: >> It looks like exception transparency isn't working quite right >> with constructors - I think the following class should compile, >> but it doesn't: >> >> >> public class ExTrans { >> >> ExTrans({=> void throws X} block) throws X { >> block.invoke(); >> } >> >> public static void main(String[] args) throws Exception { >> new ExTrans({=> throw new Exception(); }); >> } >> } >> >> >> >> ExTrans.java:8: unreported exception X; must be caught or declared >> to be thrown >> new ExTrans({=> throw new Exception(); }); >> ^ >> 1 error >> >> >> >> Regards, >> >> Mark >> >> >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080710/a7c6bd70/attachment.html From peter.levart at gmail.com Sun Jul 13 15:16:11 2008 From: peter.levart at gmail.com (Peter Levart) Date: Mon, 14 Jul 2008 00:16:11 +0200 Subject: YACS - yet another closures syntax Message-ID: <200807140016.11796.peter.levart@gmail.com> I have seen similar proposal on an old Wiki page here: http://wiki.java.net/bin/view/JDK/ClosuresSyntaxInJava7 and I might not be the first to come up with this, but anyway. Here it is (as examples writen below the current established syntax): {=>void} a = {=> System.out.println("Hello World!"); } (){void} a = (){ System.out.println("Hello World!"); } {int => boolean} f = {int x => y <= x && x <= z}; (int){ boolean } f = (int x){ y <= x && x <= z }; {String, String => String} concat = {String s1, String s2 => s1 + s2}; (String, String){ String } concat = (String s1, String s2){ s1 + s2 }; public {T => U} converter({=> T} a, {=> U} b, {T => U} c) { return {T t => a.invoke().equals(t) ? b.invoke() : c.invoke(t)}; } public (T){U} converter((){T} a, (){U} b, (T){U} c) { return (T t){ a.invoke().equals(t) ? b.invoke() : c.invoke }; } // // For restricted, just use () instead of {}... (String)(int) len = (String s)(s.length()); (String, String)(String) concat = (String s1, String s2)(s1+s2); ... my comments are: - the number of keystrokes is the same as with currently established syntax - using this syntax it might be easier to visually separate parameters from closure expression/body - the parameters (or parameter types) in parentheses intuitively "suggest" that they are parameters. - they expression/body (or return type) in braces suggest this is closure body (or what that expression/body returns - a return type) - using second pair of parentheses instead of braces suggest the body is more of an expression than a procedure (restricted closures) What dou you think? Peter - From neal at gafter.com Sun Jul 13 16:28:18 2008 From: neal at gafter.com (neal at gafter.com) Date: Sun, 13 Jul 2008 23:28:18 +0000 Subject: hg: closures/closures/hotspot: 2 new changesets Message-ID: <20080713232823.F0CE9D096@hg.openjdk.java.net> Changeset: 23154e1f07d7 Author: gafter Date: 2008-07-06 19:34 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/23154e1f07d7 merge ! src/os/linux/vm/os_linux.cpp Changeset: c01c405b3520 Author: gafter Date: 2008-07-13 13:36 -0700 URL: http://hg.openjdk.java.net/closures/closures/hotspot/rev/c01c405b3520 Merge From neal at gafter.com Sun Jul 13 16:29:13 2008 From: neal at gafter.com (neal at gafter.com) Date: Sun, 13 Jul 2008 23:29:13 +0000 Subject: hg: closures/closures/jdk: 5 new changesets Message-ID: <20080713233022.47564D09F@hg.openjdk.java.net> Changeset: afa8b71365aa Author: emcmanus Date: 2008-07-09 10:36 +0200 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/afa8b71365aa 6323980: Annotations to simplify MBean development Reviewed-by: jfdenise, dfuchs ! src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java ! src/share/classes/com/sun/jmx/mbeanserver/DynamicMBean2.java ! src/share/classes/com/sun/jmx/mbeanserver/Introspector.java ! src/share/classes/com/sun/jmx/mbeanserver/MBeanAnalyzer.java + src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java ! src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java ! src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java ! src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java ! src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java + src/share/classes/com/sun/jmx/mbeanserver/NotifySupport.java ! src/share/classes/com/sun/jmx/mbeanserver/Repository.java ! src/share/classes/com/sun/jmx/mbeanserver/StandardMBeanIntrospector.java ! src/share/classes/com/sun/jmx/mbeanserver/StandardMBeanSupport.java ! src/share/classes/com/sun/jmx/mbeanserver/Util.java ! src/share/classes/javax/management/BinaryRelQueryExp.java + src/share/classes/javax/management/Description.java ! src/share/classes/javax/management/Descriptor.java + src/share/classes/javax/management/DescriptorFields.java ! src/share/classes/javax/management/DescriptorKey.java + src/share/classes/javax/management/DynamicWrapperMBean.java + src/share/classes/javax/management/Impact.java ! src/share/classes/javax/management/JMX.java + src/share/classes/javax/management/MBean.java ! src/share/classes/javax/management/MBeanOperationInfo.java ! src/share/classes/javax/management/MBeanRegistration.java ! src/share/classes/javax/management/MBeanServer.java ! src/share/classes/javax/management/MBeanServerConnection.java ! src/share/classes/javax/management/MXBean.java + src/share/classes/javax/management/ManagedAttribute.java + src/share/classes/javax/management/ManagedOperation.java ! src/share/classes/javax/management/NotQueryExp.java ! src/share/classes/javax/management/NotificationBroadcasterSupport.java + src/share/classes/javax/management/NotificationInfo.java + src/share/classes/javax/management/NotificationInfos.java + src/share/classes/javax/management/SendNotification.java ! src/share/classes/javax/management/StandardEmitterMBean.java ! src/share/classes/javax/management/StandardMBean.java ! src/share/classes/javax/management/modelmbean/RequiredModelMBean.java ! src/share/classes/javax/management/monitor/package.html ! src/share/classes/javax/management/package.html + test/javax/management/Introspector/AnnotatedMBeanTest.java + test/javax/management/Introspector/AnnotatedNotificationInfoTest.java + test/javax/management/Introspector/MBeanDescriptionTest.java + test/javax/management/Introspector/ParameterNameTest.java + test/javax/management/Introspector/ResourceInjectionTest.java + test/javax/management/Introspector/annot/Name.java Changeset: 68ec11eb0674 Author: jjh Date: 2008-07-09 13:43 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/68ec11eb0674 6700889: Thread resume invalidates all stack frames, even from other threads 6701700: MonitorInfo objects aren't invalidated when the owning thread is resumed Summary: Don't inform ThreadListeners for thread T1 when some other thread is resumed, and MonitoryIfoImpl must add itself as a ThreadListener Reviewed-by: dcubed ! src/share/classes/com/sun/tools/jdi/MonitorInfoImpl.java ! src/share/classes/com/sun/tools/jdi/ThreadReferenceImpl.java ! src/share/classes/com/sun/tools/jdi/VMAction.java ! src/share/classes/com/sun/tools/jdi/VMState.java ! src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java ! test/com/sun/jdi/MonitorFrameInfo.java + test/com/sun/jdi/ResumeOneThreadTest.java Changeset: c07f7975da4d Author: jjh Date: 2008-07-09 16:57 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/c07f7975da4d Merge Changeset: c678b172284b Author: jjh Date: 2008-07-11 17:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/c678b172284b 6725192: Some JDI Regression tests fail if @debuggeeVMOptions contain multiple blanks Summary: Fix to allow mutiple blanks between options Reviewed-by: tbell ! test/com/sun/jdi/VMConnection.java Changeset: 65b72d6126fa Author: gafter Date: 2008-07-13 13:36 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/65b72d6126fa Merge From neal at gafter.com Sun Jul 13 16:31:03 2008 From: neal at gafter.com (neal at gafter.com) Date: Sun, 13 Jul 2008 23:31:03 +0000 Subject: hg: closures/closures/langtools: 10 new changesets Message-ID: <20080713233119.0CE15D0A4@hg.openjdk.java.net> Changeset: 5e270b126573 Author: jjg Date: 2008-07-08 16:59 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/5e270b126573 6715251: javap should be consistent with javac and return 2 if given no arguments Reviewed-by: ksrini ! src/share/classes/com/sun/tools/javap/JavapTask.java ! test/tools/javap/T4876942.java + test/tools/javap/T6715251.java Changeset: 0d4aa3c00af5 Author: jjg Date: 2008-07-08 17:14 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/0d4aa3c00af5 6715757: javap does not print "extends java.lang.Object" Reviewed-by: ksrini ! src/share/classes/com/sun/tools/classfile/Type.java ! src/share/classes/com/sun/tools/javap/ClassWriter.java ! test/tools/javap/4870651/T4870651.java ! test/tools/javap/T4880663.java Changeset: df47f7f4c95a Author: jjg Date: 2008-07-08 17:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/df47f7f4c95a 6715753: unknown option error can be a little more helpful Reviewed-by: ksrini ! src/share/classes/com/sun/tools/javap/JavapTask.java ! src/share/classes/com/sun/tools/javap/resources/javap.properties + test/tools/javap/T6715753.java Changeset: 1bdd8cea398e Author: jjg Date: 2008-07-08 17:53 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/1bdd8cea398e 6716452: (classfile) need a method to get the index of an attribute Reviewed-by: ksrini ! src/share/classes/com/sun/tools/classfile/Attributes.java + test/tools/javap/T6716452.java Changeset: c33f7ddeeff2 Author: jjg Date: 2008-07-08 18:06 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/c33f7ddeeff2 4501661: disallow mixing -public, -private, and -protected options at the same time Reviewed-by: ksrini ! src/share/classes/com/sun/tools/javap/JavapTask.java ! src/share/classes/com/sun/tools/javap/Options.java ! src/share/classes/com/sun/tools/javap/resources/javap.properties + test/tools/javap/T4501661.java Changeset: 82c7aa6fe50a Author: jjg Date: 2008-07-10 11:25 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/82c7aa6fe50a 6724327: eliminate use of shell tests for simple golden file tests Reviewed-by: darcy ! test/tools/javac/CyclicInheritance.java ! test/tools/javac/CyclicInheritance.out - test/tools/javac/CyclicInheritance.sh ! test/tools/javac/ExtendsAccess/ExtendsAccess.java ! test/tools/javac/ExtendsAccess/ExtendsAccess.out - test/tools/javac/ExtendsAccess/ExtendsAccess.sh ! test/tools/javac/FloatingPointChanges/BadConstructorModifiers.java ! test/tools/javac/FloatingPointChanges/BadConstructorModifiers.out - test/tools/javac/FloatingPointChanges/BadConstructorModifiers.sh ! test/tools/javac/InnerNamedConstant_2.java ! test/tools/javac/InnerNamedConstant_2.out - test/tools/javac/InnerNamedConstant_2.sh ! test/tools/javac/LocalClasses_2.java ! test/tools/javac/LocalClasses_2.out - test/tools/javac/LocalClasses_2.sh ! test/tools/javac/NameCollision.java ! test/tools/javac/NameCollision.out - test/tools/javac/NameCollision.sh ! test/tools/javac/NestedInnerClassNames.java ! test/tools/javac/NestedInnerClassNames.out - test/tools/javac/NestedInnerClassNames.sh ! test/tools/javac/NonStaticFieldExpr1.java ! test/tools/javac/NonStaticFieldExpr1.out - test/tools/javac/NonStaticFieldExpr1.sh ! test/tools/javac/NonStaticFieldExpr2.java ! test/tools/javac/NonStaticFieldExpr2.out - test/tools/javac/NonStaticFieldExpr2.sh ! test/tools/javac/NonStaticFieldExpr3.java ! test/tools/javac/NonStaticFieldExpr3.out - test/tools/javac/NonStaticFieldExpr3.sh ! test/tools/javac/QualifiedAccess/QualifiedAccess_1.java ! test/tools/javac/QualifiedAccess/QualifiedAccess_1.out - test/tools/javac/QualifiedAccess/QualifiedAccess_1.sh ! test/tools/javac/QualifiedAccess/QualifiedAccess_2.java ! test/tools/javac/QualifiedAccess/QualifiedAccess_2.out - test/tools/javac/QualifiedAccess/QualifiedAccess_2.sh ! test/tools/javac/QualifiedAccess/QualifiedAccess_3.java ! test/tools/javac/QualifiedAccess/QualifiedAccess_3.out - test/tools/javac/QualifiedAccess/QualifiedAccess_3.sh ! test/tools/javac/SynchronizedClass.java ! test/tools/javac/SynchronizedClass.out - test/tools/javac/SynchronizedClass.sh ! test/tools/javac/depDocComment/DeprecatedDocComment.java ! test/tools/javac/depDocComment/DeprecatedDocComment.out - test/tools/javac/depDocComment/DeprecatedDocComment.sh Changeset: 62fcf8d73dc5 Author: jjg Date: 2008-07-10 16:50 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/62fcf8d73dc5 6724551: Use Queues instead of Lists to link compiler phases Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java ! src/share/classes/com/sun/tools/javac/comp/Enter.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/util/ListBuffer.java Changeset: 41fb91c70d47 Author: jjg Date: 2008-07-11 14:59 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/41fb91c70d47 6725036: javac returns incorrect value for lastModifiedTime() when source is a zip file archive Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java + test/tools/javac/T6725036.java Changeset: 4e7153d64341 Author: gafter Date: 2008-07-13 13:47 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/4e7153d64341 Merge with tip ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/util/ListBuffer.java - test/tools/javac/CyclicInheritance.sh - test/tools/javac/ExtendsAccess/ExtendsAccess.sh - test/tools/javac/FloatingPointChanges/BadConstructorModifiers.sh - test/tools/javac/InnerNamedConstant_2.sh - test/tools/javac/LocalClasses_2.sh - test/tools/javac/NameCollision.sh - test/tools/javac/NestedInnerClassNames.sh - test/tools/javac/NonStaticFieldExpr1.sh - test/tools/javac/NonStaticFieldExpr2.sh - test/tools/javac/NonStaticFieldExpr3.sh - test/tools/javac/QualifiedAccess/QualifiedAccess_1.sh - test/tools/javac/QualifiedAccess/QualifiedAccess_2.sh - test/tools/javac/QualifiedAccess/QualifiedAccess_3.sh - test/tools/javac/SynchronizedClass.sh - test/tools/javac/depDocComment/DeprecatedDocComment.sh Changeset: 7ad432c709e6 Author: gafter Date: 2008-07-13 13:48 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/7ad432c709e6 Merge. From neal at gafter.com Sun Jul 13 16:31:59 2008 From: neal at gafter.com (Neal Gafter) Date: Sun, 13 Jul 2008 16:31:59 -0700 Subject: YACS - yet another closures syntax In-Reply-To: <200807140016.11796.peter.levart@gmail.com> References: <200807140016.11796.peter.levart@gmail.com> Message-ID: <15e8b9d20807131631k2f27b235gc0433b828f0a957d@mail.gmail.com> Where do you put the throws clause? On Sun, Jul 13, 2008 at 3:16 PM, Peter Levart wrote: > I have seen similar proposal on an old Wiki page here: > http://wiki.java.net/bin/view/JDK/ClosuresSyntaxInJava7 and I might not be > the first to come up with this, but anyway. Here it is (as examples writen > below the current established syntax): > > {=>void} a = {=> System.out.println("Hello World!"); } > > (){void} a = (){ System.out.println("Hello World!"); } > > > > {int => boolean} f = {int x => y <= x && x <= z}; > > (int){ boolean } f = (int x){ y <= x && x <= z }; > > > > {String, String => String} concat = {String s1, String s2 => s1 + s2}; > > (String, String){ String } concat = (String s1, String s2){ s1 + s2 }; > > > > public {T => U} converter({=> T} a, {=> U} b, {T => U} c) { > return {T t => a.invoke().equals(t) ? b.invoke() : c.invoke(t)}; > } > > public (T){U} converter((){T} a, (){U} b, (T){U} c) { > return (T t){ a.invoke().equals(t) ? b.invoke() : c.invoke }; > } > > > // > // For restricted, just use () instead of {}... > > > (String)(int) len = (String s)(s.length()); > > (String, String)(String) concat = (String s1, String s2)(s1+s2); > > > > ... my comments are: > > - the number of keystrokes is the same as with currently established syntax > - using this syntax it might be easier to visually separate parameters from > closure expression/body > - the parameters (or parameter types) in parentheses intuitively "suggest" > that they are parameters. > - they expression/body (or return type) in braces suggest this is closure body > (or what that expression/body returns - a return type) > - using second pair of parentheses instead of braces suggest the body is more > of an expression than a procedure (restricted closures) > > What dou you think? > > Peter > > - > From neal at gafter.com Sun Jul 13 17:11:44 2008 From: neal at gafter.com (Neal Gafter) Date: Sun, 13 Jul 2008 17:11:44 -0700 Subject: Implementation of transfers out of closures Message-ID: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> I'm now working on the implementation of transfers out of a closure. For example, a "return" statement inside a closure returns from the enclosing method (rather than from the closure itself). While specification changes are outside the scope of this project, for those of you interested the motivation for having a single meaning for "return" (return from the enclosing method) rather than introducing a new meaning for "return" in a closure, the issue is discussed in http://gafter.blogspot.com/2006/08/tennents-correspondence-principle-and.html. Similarly, "break" and "continue" can flow from within a closure to an enclosing loop, switch, etc. I have the following design constraints: - The "normal" case should be relatively fast. Specifically, there should be no capturing of a stack trace when the transfer is successful. - The structure of the generated code should take advantage of existing hotspot optimizations and enable new ones. - Successful transfers should be transparent to intervening catch clauses (this will be discussed in a later message). - The failure case should capture a stack trace for debugging and diagnosing the problem. This includes the case in which the transfer is executed in the wrong thread, or when a transfer occurs too late. - Transient object creation should be minimized. - When a transfer fails because of being in the wrong thread, there should be enough information for an underlying concurrent loop implementation to shuttle the transfer to the correct thread to complete it. See http://gafter.blogspot.com/2006/10/concurrent-loops-using-java-closures.html, where I suggested the proper treatment; the language should provide enough information for a concurrent loop API to implement this: What should happen if you use continue, break, or return within the body of this loop, or throw an exception? The continue case is easy: it just completes execution of that one iteration, and the other iterations proceed on their merry way. The semantics of break are a bit subtle, but obvious once you realize this is supposed to act like a loop: it completes the current iteration and cancels any other iterations that have not completed, and control returns to the caller of for eachConcurrently. Handling a returnstatement is similar: it cancels any uncompleted iterations and returns from the enclosing method, which in this case would be getAttendees. Finally, any exception that propagates out of a loop iteration cancels uncompleted iterations and propagates from the loop. I also carefully avoided the need for "volatile" in accurately (I think) distinguishing the failure from success cases. The planned implementation is as follows. First, we add two support classes: /** * A class used to implement nonlocal transfer of control. This * should only be thrown when the target of the transfer is on * the call stack of the current thread. */ public class Jump extends RuntimeException { // should really not be a subtype of Throwable /** Returns the thread in which the transfer should take place. */ public Thread thread() { return Thread.currentThread(); } /** Causes the transfer to occur, typically by throwing this. */ public void transfer() { throw this; } /** We suppress the stack trace for transfers. */ @Override public Throwable fillInStackTrace() {} } /** * Exception thrown when a transfer from within a lambda doesn't have * a matching frame on the stack of the current thread. */ class UnmatchedNonlocalTransfer extends RuntimeException { /** The Jump that would cause the transfer of control. */ private Jump jump; public UnmatchedNonlocalTransfer(Jump jump) { this.jump = jump; } /** Returns the thread containing the target of the transfer. */ public Thread thread() { return jump.thread(); } /** Attempts to cause the transfer to occur. May throw UnmatchedNonlocalTransfer. */ public Unreachable transfer() { jump.transfer(); } } Now, to translate our source code, consider a method int method(...) { ... *return 3;* // original code inside some closure ... } this would be translated into something like this: int method(...) { static class Frame$ { // the promoted parts of the method call frame Thread thread; // track the thread executing the call boolean dead; // set to true when the method is not active } final Frame$ frame$ = new Frame$(); frame$.thread = Thread.currentThread(); // a synthetic class customized for handling nonlocal transfers from this method static class MyReturn extends Jump { final Frame$ frame; // needed to detect correct frame in case there is recursion final int value; // the returned value (can't be stored in the frame because of try-finally) @Override public Unreachable transfer() { throw (Thread.currentThread() == frame.thread && !frame.dead) ? this : new UnmatchedNonlocalTransfer(this); } @Override public void thread() { return frame.thread; } MyReturn(Frame frame, int value) { super(); this.frame = frame; this.value = value; } } try { // wraps the whole body of the translated method ... *new MyReturn(frame$, 3).transfer();* // translated code inside some closure ... } catch (MyReturn ex) { if (ex.frame == frame$) // allow support for recursion return ex.value; throw ex; } finally { frame$.dead = true; // allow detection of late return } } It would be possible to eliminate the nested synthetic class MyReturn by creating a fixed set of them in the language support libraries (one for each possible non-object return type, and one generic one for object types), and by adding an interface that Frame would implement which exposes the thread and the "dead" flag. That improves the startup time but may hurt the steady-state running speed. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080713/3b1bd6ce/attachment.html From neal at gafter.com Sun Jul 13 20:54:48 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 14 Jul 2008 03:54:48 +0000 Subject: hg: closures/closures/jdk: Fix up the documentation. Message-ID: <20080714035459.EF050D0B3@hg.openjdk.java.net> Changeset: cab2003d7915 Author: gafter Date: 2008-07-13 20:47 -0700 URL: http://hg.openjdk.java.net/closures/closures/jdk/rev/cab2003d7915 Fix up the documentation. ! src/share/classes/java/lang/Jump.java ! src/share/classes/java/lang/UnmatchedTransfer.java From neal at gafter.com Sun Jul 13 20:55:39 2008 From: neal at gafter.com (neal at gafter.com) Date: Mon, 14 Jul 2008 03:55:39 +0000 Subject: hg: closures/closures/langtools: The "for" qualifier on methods is now preserved in the class Message-ID: <20080714035541.84908D0B8@hg.openjdk.java.net> Changeset: 58aad10775bc Author: gafter Date: 2008-07-13 20:50 -0700 URL: http://hg.openjdk.java.net/closures/closures/langtools/rev/58aad10775bc The "for" qualifier on methods is now preserved in the class file using a classfile attribute. Previously the qualifier was only noticed by the compiler if the API is compiled from sources at the same time as its clients. Also, some fixes to test tags. ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java ! src/share/classes/com/sun/tools/javac/util/Name.java ! test/tools/javac/closures/Mahieu19.java + test/tools/javac/closures/Mahieu21.java + test/tools/javac/closures/Mahieu21b.java ! test/tools/javac/closures/Morris.java From neal at gafter.com Sun Jul 13 21:02:07 2008 From: neal at gafter.com (Neal Gafter) Date: Sun, 13 Jul 2008 21:02:07 -0700 Subject: Compiling call to 'for' method can fail In-Reply-To: <6E243336-9D56-439C-BA7E-B40D08B76D8A@twistedbanana.demon.co.uk> References: <6E243336-9D56-439C-BA7E-B40D08B76D8A@twistedbanana.demon.co.uk> Message-ID: <15e8b9d20807132102p282847b0j1347835a44320dd9@mail.gmail.com> This has been fixed. The compiler now produces (and consumes) a classfile attribute representing the presence of the "for" qualifier. Regards, Neal On Wed, Jun 25, 2008 at 2:07 AM, Mark Mahieu wrote: > I guess this is likely to be a known 'to do' item, but just in case it > isn't... > > It seems that compiling a call to a method declared with the 'for' modifier > only succeeds if that method is being compiled at the same time. For > example, given these two source files: > > > // foo/ForCaller.java > > package foo; > import static foo.ForEver.*; > > class ForCaller { > public static void main(String[] args) { > for ever() {} > } > } > > > // foo/ForEver.java > > package foo; > > class ForEver { > static for void ever({==>void} block) {} > } > > > Then this succeeds: > > $ rm foo/*.class > $ $BGGA_HOME/bin/javac foo/ForCaller.java > $ > > > But this doesn't: > > $ rm foo/*.class > $ $BGGA_HOME/bin/javac foo/ForEver.java > $ $BGGA_HOME/bin/javac foo/ForCaller.java > foo/ForCaller.java:7: for may only be used on an invocation if the method > was declared with the 'for' modifier > for ever() {} > ^ > 1 error > $ > > > Regards, > > Mark > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080713/360bd374/attachment.html From peter.levart at gmail.com Mon Jul 14 01:31:41 2008 From: peter.levart at gmail.com (Peter Levart) Date: Mon, 14 Jul 2008 10:31:41 +0200 Subject: YACS - yet another closures syntax In-Reply-To: <15e8b9d20807131631k2f27b235gc0433b828f0a957d@mail.gmail.com> References: <200807140016.11796.peter.levart@gmail.com> <15e8b9d20807131631k2f27b235gc0433b828f0a957d@mail.gmail.com> Message-ID: (a re-post to the list - forgot to cc:) Oh yeah, exceptions! If trying to mimic method syntax, then it would look like this: { long => void throws InterruptedException } wait = { long millis => Thread.sleep(millis); }; vs. (long) throws InterruptedException {void} wait = (long millis) { Thread.sleep(millis); }; but then it feels so "disjoint" so that one does not know where the construct starts and where it ends (the established syntax is better in this respect). So maybe half/half: (long){void throws InterruptedException} wait = (long millis) { Thread.sleep(millis); }; ... I don't know. An evening idea doesn't seem clever at all in the morning... Peter On Mon, Jul 14, 2008 at 1:31 AM, Neal Gafter wrote: > Where do you put the throws clause? > > On Sun, Jul 13, 2008 at 3:16 PM, Peter Levart wrote: >> I have seen similar proposal on an old Wiki page here: >> http://wiki.java.net/bin/view/JDK/ClosuresSyntaxInJava7 and I might not be >> the first to come up with this, but anyway. Here it is (as examples writen >> below the current established syntax): >> >> {=>void} a = {=> System.out.println("Hello World!"); } >> >> (){void} a = (){ System.out.println("Hello World!"); } >> >> >> >> {int => boolean} f = {int x => y <= x && x <= z}; >> >> (int){ boolean } f = (int x){ y <= x && x <= z }; >> >> >> >> {String, String => String} concat = {String s1, String s2 => s1 + s2}; >> >> (String, String){ String } concat = (String s1, String s2){ s1 + s2 }; >> >> >> >> public {T => U} converter({=> T} a, {=> U} b, {T => U} c) { >> return {T t => a.invoke().equals(t) ? b.invoke() : c.invoke(t)}; >> } >> >> public (T){U} converter((){T} a, (){U} b, (T){U} c) { >> return (T t){ a.invoke().equals(t) ? b.invoke() : c.invoke }; >> } >> >> >> // >> // For restricted, just use () instead of {}... >> >> >> (String)(int) len = (String s)(s.length()); >> >> (String, String)(String) concat = (String s1, String s2)(s1+s2); >> >> >> >> ... my comments are: >> >> - the number of keystrokes is the same as with currently established syntax >> - using this syntax it might be easier to visually separate parameters from >> closure expression/body >> - the parameters (or parameter types) in parentheses intuitively "suggest" >> that they are parameters. >> - they expression/body (or return type) in braces suggest this is closure body >> (or what that expression/body returns - a return type) >> - using second pair of parentheses instead of braces suggest the body is more >> of an expression than a procedure (restricted closures) >> >> What dou you think? >> >> Peter >> >> - >> > From mark at twistedbanana.demon.co.uk Mon Jul 14 12:09:50 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Mon, 14 Jul 2008 20:09:50 +0100 Subject: Implementation of transfers out of closures In-Reply-To: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> References: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> Message-ID: <27C03739-D6E6-4F97-A589-08635ABBDD6A@twistedbanana.demon.co.uk> On 14 Jul 2008, at 01:11, Neal Gafter wrote: > I have the following design constraints: > The "normal" case should be relatively fast. Specifically, there > should be no capturing of a stack trace when the transfer is > successful. > The structure of the generated code should take advantage of > existing hotspot optimizations and enable new ones. I've had a quick play with the code, using a very artificial and unfair recursive test designed to examine how well this technique performs. On my machine, this test executes in around 250ms using normal return statements, and around 10000ms after being translated to use Jump and friends: http://slm888.com/snippets/NormalReturn.java http://slm888.com/snippets/JumpReturn.java However, manually inlining the call to transfer() within the try block has a nice effect: the test completes in under 2200ms: http://slm888.com/snippets/InlinedJumpReturn.java Presumably this change is sufficient to trigger a particular hotspot optimisation which isn't performed in the non-inlined version, such as a straightforward branch to the code in the catch block. Quite promising I think. Regards, Mark From mark at twistedbanana.demon.co.uk Mon Jul 14 12:33:40 2008 From: mark at twistedbanana.demon.co.uk (Mark Mahieu) Date: Mon, 14 Jul 2008 20:33:40 +0100 Subject: Implementation of transfers out of closures In-Reply-To: <27C03739-D6E6-4F97-A589-08635ABBDD6A@twistedbanana.demon.co.uk> References: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> <27C03739-D6E6-4F97-A589-08635ABBDD6A@twistedbanana.demon.co.uk> Message-ID: <3E5B0AE8-7E1D-471C-B688-A1892956DD31@twistedbanana.demon.co.uk> Here are versions which pass the code containing the Jump as a closure - not directly comparable to the NormalReturn class: http://slm888.com/snippets/JumpReturnClosure.java http://slm888.com/snippets/InlinedJumpReturnClosure.java The inlined version seems to complete in about 50% of the time on the non-inlined version. On 14 Jul 2008, at 20:09, Mark Mahieu wrote: > On 14 Jul 2008, at 01:11, Neal Gafter wrote: >> I have the following design constraints: >> The "normal" case should be relatively fast. Specifically, there >> should be no capturing of a stack trace when the transfer is >> successful. >> The structure of the generated code should take advantage of >> existing hotspot optimizations and enable new ones. > I've had a quick play with the code, using a very artificial and > unfair recursive test designed to examine how well this technique > performs. > > On my machine, this test executes in around 250ms using normal > return statements, and around 10000ms after being translated to use > Jump and friends: > > http://slm888.com/snippets/NormalReturn.java > http://slm888.com/snippets/JumpReturn.java > > However, manually inlining the call to transfer() within the try > block has a nice effect: the test completes in under 2200ms: > > http://slm888.com/snippets/InlinedJumpReturn.java > > Presumably this change is sufficient to trigger a particular > hotspot optimisation which isn't performed in the non-inlined > version, such as a straightforward branch to the code in the catch > block. > > Quite promising I think. > > > Regards, > > Mark > From forax at univ-mlv.fr Tue Jul 15 10:05:52 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 15 Jul 2008 19:05:52 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> Message-ID: <487CD8F0.7030900@univ-mlv.fr> Neal Gafter a ?crit : > On Tue, Jul 8, 2008 at 12:42 AM, R?mi Forax > wrote: > > Furthermore, i don't like exception type parameter, too complex > too, that why i've proposed > a different syntax for method that takes an unrestricted closure, > this allow to > perform exception transparency seamlessly and avoid create a type > for unrestricted function type > (like T... which is only available in method declaration). > > > I'd love to see the semantic rules that you have in mind to achieve > exception transparency. > I just come back from vacation, sorry for the delay. Better with an example: static void with(Closeable closeable) block() throws IOException{ try { block.invoke(); } finally { closeable.close(); // may throw an IOException } } ... FileReader reader=... with(reader) { throw new AnotherException(); } is compile like this: interface VVE { void invoke() throws Exception; } static void with(Closeable closeable, VV block) throws Exception { try { block.invoke(); } finally { closeable.close(); // may throw an IOException } } ... FileReader reader=... with(reader,new VVE() { public void invoke() throws AnotherException { throw new AnotherException(); } }); here the compiler awaits two catch blocks to catch AnotherException and IOException. As i said, i've just proposed a new syntax, not a new semantics. R?mi From neal at gafter.com Tue Jul 15 12:23:11 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 15 Jul 2008 12:23:11 -0700 Subject: Alternative syntax for closures In-Reply-To: <487CD8F0.7030900@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> Message-ID: <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> On Tue, Jul 15, 2008 at 10:05 AM, R?mi Forax wrote: > FileReader reader=... > with(reader) { > throw new AnotherException(); > } > > is compile like this: > > FileReader reader=... > with(reader,new VVE() { > public void invoke() throws AnotherException { > throw new AnotherException(); > } > }); > > here the compiler awaits two catch blocks > to catch AnotherException and IOException. > I'd like to know what language rules you have in mind that would result in the compiler inferring that this "with" invocation can throw AnotherException. As i said, i've just proposed a new syntax, not a new semantics. > Your handling of exceptions appears to be new semantics compared to BGGA, and I don't yet understand how you intend it would work. -Neal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080715/3bc3d62c/attachment.html From forax at univ-mlv.fr Tue Jul 15 12:44:32 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 15 Jul 2008 21:44:32 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> Message-ID: <487CFE20.6090802@univ-mlv.fr> Neal Gafter a ?crit : > On Tue, Jul 15, 2008 at 10:05 AM, R?mi Forax > wrote: > > FileReader reader=... > with(reader) { > throw new AnotherException(); > } > > is compile like this: > > FileReader reader=... > with(reader,new VVE() { > public void invoke() throws AnotherException { > throw new AnotherException(); > } > }); > > here the compiler awaits two catch blocks > to catch AnotherException and IOException. > > > I'd like to know what language rules you have in mind that would > result in the compiler inferring that this "with" invocation can throw > AnotherException. The method with() is not a regular method but a method that takes a block closure, it has a special syntax and a lightly different semantics. A method invocation of a method that has a block closure can throw E if the block closure can throw E. Because this kind of method currently doesn't exist so there is no problem of backward compatibility. > > As i said, i've just proposed a new syntax, not a new semantics. > > > Your handling of exceptions appears to be new semantics compared to > BGGA, and I don't yet understand how you intend it would work. Ok, to be crystal clear, here is the equivalent using the BGGA syntax: static void with(Closeable closeable, {=> void throws E} block) throws E, IOException{ try { block.invoke(); } finally { closeable.close(); // may throw an IOException } } > > -Neal R?mi From neal at gafter.com Tue Jul 15 12:59:19 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 15 Jul 2008 12:59:19 -0700 Subject: Alternative syntax for closures In-Reply-To: <487CFE20.6090802@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> Message-ID: <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> Can you please show me how you intend one would write the equivalent of the following BGGA method? * void myIf( boolean cond, {=>void throws E} truePart, {=>void throws E} falsePart) throws E { (cond ? truePart : falsePart).invoke(); } * Regards, Neal On Tue, Jul 15, 2008 at 12:44 PM, R?mi Forax wrote: > Neal Gafter a ?crit : > >> On Tue, Jul 15, 2008 at 10:05 AM, R?mi Forax > forax at univ-mlv.fr>> wrote: >> >> FileReader reader=... >> with(reader) { >> throw new AnotherException(); >> } >> >> is compile like this: >> >> FileReader reader=... >> with(reader,new VVE() { >> public void invoke() throws AnotherException { >> throw new AnotherException(); >> } >> }); >> >> here the compiler awaits two catch blocks >> to catch AnotherException and IOException. >> >> >> I'd like to know what language rules you have in mind that would result in >> the compiler inferring that this "with" invocation can throw >> AnotherException. >> > The method with() is not a regular method but a method that takes a block > closure, > it has a special syntax and a lightly different semantics. > > A method invocation of a method that has a block closure can throw E if > the block closure can throw E. > > Because this kind of method currently doesn't exist so there is no > problem of backward compatibility. > > >> As i said, i've just proposed a new syntax, not a new semantics. >> >> >> Your handling of exceptions appears to be new semantics compared to BGGA, >> and I don't yet understand how you intend it would work. >> > Ok, to be crystal clear, here is the equivalent using the BGGA syntax: > > static void with(Closeable closeable, {=> void throws E} block) throws E, > IOException{ > try { > block.invoke(); > } finally { > closeable.close(); // may throw an IOException > } > } > >> >> -Neal >> > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080715/e221913a/attachment.html From forax at univ-mlv.fr Tue Jul 15 13:16:33 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 15 Jul 2008 22:16:33 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> Message-ID: <487D05A1.4000907@univ-mlv.fr> Neal Gafter a ?crit : > Can you please show me how you intend one would write the equivalent > of the following BGGA method? > > * void myIf( > boolean cond, > {=>void throws E} truePart, > {=>void throws E} falsePart) throws E { > (cond ? truePart : falsePart).invoke(); > } > * > > Regards, > Neal Voila : void myIf(boolean cond) truePart() falsePart() { if (cond) truePart().invoke(); else falsePart().invoke(); } R?mi From neal at gafter.com Tue Jul 15 14:38:27 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 15 Jul 2008 14:38:27 -0700 Subject: Alternative syntax for closures In-Reply-To: <487D05A1.4000907@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> Message-ID: <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> And how is your method invoked? How do I get exception transparency for non-trailing arguments? On Tue, Jul 15, 2008 at 1:16 PM, R?mi Forax wrote: > Neal Gafter a ?crit : > >> Can you please show me how you intend one would write the equivalent of >> the following BGGA method? >> >> * void myIf( >> boolean cond, >> {=>void throws E} truePart, >> {=>void throws E} falsePart) throws E { >> (cond ? truePart : falsePart).invoke(); >> } >> * >> >> Regards, >> Neal >> > Voila : > void myIf(boolean cond) truePart() falsePart() { > if (cond) > truePart().invoke(); > else > falsePart().invoke(); > } > > R?mi > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080715/592da13c/attachment.html From forax at univ-mlv.fr Tue Jul 15 15:08:21 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Wed, 16 Jul 2008 00:08:21 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487217F1.4030306@univ-mlv.fr> <15e8b9d20807070822v10530119yf0435522166aba1b@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> Message-ID: <487D1FD5.3040402@univ-mlv.fr> Neal Gafter a ?crit : > And how is your method invoked? like that: bolean cond=... myIf(cond) { //true part } { //false part } > How do I get exception transparency for non-trailing arguments? There is no way. R?mi > > On Tue, Jul 15, 2008 at 1:16 PM, R?mi Forax > wrote: > > Neal Gafter a ?crit : > > Can you please show me how you intend one would write the > equivalent of the following BGGA method? > > * void myIf( > boolean cond, > {=>void throws E} truePart, > {=>void throws E} falsePart) throws E { > (cond ? truePart : falsePart).invoke(); > } > * > > Regards, > Neal > > Voila : > void myIf(boolean cond) truePart() falsePart() { > if (cond) > truePart().invoke(); > else > falsePart().invoke(); > } > > R?mi > > From neal at gafter.com Tue Jul 15 18:57:05 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 15 Jul 2008 18:57:05 -0700 Subject: Alternative syntax for closures In-Reply-To: <487D1FD5.3040402@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> Message-ID: <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> On Tue, Jul 15, 2008 at 3:08 PM, R?mi Forax wrote: > Neal Gafter a ?crit : > >> And how is your method invoked? >> > like that: > bolean cond=... > myIf(cond) { > //true part > } { > //false part > } > Your syntax is ambiguous. There is no way to tell if it is to be parsed as a single invocation IDENTIFIER ( ARGS ) BLOCK BLOCK or an invocation followed by a block IDENTIFIER ( ARGS ) BLOCK BLOCK > How do I get exception transparency for non-trailing arguments? >> > There is no way. Then I presume there is also no way to declare local variables or fields to store closures that have parametric exceptions, which rules out a number of useful control APIs. Your proposal is not just a different syntax for the same semantics; it supports only a subset of the useful functionality of BGGA. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080715/5ea535f8/attachment.html From forax at univ-mlv.fr Wed Jul 16 06:39:51 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Wed, 16 Jul 2008 15:39:51 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <48731A67.80704@univ-mlv.fr> <15e8b9d20807080658x6c1856cdx22360609cfbe4ca6@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> Message-ID: <487DFA27.8030006@univ-mlv.fr> Neal Gafter a ?crit : > On Tue, Jul 15, 2008 at 3:08 PM, R?mi Forax > wrote: > > Neal Gafter a ?crit : > > And how is your method invoked? > > like that: > bolean cond=... > myIf(cond) { > //true part > } { > //false part > > } > > > Your syntax is ambiguous. There is no way to tell if it is to be > parsed as a single invocation > > IDENTIFIER ( ARGS ) BLOCK BLOCK > > or an invocation followed by a block > > IDENTIFIER ( ARGS ) BLOCK > BLOCK yes, the syntax is ambiguous but it can be solved by prefering the former than the later. > > > How do I get exception transparency for non-trailing arguments? > > There is no way. > > > Then I presume there is also no way to declare local variables or > fields to store closures that have parametric exceptions, which rules > out a number of useful control APIs. Your proposal is not just a > different syntax for the same semantics; it supports only a subset of > the useful functionality of BGGA. Not exactly. Closure block types are used internally by the compiler but can't be declared by a user. If you want to store such closure in a local variable or a field, you have to convert it to a function type. The idea behind is that if you store a closure block in a field (or a final/shared local field) you have lot of chance to get an exception at runtime. By example, this code (BGGA syntax) may work or not depending if you have return/break/continue in the closure block. Executor executor=... ... void fork( final {=>void throws E} block) throws E { executor.submit(new Runnable() { public void run() { block.invoke(); // need a try/catch E here } }); } The same example with my syntax void fork() block() { final void() throws Exception b = (void() throws Exception)block; // cast is needed here executor.submit(new Runnable() { public void run() { b.invoke(); // try/catch Exception needed here } }); } I don't see a difference with BGGA's functionality. R?mi From neal at gafter.com Wed Jul 16 07:58:30 2008 From: neal at gafter.com (Neal Gafter) Date: Wed, 16 Jul 2008 07:58:30 -0700 Subject: Alternative syntax for closures In-Reply-To: <487DFA27.8030006@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> <487DFA27.8030006@univ-mlv.fr> Message-ID: <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> On Wed, Jul 16, 2008 at 6:39 AM, R?mi Forax wrote: > > Your syntax is ambiguous. There is no way to tell if it is to be parsed as >> a single invocation >> >> IDENTIFIER ( ARGS ) BLOCK BLOCK >> >> or an invocation followed by a block >> >> IDENTIFIER ( ARGS ) BLOCK >> BLOCK >> > yes, the syntax is ambiguous but it can be solved by prefering the former > than the later. I don't think there is any reason to believe that the former is more likely to be the programmer's intent than the latter. > > >> >> How do I get exception transparency for non-trailing arguments? >> >> There is no way. >> >> >> Then I presume there is also no way to declare local variables or fields >> to store closures that have parametric exceptions, which rules out a number >> of useful control APIs. Your proposal is not just a different syntax for >> the same semantics; it supports only a subset of the useful functionality of >> BGGA. >> > Not exactly. > Closure block types are used internally by the compiler but can't be > declared by a user. > If you want to store such closure in a local variable or a field, you have > to convert it > to a function type. > > The idea behind is that if you store a closure block in a field (or a > final/shared local field) > you have lot of chance to get an exception at runtime. > > By example, this code (BGGA syntax) may work or not > depending if you have return/break/continue > in the closure block. > > Executor executor=... > ... > void fork( > final {=>void throws E} block) throws E { > executor.submit(new Runnable() { > public void run() { > block.invoke(); // need a try/catch E here > } > }); > } This example would fail at compile-time in BGGA for at least two reasons: first, the exception E is thrown in run() but not declared. Second, any attempt to pass a closure containing nonlocal transfers would fail because this method only accepts restricted closures. So I don't see what "problem" with this example you're solving. > The same example with my syntax > > void fork() block() { > final void() throws Exception b = > (void() throws Exception)block; // cast is needed here > executor.submit(new Runnable() { > public void run() { > b.invoke(); // try/catch Exception needed here > } > }); > } If the cast succeeds (i.e. there is a subtype relationship), requiring a cast doesn't really make sense from a typing perspective. I don't see a difference with BGGA's functionality. It looks like your proposal allows exactly the kind of code you're concerned about, while BGGA forbids it. Your framework doesn't appear to support general exception transparency, as there is no way to store closures that are parameterized by the types of the exceptions they can throw. You've mentioned at the existence of these "closure" types, but I don't know what types rules you have in mind for them. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080716/c53b6dd8/attachment.html From forax at univ-mlv.fr Wed Jul 16 15:24:23 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Thu, 17 Jul 2008 00:24:23 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487CD8F0.7030900@univ-mlv.fr> <15e8b9d20807151223p74bf30a5m1ea91ede328e6cea@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> <487DFA27.8030006@univ-mlv.fr> <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> Message-ID: <487E7517.9000703@univ-mlv.fr> Neal Gafter a ?crit : > On Wed, Jul 16, 2008 at 6:39 AM, R?mi Forax > wrote: > > > Your syntax is ambiguous. There is no way to tell if it is to > be parsed as a single invocation > > IDENTIFIER ( ARGS ) BLOCK BLOCK > > or an invocation followed by a block > > IDENTIFIER ( ARGS ) BLOCK > BLOCK > > yes, the syntax is ambiguous but it can be solved by prefering the > former > than the later. > > > I don't think there is any reason to believe that the former is more > likely to be the programmer's intent than the latter. I don't agree, orphean blocks are rare. so I think it will not catch "the programmer's intent" but most of programmers intent. > ... > > Executor executor=... > ... > void fork( > final {=>void throws E} block) throws E { > executor.submit(new Runnable() { > public void run() { > block.invoke(); // need a try/catch E here > } > }); > } > > > This example would fail at compile-time in BGGA for at least two > reasons: first, the exception E is thrown in run() but not declared. yes > Second, any attempt to pass a closure containing nonlocal transfers > would fail because this method only accepts restricted closures. "this method" => which method ?? Please note that i don't call submit() directly. > So I don't see what "problem" with this example you're solving. > > > The same example with my syntax > > void fork() block() { > final void() throws Exception b = > (void() throws Exception)block; // cast is needed here > executor.submit(new Runnable() { > public void run() { > b.invoke(); // try/catch Exception needed here > } > }); > } > > > If the cast succeeds (i.e. there is a subtype relationship), requiring > a cast doesn't really make sense from a typing perspective. There is a subtyping relation between function type and closure type (restricted/unrestricted function type). > > I don't see a difference with BGGA's functionality. > > > It looks like your proposal allows exactly the kind of code you're > concerned about, while BGGA forbids it. No, BGGA don't forbid it. > Your framework doesn't appear to support general exception transparency, yes, it don't because i don't think it's necessary. > as there is no way to store closures that are parameterized by the > types of the exceptions they can throw. the function type will be not parametrized. > You've mentioned at the existence of these "closure" types, but I > don't know what types rules you have in mind for them. closure block type => BGGA's unrestricted function type function type => BGGA's restricted function type R?mi From neal at gafter.com Wed Jul 16 16:02:52 2008 From: neal at gafter.com (Neal Gafter) Date: Wed, 16 Jul 2008 16:02:52 -0700 Subject: Alternative syntax for closures In-Reply-To: <487E7517.9000703@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> <487DFA27.8030006@univ-mlv.fr> <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> <487E7517.9000703@univ-mlv.fr> Message-ID: <15e8b9d20807161602of469472k9203bb78bfd58232@mail.gmail.com> On Wed, Jul 16, 2008 at 3:24 PM, R?mi Forax wrote: > >> yes, the syntax is ambiguous but it can be solved by prefering the >> former >> than the later. >> >> >> I don't think there is any reason to believe that the former is more >> likely to be the programmer's intent than the latter. >> > I don't agree, orphean blocks are rare. > so I think it will not catch "the programmer's intent" but most of > programmers intent. I fundamentally disagree with designing a language based on an ambiguous syntax. > >> This example would fail at compile-time in BGGA for at least two reasons: >> first, the exception E is thrown in run() but not declared. >> > yes > >> Second, any attempt to pass a closure containing nonlocal transfers would >> fail because this method only accepts restricted closures. >> > "this method" => which method ?? > Please note that i don't call submit() directly. The method named "fork". > I don't see a difference with BGGA's functionality. >> >> >> It looks like your proposal allows exactly the kind of code you're >> concerned about, while BGGA forbids it. >> > > No, BGGA don't forbid it. You just agreed that it does (your "yes" above). If you think BGGA allows it, can you please write the example in a form that would be allowed under BGGA? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080716/2e192329/attachment.html From forax at univ-mlv.fr Wed Jul 16 16:44:00 2008 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Thu, 17 Jul 2008 01:44:00 +0200 Subject: Alternative syntax for closures In-Reply-To: <15e8b9d20807161602of469472k9203bb78bfd58232@mail.gmail.com> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487CFE20.6090802@univ-mlv.fr> <15e8b9d20807151259m16f04d3ve354e0feeb8b03f7@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> <487DFA27.8030006@univ-mlv.fr> <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> <487E7517.9000703@univ-mlv.fr> <15e8b9d20807161602of469472k9203bb78bfd58232@mail.gmail.com> Message-ID: <487E87C0.9030604@univ-mlv.fr> Neal Gafter a ?crit : > On Wed, Jul 16, 2008 at 3:24 PM, R?mi Forax > wrote: > > > yes, the syntax is ambiguous but it can be solved by > prefering the > former > than the later. > > > I don't think there is any reason to believe that the former > is more likely to be the programmer's intent than the latter. > > I don't agree, orphean blocks are rare. > so I think it will not catch "the programmer's intent" but most of > programmers intent. > > > I fundamentally disagree with designing a language based on an > ambiguous syntax. expr + expr + expr is ambiguous but it doesn't seem to be a big problem. > > > > This example would fail at compile-time in BGGA for at least > two reasons: first, the exception E is thrown in run() but not > declared. > > yes > > Second, any attempt to pass a closure containing nonlocal > transfers would fail because this method only accepts > restricted closures. > > "this method" => which method ?? > Please note that i don't call submit() directly. > > > The method named "fork". Ok, I understand now, i have used => instead of ==>, as i said in my blog i'm not able to remember which arrow defines an unrestricted function type. So here is the example with the correct BGGA syntax: void fork( final {==>void throws E} block) throws E { executor.submit(new Runnable() { public void run() { block.invoke(); // need a try/catch E here } }); } Are you agree that this example raise an exception is break/continue or return are used in the closure block ? And you ask me to translate this code using my syntax: void myIf( boolean cond, {=>void throws E} truePart, {=>void throws E} falsePart) throws E { (cond ? truePart : falsePart).invoke(); } There is no way to do that using the syntax i had proposed. This code: void myIf(boolean cond) truePart() falsePart() { if (cond) truePart().invoke(); else falsePart().invoke(); } is equivalent to this one: void myIf( boolean cond, {==>void throws E} truePart, {==>void throws E} falsePart) throws E { (cond ? truePart : falsePart).invoke(); } My point is that only unrestricted closure needs exception transparency, that why there is a special syntax for defining method that takes an unrestricted closure as parameter. R?mi From neal at gafter.com Wed Jul 16 17:16:48 2008 From: neal at gafter.com (Neal Gafter) Date: Wed, 16 Jul 2008 17:16:48 -0700 Subject: Alternative syntax for closures In-Reply-To: <487E87C0.9030604@univ-mlv.fr> References: <15e8b9d20807070007r3e66a5ffn4c81125d89fddd75@mail.gmail.com> <487D05A1.4000907@univ-mlv.fr> <15e8b9d20807151438qa4dc8efg3b58424582aacfa9@mail.gmail.com> <487D1FD5.3040402@univ-mlv.fr> <15e8b9d20807151857o2eb4be7dx646162b0341fe47f@mail.gmail.com> <487DFA27.8030006@univ-mlv.fr> <15e8b9d20807160758o27fad16chebac4e8a796b2a38@mail.gmail.com> <487E7517.9000703@univ-mlv.fr> <15e8b9d20807161602of469472k9203bb78bfd58232@mail.gmail.com> <487E87C0.9030604@univ-mlv.fr> Message-ID: <15e8b9d20807161716i66bd9b34l1048db885aac520c@mail.gmail.com> On Wed, Jul 16, 2008 at 4:44 PM, R?mi Forax wrote: > Neal Gafter a ?crit : > >> I fundamentally disagree with designing a language based on an ambiguous >> syntax. >> > expr + expr + expr is ambiguous but it doesn't seem to be a big problem. Actually, it isn't. The Java grammar supports only a single parse of this. > > void fork( > final {==>void throws E} block) throws E { > executor.submit(new Runnable() { > public void run() { > block.invoke(); // need a try/catch E here > } > }); > } > > Are you agree that this example raise an exception > is break/continue or return are used in the closure block ? No; this implementation of "fork" won't even compile (E is thrown but not caught or declared in run()). > My point is that only unrestricted closure needs exception transparency, > that why there is a special syntax for defining method that takes > an unrestricted closure as parameter. I disagree. Exception transparency is also useful outside control APIs, and even in control APIs there are cases where one needs to store the closure in a variable. Doing so in a typesafe manner is better than requiring a cast. For a simple example, try writing an API that can be used this way: new StringSwitch() .Case("xyzzy", { ==> System.out.println("found xyzzy"); }) .Case("plugh", { ==> System.out.println("found plugh"); }) .Case("foo", { ==> System.out.println("found foo"); }) .Dispatch("foo"); Your implementation should support exception transparency and control transparency. I believe you'll find that you need to store closures that have parametric exception types. See also http://gafter.blogspot.com/2006/10/concurrent-loops-using-java-closures.html. I expect to provide an implementation of the eachConcurrently API with one of the upcoming BGGA prototypes. I don't think this is possible with your formulation. A number of people who are most concerned about supporting control APIs in BGGA nevertheless advocate adding support for exception transparency. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080716/89f061a3/attachment.html From neal at gafter.com Fri Jul 18 12:08:48 2008 From: neal at gafter.com (Neal Gafter) Date: Fri, 18 Jul 2008 12:08:48 -0700 Subject: Implementation of transfers out of closures In-Reply-To: References: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> <27C03739-D6E6-4F97-A589-08635ABBDD6A@twistedbanana.demon.co.uk> <3E5B0AE8-7E1D-471C-B688-A1892956DD31@twistedbanana.demon.co.uk> <15e8b9d20807180828n61f8a742q71858dfef74f4191@mail.gmail.com> Message-ID: <15e8b9d20807181208x5bc26c69hfa99a112eaf2a18@mail.gmail.com> On Fri, Jul 18, 2008 at 11:53 AM, John Rose wrote: > In the example code, the dead field is superfluous. The code should just > set frame$.thread to null. One variable is always better than two, as far > as the JIT is concerned. Is that thread-safe? From the same thread, we see the correct value, and from another thread we see either null or the original thread's reference; either way we get the right behavior. Yes, good idea. > It is often better to put the throw early in the code, as soon as you know > there is going to be a throw, rather than make a method call which never > returns and throw from inside. Less for the compiler and runtime to unwrap. > Therefore, you might want to consider making the throwiness of > Jump.transfer public: Have transfer return a RuntimeEx which the caller > must then throw. It's no loss of generality: The transfer method does not > actually need to return on all implementations. Sounds good. Thanks for the other references, too! -Neal From John.Rose at Sun.COM Fri Jul 18 11:53:58 2008 From: John.Rose at Sun.COM (John Rose) Date: Fri, 18 Jul 2008 11:53:58 -0700 Subject: Implementation of transfers out of closures In-Reply-To: <15e8b9d20807180828n61f8a742q71858dfef74f4191@mail.gmail.com> References: <15e8b9d20807131711n1db303d8x68fc5836907811c6@mail.gmail.com> <27C03739-D6E6-4F97-A589-08635ABBDD6A@twistedbanana.demon.co.uk> <3E5B0AE8-7E1D-471C-B688-A1892956DD31@twistedbanana.demon.co.uk> <15e8b9d20807180828n61f8a742q71858dfef74f4191@mail.gmail.com> Message-ID: On Jul 18, 2008, at 8:28 AM, Neal Gafter wrote: > Here is some interesting fodder for possible hotspot optimizations. > These measure the performance of the initial implementation of > nonlocal returns. Mark didn't warm up the VM in his tests, but I > found that didn't make much difference. Yes, that's interesting. Thanks for sending Mark's code examples. Your design constraints look just right to me. The advantage from hand-inlining points to a possible use case for inlining advice. But more likely, the JVM will want to recognize the idiom (in some generic, robust way) and optimize it well. We already have an inlining heuristic that looks for throwing activity, more is probably needed. In the example code, the dead field is superfluous. The code should just set frame$.thread to null. One variable is always better than two, as far as the JIT is concerned. It is often better to put the throw early in the code, as soon as you know there is going to be a throw, rather than make a method call which never returns and throw from inside. Less for the compiler and runtime to unwrap. Therefore, you might want to consider making the throwiness of Jump.transfer public: Have transfer return a RuntimeEx which the caller must then throw. It's no loss of generality: The transfer method does not actually need to return on all implementations. (I like the idea of having UnmatchedNonlocalTransfer confess its target thread, and offer to restart the jump. Gives unexpected hope for interoperability to thread-splitting algorithms, like work- stealing evaluators.) Please see this thread for related discussions: http://mail.openjdk.java.net/pipermail/mlvm-dev/2008-May/000114.html http://mail.openjdk.java.net/pipermail/mlvm-dev/2008-June/000116.html Also, Hotspot 7 support a disassembler plugin which can guide code shape studies. See: http://wikis.sun.com/display/HotSpotInternals/PrintAssembly http://wikis.sun.com/display/HotSpotInternals/MicroBenchmarks The code sample for this blog entry is still worth looking at for ideas, such as an assertion-like switch which turns on backtraces for debugging: http://blogs.sun.com/jrose/entry/longjumps_considered_inexpensive Best wishes, -- John > ---------- Forwarded message ---------- > From: Mark Mahieu > Date: Mon, Jul 14, 2008 at 12:33 PM > Subject: Re: Implementation of transfers out of closures > To: Neal Gafter > Cc: closures-dev at openjdk.java.net > > > Here are versions which pass the code containing the Jump as a closure > - not directly comparable to the NormalReturn class: > > http://slm888.com/snippets/JumpReturnClosure.java > http://slm888.com/snippets/InlinedJumpReturnClosure.java > > The inlined version seems to complete in about 50% of the time on the > non-inlined version. > > > On 14 Jul 2008, at 20:09, Mark Mahieu wrote: > >> On 14 Jul 2008, at 01:11, Neal Gafter wrote: >>> >>> I have the following design constraints: >>> The "normal" case should be relatively fast. Specifically, there >>> should be no capturing of a stack trace when the transfer is >>> successful. >>> The structure of the generated code should take advantage of >>> existing hotspot optimizations and enable new ones. >> ... From tronicek at fel.cvut.cz Mon Jul 21 08:44:23 2008 From: tronicek at fel.cvut.cz (Zdenek Tronicek) Date: Mon, 21 Jul 2008 17:44:23 +0200 Subject: Syntax changes Message-ID: <20080721174423.8h4qsynjko8c8sso@wimap.feld.cvut.cz> Hi, my opinion is probably biased because I got used to the current syntax. But if I consider all the alternatives, the Groovy syntax seems the best for me: { int, int -> int } p = { int x, int y -> x + y }; As for the argument that the return type used to be written before the parameter types, I must admit that the syntax is unusual in this sense. But how the syntax would have looked like if we used the "function" syntax? For example: int (int, int) p = int (int x, int y) { x + y }; Although this is still acceptable, once there is one or more exceptions thrown, it is not easy to read: void (long) throws InterruptedException wait = void (long millis) throws InterruptedException { Thread.sleep(millis); } And a really mess will be when a closure returns or accepts another closure. In addition, closures are different to methods and this justifies a different syntax. As for the curly braces, I like them more than parenthesis because closure is a block of code. Z. -- Zdenek Tronicek Department of Computer Science and Engineering Prague tel: +420 2 2435 7410 http://cs.felk.cvut.cz/~tronicek From aschunk at gmail.com Tue Jul 22 10:39:12 2008 From: aschunk at gmail.com (Alexander Schunk) Date: Tue, 22 Jul 2008 19:39:12 +0200 Subject: Closures being part of Java 7? Message-ID: Hi, i am new to this list and would like to introduce myself first. I am a Java developper and also write books on Java for Oreilly publishers. We are planning to publish a book on Java 7 in early spring next year depending on when Java 7 will be publicly available. Now i am trying to get information on new language features that might be part of Java 7. I have learned from publicly available slides and other websites that i.g. superpackages and xml language support are seriously considered to be included. However, the thing thats interesting me most is: are Closures being part of Java 7? I hope to get an answer here from this list because i think that closures are really an important feature that Java should have since even scripting languages like Scala support it. Thank your for your replies. From misterm at gmail.com Tue Jul 22 10:42:07 2008 From: misterm at gmail.com (Michael Nascimento) Date: Tue, 22 Jul 2008 14:42:07 -0300 Subject: Closures being part of Java 7? In-Reply-To: References: Message-ID: <389b9d740807221042p2033fc83wc87f4e58afc5c994@mail.gmail.com> On Tue, Jul 22, 2008 at 2:39 PM, Alexander Schunk wrote: > However, the thing thats interesting me > most is: are Closures being part of Java 7? The right person to answer your question is Danny Coward. And I guess his answer will be no :-) > I hope to get an answer here from this list > because i think that closures are really > an important feature that Java should have > since even scripting languages like Scala > support it. Scala is not a scripting language. Regards, Michael Nascimento Santos https://genesis.dev.java.net/ https://jsr-310.dev.java.net/ From neal at gafter.com Tue Jul 22 12:16:57 2008 From: neal at gafter.com (Neal Gafter) Date: Tue, 22 Jul 2008 12:16:57 -0700 Subject: Closures being part of Java 7? In-Reply-To: References: Message-ID: <15e8b9d20807221216w44c35f2fj4cb82f41ad232cc0@mail.gmail.com> On Tue, Jul 22, 2008 at 10:39 AM, Alexander Schunk wrote: > Now i am trying to get information > on new language features that might > be part of Java 7. > > I have learned from publicly available slides and > other websites that i.g. superpackages > and xml language support are seriously > considered to be included. > > However, the thing thats interesting me > most is: are Closures being part of Java 7? Closures and XML support in Java 7 are unlikely. Java 7 itself is starting to seem unlikely ;-) -Neal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/closures-dev/attachments/20080722/13ee373d/attachment.html From Thomas.Hawtin at Sun.COM Tue Jul 22 12:33:38 2008 From: Thomas.Hawtin at Sun.COM (Tom Hawtin) Date: Tue, 22 Jul 2008 20:33:38 +0100 Subject: Closures being part of Java 7? In-Reply-To: <389b9d740807221042p2033fc83wc87f4e58afc5c994@mail.gmail.com> References: <389b9d740807221042p2033fc83wc87f4e58afc5c994@mail.gmail.com> Message-ID: <48863612.4010302@sun.com> Michael Nascimento wrote: > On Tue, Jul 22, 2008 at 2:39 PM, Alexander Schunk wrote: > >> I hope to get an answer here from this list >> because i think that closures are really >> an important feature that Java should have >> since even scripting languages like Scala ^^^^ >> support it. > > Scala is not a scripting language. I was under the impression that Scala is scalable in the sense that it scales to, for instance, scripting. So, a language for scripting, but certainly not a language only for scripting. But yes, even without Scala the "even" is out of place. I see no reason why closures would be out of place in "scripts". Tom Hawtin From misterm at gmail.com Tue Jul 22 13:48:47 2008 From: misterm at gmail.com (Michael Nascimento) Date: Tue, 22 Jul 2008 17:48:47 -0300 Subject: Closures being part of Java 7? In-Reply-To: <48863612.4010302@sun.com> References: <389b9d740807221042p2033fc83wc87f4e58afc5c994@mail.gmail.com> <48863612.4010302@sun.com> Message-ID: <389b9d740807221348x1461ab5er580002f54dc0dad2@mail.gmail.com> On Tue, Jul 22, 2008 at 4:33 PM, Tom Hawtin wrote: > I was under the impression that Scala is scalable in the sense that it > scales to, for instance, scripting. So, a language for scripting, but > certainly not a language only for scripting. Well, if you look at it that way, Java is a general purpose language in the sense that you can use it to build, for instance, desktop applications. Would you call it a desktop application language? :-) However, I have to agree with you that closures are such a basic construct they are needed in most environments. Even Clipper had support for closures (called blocks, there) - and I don't mean even in a bad sense, since I've used it for 3 years to develop applications when I was a kid. Regards, Michael