From weijun.wang at oracle.com Tue Mar 1 08:24:35 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Tue, 01 Mar 2011 08:24:35 +0000 Subject: hg: jdk7/tl/jdk: 7020531: test: java/security/cert/CertificateFactory/openssl/OpenSSLCert.java file not closed after run Message-ID: <20110301082445.754D247B64@hg.openjdk.java.net> Changeset: f8bf888edf20 Author: weijun Date: 2011-03-01 16:22 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f8bf888edf20 7020531: test: java/security/cert/CertificateFactory/openssl/OpenSSLCert.java file not closed after run Reviewed-by: alanb, smarks ! test/ProblemList.txt ! test/java/security/cert/CertificateFactory/openssl/OpenSSLCert.java ! test/sun/security/tools/keytool/NewSize7.java From Alan.Bateman at oracle.com Tue Mar 1 09:46:50 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 01 Mar 2011 09:46:50 +0000 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6C21DC.1010106@oracle.com> References: <4D6C21DC.1010106@oracle.com> Message-ID: <4D6CC08A.1060406@oracle.com> Stuart Marks wrote: > Here's a small webrev with changes to a handful of java.io tests to > use TWR. > > http://cr.openjdk.java.net/~smarks/reviews/7022624/webrev.0/ > > I have a few minor questions: > > * test/java/io/File/SetLastModified.java > > Should the channel corresponding to a stream be considered a separate > resource, or is it more like another object that represents the "same" > resource? Since closing one closes the other, I treated them as peers > and I didn't unroll the FileOutputStream and its channel into separate > resource variables. However, I'm flexible on this. The associated channel is connected to the same file as the input stream. In theory it might be possible for getChannel to fail with a virtual machine error (stack overflow or OOME for example) but for this test I think what you have is fine. > > * test/java/io/OutputStreamWriter/Encode.java > > Pretty clearly a ServerSocket is a distinct resource from a Socket > returned from the accept() call. However, does Socket.getInputStream() > represent a distinct resource from the Socket? In this case it seemed > most sensible to unroll them into separate resource variables, but > again I could go either way on this. I wouldn't bother but would instead reduce this down to three resources, maybe: try (ServerSocket listener = ss; Socket s = listener.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream())) { ... } While you are there, I assume ss should be final. Also might be good to put a try/finally around the encode at L50-52 to ensure that disconnect is called. > > * test/java/io/PrintStream/FailingConstructors.java > > Please check over my NIO usage here. Hm, I did more conversion here > than in the other FailingConstructors tests (see webrev for 7021209). > Maybe I should go back and fix the others.... Looks fine to me. > > * > test/java/io/Serializable/evolution/RenamePackage/install/SerialDriver.java > > * > test/java/io/Serializable/evolution/RenamePackage/test/SerialDriver.java > > Odd, seems like mostly duplicate code.... I don't know the history of that test but it does appear that it could have been written to generate the class to both packages rather than duplicating. I've looked at the other tests in the webrev and all looks okay to me. -Alan. From lvjing at linux.vnet.ibm.com Tue Mar 1 10:13:07 2011 From: lvjing at linux.vnet.ibm.com (Jing LV) Date: Tue, 01 Mar 2011 18:13:07 +0800 Subject: Support for Turkish locale Message-ID: <4D6CC6B3.4040908@linux.vnet.ibm.com> Hello, I've found several problem while using OpenJDK under Turkish Locale. For some examples: (All testcase should run with parameter -Duser.language=tr -Duser.region=TR) public static void main(String args[]) { System.out.println(" locale :" + Locale.getDefault()); ResourceBundle bundle = ResourceBundle.getBundle ("com.sun.java.swing.plaf.windows.resources.windows", Locale.getDefault()); System.out.println(" STRING :" + bundle.getString("FileChooser.newFolderActionLabelText")); } Excepted results: locale : tr_TR STRING : Yeni Klas?r But got: locale : tr_TR STRING : New Folder And public static void main(String args[]) { ResourceBundle bundle = ResourceBundle.getBundle("test", Locale .getDefault()); String sample = bundle.getString("string1"); System.out.println(" FirstString : " + sample); System.out.println(" SecondString : " + bundle.getString("string2")); } it requires a text file "test_tr.properties" with entries: test=\u00dcretilen ara kaynak dosyalar\u0131 silinmez\n test1=abc\u00f3def Excepted result: First String : ?This is a turkey? test Second String : simple?word But on windows XP, it was: First String : ?This is a turkey? test Second String : simple??word I also see http://bugs.sun.com/view_bug.do?bug_id=6341798, but sure if it is delivered already. So my question is, is Turkish Locale officially supported by OpenJDK? And is there some solutions already for such issues? If no, I can provide the fix. -- Best Regards, Jimmy, Jing LV From spoole at linux.vnet.ibm.com Tue Mar 1 10:23:22 2011 From: spoole at linux.vnet.ibm.com (Steve Poole) Date: Tue, 01 Mar 2011 10:23:22 +0000 Subject: How to find IBM's contributions? In-Reply-To: References: Message-ID: <1298975002.3269.2.camel@jazzette> On Fri, 2011-02-25 at 14:15 -0600, Paul Benedict wrote: > To the community, > > Is there any easily identifiable way to determine when IBM contributes > fixes/patches to the repositories? I know all Oracle employees have Oracle > email addresses. What about those from IBM? I was hoping to see what they > contribute since they joined OpenJDK. > > Thanks! > Paul Paul - I have to ask :-) - why do you want to know? Cheers Steve From lvjing at linux.vnet.ibm.com Tue Mar 1 10:25:17 2011 From: lvjing at linux.vnet.ibm.com (Jing LV) Date: Tue, 01 Mar 2011 18:25:17 +0800 Subject: Crash in ntdll.dll due to JdbcOdbcConnection Message-ID: <4D6CC98D.2090800@linux.vnet.ibm.com> Hello, I've found a bug, and find it already raised as Oracle Bug 7002634: Crash in ntdll.dll RtlEnterCriticalSection due to race condition in JdbcOdbcConnection. However it's been deferred. I believe I can provide a fix for this, would someone help me? Thanks! -- Best Regards, Jimmy, Jing LV From Alan.Bateman at oracle.com Tue Mar 1 10:35:28 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 01 Mar 2011 10:35:28 +0000 Subject: Support for Turkish locale In-Reply-To: <4D6CC6B3.4040908@linux.vnet.ibm.com> References: <4D6CC6B3.4040908@linux.vnet.ibm.com> Message-ID: <4D6CCBF0.8090703@oracle.com> Jing LV wrote: > Hello, > > I've found several problem while using OpenJDK under Turkish Locale. I don't know if the folks that maintain this area on this list, you might be better to bring it to i18n-dev. -Alan From Alan.Bateman at oracle.com Tue Mar 1 11:06:23 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 01 Mar 2011 11:06:23 +0000 Subject: Crash in ntdll.dll due to JdbcOdbcConnection In-Reply-To: <4D6CC98D.2090800@linux.vnet.ibm.com> References: <4D6CC98D.2090800@linux.vnet.ibm.com> Message-ID: <4D6CD32F.8030005@oracle.com> Jing LV wrote: > Hello, > > I've found a bug, and find it already raised as Oracle Bug 7002634: > Crash in ntdll.dll RtlEnterCriticalSection due to race condition in > JdbcOdbcConnection. > However it's been deferred. I believe I can provide a fix for this, > would someone help me? Thanks! > > Lance is the best person to comment on this but I don't think the JDBC-ODBC bridge has been maintained for a few years and probably isn't up to the latest JDBC version. No problem proposing a patch but I just wonder if it is actually used these days. -Alan. From alan.bateman at oracle.com Tue Mar 1 12:09:08 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Tue, 01 Mar 2011 12:09:08 +0000 Subject: hg: jdk7/tl/jdk: 7023034: Files.createTempDirectory((Path)null, "temp") does not throw NPE Message-ID: <20110301120938.E89BB47B71@hg.openjdk.java.net> Changeset: b7e763a573a4 Author: alanb Date: 2011-03-01 12:03 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b7e763a573a4 7023034: Files.createTempDirectory((Path)null, "temp") does not throw NPE Reviewed-by: forax ! src/share/classes/java/nio/file/Files.java ! test/java/nio/file/Files/TemporaryFiles.java From Lance.Andersen at oracle.com Tue Mar 1 13:08:33 2011 From: Lance.Andersen at oracle.com (Lance Andersen - Oracle) Date: Tue, 1 Mar 2011 08:08:33 -0500 Subject: Crash in ntdll.dll due to JdbcOdbcConnection In-Reply-To: <4D6CD32F.8030005@oracle.com> References: <4D6CC98D.2090800@linux.vnet.ibm.com> <4D6CD32F.8030005@oracle.com> Message-ID: <6FA6D81A-D36C-4500-ACEC-D0B82312DF35@oracle.com> Alan is correct, we do not officially support the bridge, from: http://download.oracle.com/javase/6/docs/technotes/guides/jdbc/bridge.html: Status of the JDBC-ODBC Bridge The JDBC-ODBC Bridge should be considered a transitional solution. Sun Microsystems and DataDirect Technologies are working to make the Bridge more reliable and robust, but they do not consider it a supported product. With the development of pure Java JDBC drivers, the JDBC-ODBC Bridge should become unnecessary. The above status has not changed in years (spanning multiple J2SE releases). No new features have been added to the JDBC-ODBC Bridge in quite some time and there is really no plan to enhance it. If you want to contribute a fix, I will look to include it when I have a cycle. Regards Lance On Mar 1, 2011, at 6:06 AM, Alan Bateman wrote: > Jing LV wrote: >> Hello, >> >> I've found a bug, and find it already raised as Oracle Bug 7002634: >> Crash in ntdll.dll RtlEnterCriticalSection due to race condition in >> JdbcOdbcConnection. >> However it's been deferred. I believe I can provide a fix for this, >> would someone help me? Thanks! >> >> > Lance is the best person to comment on this but I don't think the JDBC-ODBC bridge has been maintained for a few years and probably isn't up to the latest JDBC version. No problem proposing a patch but I just wonder if it is actually used these days. > > -Alan. > Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com Oracle is committed to developing practices and products that help protect the environment From Alan.Bateman at oracle.com Tue Mar 1 13:32:52 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 01 Mar 2011 13:32:52 +0000 Subject: Crash in ntdll.dll due to JdbcOdbcConnection In-Reply-To: <6FA6D81A-D36C-4500-ACEC-D0B82312DF35@oracle.com> References: <4D6CC98D.2090800@linux.vnet.ibm.com> <4D6CD32F.8030005@oracle.com> <6FA6D81A-D36C-4500-ACEC-D0B82312DF35@oracle.com> Message-ID: <4D6CF584.9020904@oracle.com> Lance Andersen - Oracle wrote: > : > > If you want to contribute a fix, I will look to include it when I have > a cycle. Silly me, I remembered something after replying - the JDBC-ODBC bridge isn't in the jdk repository, it's somewhere else and I think only ever shipped with the proprietary releases. -Alan. From pbenedict at apache.org Tue Mar 1 14:52:37 2011 From: pbenedict at apache.org (Paul Benedict) Date: Tue, 1 Mar 2011 08:52:37 -0600 Subject: How to find IBM's contributions? In-Reply-To: <1298975002.3269.2.camel@jazzette> References: <1298975002.3269.2.camel@jazzette> Message-ID: Steve, I worked with WebSphere for a long time and IBM's JDK class files (via the source code) were very interesting to read. I find it fascinating to see how companies diverge and converge on similar bugs. I wonder if any of those fixes in IBM's JDK will backport into OpenJDK? This project is all a very big and exciting experiment on large software development. So as I read the patches as they go by, it's interesting to see who is contributing what. Paul On Tue, Mar 1, 2011 at 4:23 AM, Steve Poole wrote: > On Fri, 2011-02-25 at 14:15 -0600, Paul Benedict wrote: > > To the community, > > > > Is there any easily identifiable way to determine when IBM contributes > > fixes/patches to the repositories? I know all Oracle employees have > Oracle > > email addresses. What about those from IBM? I was hoping to see what they > > contribute since they joined OpenJDK. > > > > Thanks! > > Paul > > Paul - I have to ask :-) - why do you want to know? > > Cheers > > Steve > > > > From forax at univ-mlv.fr Tue Mar 1 15:28:00 2011 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 01 Mar 2011 16:28:00 +0100 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6CC08A.1060406@oracle.com> References: <4D6C21DC.1010106@oracle.com> <4D6CC08A.1060406@oracle.com> Message-ID: <4D6D1080.9090004@univ-mlv.fr> Le 01/03/2011 10:46, Alan Bateman a ?crit : > Stuart Marks wrote: >> Here's a small webrev with changes to a handful of java.io tests to >> use TWR. >> >> http://cr.openjdk.java.net/~smarks/reviews/7022624/webrev.0/ > >> >> * test/java/io/OutputStreamWriter/Encode.java >> >> Pretty clearly a ServerSocket is a distinct resource from a Socket >> returned from the accept() call. However, does >> Socket.getInputStream() represent a distinct resource from the >> Socket? In this case it seemed most sensible to unroll them into >> separate resource variables, but again I could go either way on this. > I wouldn't bother but would instead reduce this down to three > resources, maybe: > > try (ServerSocket listener = ss; > Socket s = listener.accept(); > BufferedReader reader = new BufferedReader(new > InputStreamReader(s.getInputStream())) > { > ... > } > > While you are there, I assume ss should be final. Local variables declared in a try-with resources are implicitly final. > > -Alan. > R?mi From philip.race at oracle.com Tue Mar 1 15:40:15 2011 From: philip.race at oracle.com (Phil Race) Date: Tue, 01 Mar 2011 07:40:15 -0800 Subject: Support for Turkish locale In-Reply-To: <4D6CC6B3.4040908@linux.vnet.ibm.com> References: <4D6CC6B3.4040908@linux.vnet.ibm.com> Message-ID: <4D6D135F.9050306@oracle.com> This is a localisation issue (not internationalisation issue as Alan suggested). but the bottom line is whilst many locales are supported that does not mean that user interface messages are translated into all those locales. There's a huge cost issue behind that. There was an openjdk project to add Brazilian Portugese localisation and if Turkish is important then something similar would need to be done there. But it implies an ongoing commitment to update those messages and test them and that's a cost too. -phil. On 3/1/2011 2:13 AM, Jing LV wrote: > Hello, > > I've found several problem while using OpenJDK under Turkish Locale. > For some examples: > > (All testcase should run with parameter -Duser.language=tr > -Duser.region=TR) > > public static void main(String args[]) { > System.out.println(" locale :" + Locale.getDefault()); > ResourceBundle bundle = ResourceBundle.getBundle > ("com.sun.java.swing.plaf.windows.resources.windows", > Locale.getDefault()); > System.out.println(" STRING :" + > bundle.getString("FileChooser.newFolderActionLabelText")); > } > > Excepted results: > locale : tr_TR > STRING : Yeni Klas?r > But got: > locale : tr_TR > STRING : New Folder > > And > public static void main(String args[]) { > > ResourceBundle bundle = ResourceBundle.getBundle("test", Locale > .getDefault()); > String sample = bundle.getString("string1"); > System.out.println(" FirstString : " + sample); > System.out.println(" SecondString : " + > bundle.getString("string2")); > } > it requires a text file "test_tr.properties" with entries: > test=\u00dcretilen ara kaynak dosyalar\u0131 silinmez\n > test1=abc\u00f3def > Excepted result: > First String : ?This is a turkey? test > Second String : simple?word > But on windows XP, it was: > First String : ?This is a turkey? test > Second String : simple??word > > I also see http://bugs.sun.com/view_bug.do?bug_id=6341798, but > sure if it is delivered already. > > So my question is, is Turkish Locale officially supported by OpenJDK? > And is there some solutions already for such issues? If no, I can > provide the fix. > From jason_mehrens at hotmail.com Tue Mar 1 15:42:41 2011 From: jason_mehrens at hotmail.com (Jason Mehrens) Date: Tue, 1 Mar 2011 09:42:41 -0600 Subject: Crash in ntdll.dll due to JdbcOdbcConnection In-Reply-To: <4D6CD32F.8030005@oracle.com> References: <4D6CC98D.2090800@linux.vnet.ibm.com>,<4D6CD32F.8030005@oracle.com> Message-ID: > Lance is the best person to comment on this but I don't think the > JDBC-ODBC bridge has been maintained for a few years and probably isn't > up to the latest JDBC version. No problem proposing a patch but I just > wonder if it is actually used these days. The only thing I've used the JDBC-ODBC bridge driver in production is to test if a named ODBC link exists and is configured correctly by opening and closing a connection in method local scope. This is handy to do when you have a java app that has to test that a machine as been configured correctly to launch and or monitor legacy jobs that require ODBC. Jason From Alan.Bateman at oracle.com Tue Mar 1 15:45:18 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 01 Mar 2011 15:45:18 +0000 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6D1080.9090004@univ-mlv.fr> References: <4D6C21DC.1010106@oracle.com> <4D6CC08A.1060406@oracle.com> <4D6D1080.9090004@univ-mlv.fr> Message-ID: <4D6D148E.8040002@oracle.com> R?mi Forax wrote: > : >> >> >> try (ServerSocket listener = ss; >> Socket s = listener.accept(); >> BufferedReader reader = new BufferedReader(new >> InputStreamReader(s.getInputStream())) >> { >> ... >> } >> >> While you are there, I assume ss should be final. > > Local variables declared in a try-with resources are implicitly final. True, but this was just a minor comment on the RHS where it would be clearer if ss were final. -Alan From philip.race at oracle.com Tue Mar 1 17:08:01 2011 From: philip.race at oracle.com (Phil Race) Date: Tue, 01 Mar 2011 09:08:01 -0800 Subject: Support for Turkish locale In-Reply-To: <4D6D135F.9050306@oracle.com> References: <4D6CC6B3.4040908@linux.vnet.ibm.com> <4D6D135F.9050306@oracle.com> Message-ID: <4D6D27F1.4070809@oracle.com> I should clarify that Alan is correct that the i18n-dev list is the more appropriate place to raise this as its the right place to discuss I18N and L10N .. since I don't know of any L10N list. -phil. On 3/1/2011 7:40 AM, Phil Race wrote: > This is a localisation issue (not internationalisation issue as Alan > suggested). > but the bottom line is whilst many locales are supported that does not > mean that user interface messages are translated into all those locales. > There's a huge cost issue behind that. There was an openjdk project to > add Brazilian Portugese localisation and if Turkish is important then > something similar would need to be done there. But it implies an ongoing > commitment to update those messages and test them and that's a cost too. > > -phil. > > On 3/1/2011 2:13 AM, Jing LV wrote: >> Hello, >> >> I've found several problem while using OpenJDK under Turkish Locale. >> For some examples: >> >> (All testcase should run with parameter -Duser.language=tr >> -Duser.region=TR) >> >> public static void main(String args[]) { >> System.out.println(" locale :" + Locale.getDefault()); >> ResourceBundle bundle = ResourceBundle.getBundle >> ("com.sun.java.swing.plaf.windows.resources.windows", >> Locale.getDefault()); >> System.out.println(" STRING :" + >> bundle.getString("FileChooser.newFolderActionLabelText")); >> } >> >> Excepted results: >> locale : tr_TR >> STRING : Yeni Klas?r >> But got: >> locale : tr_TR >> STRING : New Folder >> >> And >> public static void main(String args[]) { >> >> ResourceBundle bundle = ResourceBundle.getBundle("test", Locale >> .getDefault()); >> String sample = bundle.getString("string1"); >> System.out.println(" FirstString : " + sample); >> System.out.println(" SecondString : " + >> bundle.getString("string2")); >> } >> it requires a text file "test_tr.properties" with entries: >> test=\u00dcretilen ara kaynak dosyalar\u0131 silinmez\n >> test1=abc\u00f3def >> Excepted result: >> First String : ?This is a turkey? test >> Second String : simple?word >> But on windows XP, it was: >> First String : ?This is a turkey? test >> Second String : simple??word >> >> I also see http://bugs.sun.com/view_bug.do?bug_id=6341798, but >> sure if it is delivered already. >> >> So my question is, is Turkish Locale officially supported by OpenJDK? >> And is there some solutions already for such issues? If no, I can >> provide the fix. >> > From naoto.sato at oracle.com Tue Mar 1 17:30:10 2011 From: naoto.sato at oracle.com (Naoto Sato) Date: Tue, 01 Mar 2011 09:30:10 -0800 Subject: Support for Turkish locale In-Reply-To: <4D6D135F.9050306@oracle.com> References: <4D6CC6B3.4040908@linux.vnet.ibm.com> <4D6D135F.9050306@oracle.com> Message-ID: <4D6D2D22.8020303@oracle.com> As Phil said, Turkish is not in the "User Interface Translation" list that Oracle JRE provides (http://www.oracle.com/technetwork/java/javase/locales-137662.html#translation). So you won't see FileChooser UI texts in Turkish even in Turkish locale. The second issue you raised is a bit different. I'd expect to see Turkish if you provide your own properties file. Please check if there is any errors in your program. At least I see that you are using "string1/string2" keys with ResourceBundle.getString() method, while your test_tr.properties has "test1/test2" keys. Naoto (3/1/11 7:40 AM), Phil Race wrote: > This is a localisation issue (not internationalisation issue as Alan > suggested). > but the bottom line is whilst many locales are supported that does not > mean that user interface messages are translated into all those locales. > There's a huge cost issue behind that. There was an openjdk project to > add Brazilian Portugese localisation and if Turkish is important then > something similar would need to be done there. But it implies an ongoing > commitment to update those messages and test them and that's a cost too. > > -phil. > > On 3/1/2011 2:13 AM, Jing LV wrote: >> Hello, >> >> I've found several problem while using OpenJDK under Turkish Locale. >> For some examples: >> >> (All testcase should run with parameter -Duser.language=tr >> -Duser.region=TR) >> >> public static void main(String args[]) { >> System.out.println(" locale :" + Locale.getDefault()); >> ResourceBundle bundle = ResourceBundle.getBundle >> ("com.sun.java.swing.plaf.windows.resources.windows", >> Locale.getDefault()); >> System.out.println(" STRING :" + >> bundle.getString("FileChooser.newFolderActionLabelText")); >> } >> >> Excepted results: >> locale : tr_TR >> STRING : Yeni Klas?r >> But got: >> locale : tr_TR >> STRING : New Folder >> >> And >> public static void main(String args[]) { >> >> ResourceBundle bundle = ResourceBundle.getBundle("test", Locale >> .getDefault()); >> String sample = bundle.getString("string1"); >> System.out.println(" FirstString : " + sample); >> System.out.println(" SecondString : " + bundle.getString("string2")); >> } >> it requires a text file "test_tr.properties" with entries: >> test=\u00dcretilen ara kaynak dosyalar\u0131 silinmez\n >> test1=abc\u00f3def >> Excepted result: >> First String : ?This is a turkey? test >> Second String : simple?word >> But on windows XP, it was: >> First String : ?This is a turkey? test >> Second String : simple??word >> >> I also see http://bugs.sun.com/view_bug.do?bug_id=6341798, but sure if >> it is delivered already. >> >> So my question is, is Turkish Locale officially supported by OpenJDK? >> And is there some solutions already for such issues? If no, I can >> provide the fix. >> > From jonathan.gibbons at oracle.com Tue Mar 1 20:00:34 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Tue, 01 Mar 2011 20:00:34 +0000 Subject: hg: jdk7/tl/langtools: 7021183: 269: assertion failure getting enclosing element of an undefined name Message-ID: <20110301200037.108CA47B8F@hg.openjdk.java.net> Changeset: 938dda0bec17 Author: jjg Date: 2011-03-01 12:00 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/938dda0bec17 7021183: 269: assertion failure getting enclosing element of an undefined name Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/code/Symtab.java + test/tools/javac/processing/model/TestSymtabItems.java From stuart.marks at oracle.com Tue Mar 1 22:20:10 2011 From: stuart.marks at oracle.com (Stuart Marks) Date: Tue, 01 Mar 2011 14:20:10 -0800 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6CC08A.1060406@oracle.com> References: <4D6C21DC.1010106@oracle.com> <4D6CC08A.1060406@oracle.com> Message-ID: <4D6D711A.4030709@oracle.com> On 3/1/11 1:46 AM, Alan Bateman wrote: > Stuart Marks wrote: >> Here's a small webrev with changes to a handful of java.io tests to use TWR. >> >> http://cr.openjdk.java.net/~smarks/reviews/7022624/webrev.0/ [snip] >> * test/java/io/OutputStreamWriter/Encode.java >> >> Pretty clearly a ServerSocket is a distinct resource from a Socket returned >> from the accept() call. However, does Socket.getInputStream() represent a >> distinct resource from the Socket? In this case it seemed most sensible to >> unroll them into separate resource variables, but again I could go either way >> on this. > I wouldn't bother but would instead reduce this down to three resources, maybe: > > try (ServerSocket listener = ss; > Socket s = listener.accept(); > BufferedReader reader = new BufferedReader(new > InputStreamReader(s.getInputStream())) > { > ... > } Sounds reasonable. > While you are there, I assume ss should be final. Also might be good to put a > try/finally around the encode at L50-52 to ensure that disconnect is called. Yeah, both are a good idea. Thanks. s'marks From stuart.marks at oracle.com Tue Mar 1 22:26:44 2011 From: stuart.marks at oracle.com (Stuart Marks) Date: Tue, 01 Mar 2011 14:26:44 -0800 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6D1080.9090004@univ-mlv.fr> References: <4D6C21DC.1010106@oracle.com> <4D6CC08A.1060406@oracle.com> <4D6D1080.9090004@univ-mlv.fr> Message-ID: <4D6D72A4.5020505@oracle.com> On 3/1/11 7:28 AM, R?mi Forax wrote: > Le 01/03/2011 10:46, Alan Bateman a ?crit : >> Stuart Marks wrote: >>> Here's a small webrev with changes to a handful of java.io tests to use TWR. >>> >>> http://cr.openjdk.java.net/~smarks/reviews/7022624/webrev.0/ >>> >>> * test/java/io/OutputStreamWriter/Encode.java >>> >>> Pretty clearly a ServerSocket is a distinct resource from a Socket returned >>> from the accept() call. However, does Socket.getInputStream() represent a >>> distinct resource from the Socket? In this case it seemed most sensible to >>> unroll them into separate resource variables, but again I could go either >>> way on this. >> I wouldn't bother but would instead reduce this down to three resources, maybe: >> >> try (ServerSocket listener = ss; >> Socket s = listener.accept(); >> BufferedReader reader = new BufferedReader(new >> InputStreamReader(s.getInputStream())) >> { >> ... >> } >> >> While you are there, I assume ss should be final. > > Local variables declared in a try-with resources are implicitly final. Alan means the field ss, which is a mutable field written by one thread and read by another. I don't think the code as it stands is incorrect, but you have to do a fair bit of reading before you can figure out what it's trying to do and to verify that it's doing it correctly. Making ss final would help, as the field doesn't really need to be mutable. Moving the declaration of ss before the constructor would help too. As it stands it looks like the run() method reads an uninitialized ss. s'marks From stuart.marks at oracle.com Tue Mar 1 23:43:01 2011 From: stuart.marks at oracle.com (stuart.marks at oracle.com) Date: Tue, 01 Mar 2011 23:43:01 +0000 Subject: hg: jdk7/tl/jdk: 7022624: use try-with-resources in java.io tests Message-ID: <20110301234311.C69BC47BA5@hg.openjdk.java.net> Changeset: 98d2d57d9e73 Author: smarks Date: 2011-03-01 15:05 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/98d2d57d9e73 7022624: use try-with-resources in java.io tests Reviewed-by: alanb ! test/java/io/File/SetLastModified.java ! test/java/io/FileOutputStream/AtomicAppend.java ! test/java/io/OutputStreamWriter/Encode.java ! test/java/io/PrintStream/EncodingConstructor.java ! test/java/io/PrintStream/FailingConstructors.java ! test/java/io/Serializable/evolution/RenamePackage/install/SerialDriver.java ! test/java/io/Serializable/evolution/RenamePackage/test/SerialDriver.java From forax at univ-mlv.fr Wed Mar 2 00:55:34 2011 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Wed, 02 Mar 2011 01:55:34 +0100 Subject: review request for 7022624, convert java.io test to use try-with-resources In-Reply-To: <4D6D72A4.5020505@oracle.com> References: <4D6C21DC.1010106@oracle.com> <4D6CC08A.1060406@oracle.com> <4D6D1080.9090004@univ-mlv.fr> <4D6D72A4.5020505@oracle.com> Message-ID: <4D6D9586.40503@univ-mlv.fr> On 03/01/2011 11:26 PM, Stuart Marks wrote: > On 3/1/11 7:28 AM, R?mi Forax wrote: >> Le 01/03/2011 10:46, Alan Bateman a ?crit : >>> Stuart Marks wrote: >>>> Here's a small webrev with changes to a handful of java.io tests to >>>> use TWR. >>>> >>>> http://cr.openjdk.java.net/~smarks/reviews/7022624/webrev.0/ >>>> >>>> * test/java/io/OutputStreamWriter/Encode.java >>>> >>>> Pretty clearly a ServerSocket is a distinct resource from a Socket >>>> returned >>>> from the accept() call. However, does Socket.getInputStream() >>>> represent a >>>> distinct resource from the Socket? In this case it seemed most >>>> sensible to >>>> unroll them into separate resource variables, but again I could go >>>> either >>>> way on this. >>> I wouldn't bother but would instead reduce this down to three >>> resources, maybe: >>> >>> try (ServerSocket listener = ss; >>> Socket s = listener.accept(); >>> BufferedReader reader = new BufferedReader(new >>> InputStreamReader(s.getInputStream())) >>> { >>> ... >>> } >>> >>> While you are there, I assume ss should be final. >> >> Local variables declared in a try-with resources are implicitly final. > > Alan means the field ss, which is a mutable field written by one > thread and read by another. I don't think the code as it stands is > incorrect, but you have to do a fair bit of reading before you can > figure out what it's trying to do and to verify that it's doing it > correctly. Making ss final would help, as the field doesn't really > need to be mutable. Moving the declaration of ss before the > constructor would help too. As it stands it looks like the run() > method reads an uninitialized ss. > > s'marks Ok, got it. R?mi From littlee at linux.vnet.ibm.com Wed Mar 2 08:32:32 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Wed, 02 Mar 2011 16:32:32 +0800 Subject: How can I get all emails from this mailing list Message-ID: <4D6E00A0.4020905@linux.vnet.ibm.com> Hi guys, I have noticed AsynchronousDatagramChannel has been removed. I am curious about this. So It comes to me that I can not find such topic in the mailing list. I know the archive is http://mail.openjdk.java.net/pipermail/jdk7-dev/, but there is no search function there. Does anyone has some secret ways to solve this problem? From David.Holmes at oracle.com Wed Mar 2 08:46:19 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 02 Mar 2011 18:46:19 +1000 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E00A0.4020905@linux.vnet.ibm.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> Message-ID: <4D6E03DB.7040300@oracle.com> Charles Lee said the following on 03/02/11 18:32: > I have noticed AsynchronousDatagramChannel has been removed. I am > curious about this. So It comes to me that I can not find such topic in > the mailing list. I know the archive is > http://mail.openjdk.java.net/pipermail/jdk7-dev/, Try: http://mail.openjdk.java.net/pipermail/core-libs-dev/ > but there is no search > function there. Does anyone has some secret ways to solve this problem? You can try something like this on google: site:mail.openjdk.java.net core-libs-dev AsynchronousDatagramChannel there are probably better ways. HTH David Holmes From littlee at linux.vnet.ibm.com Wed Mar 2 08:55:40 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Wed, 02 Mar 2011 16:55:40 +0800 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E03DB.7040300@oracle.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> <4D6E03DB.7040300@oracle.com> Message-ID: <4D6E060C.5070807@linux.vnet.ibm.com> On 03/02/2011 04:46 PM, David Holmes wrote: > Charles Lee said the following on 03/02/11 18:32: >> I have noticed AsynchronousDatagramChannel has been removed. I am >> curious about this. So It comes to me that I can not find such topic >> in the mailing list. I know the archive is >> http://mail.openjdk.java.net/pipermail/jdk7-dev/, > > Try: > > http://mail.openjdk.java.net/pipermail/core-libs-dev/ > >> but there is no search function there. Does anyone has some secret >> ways to solve this problem? > > You can try something like this on google: > > site:mail.openjdk.java.net core-libs-dev AsynchronousDatagramChannel > > there are probably better ways. > > HTH > > David Holmes Thanks David. Using site:mail.openjdk.java.net core-libs-dev AsynchronousDatagramChannel, it is still not easy for me to find the AsynchronousDatagramChannel discussions. Is there any place, which is like http://markmail.org/, holding all the mailing from openjdk mailing list? From eliasen at mindspring.com Wed Mar 2 09:02:10 2011 From: eliasen at mindspring.com (Alan Eliasen) Date: Wed, 02 Mar 2011 02:02:10 -0700 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E03DB.7040300@oracle.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> <4D6E03DB.7040300@oracle.com> Message-ID: <4D6E0792.50401@mindspring.com> On 03/02/2011 01:46 AM, David Holmes wrote: > You can try something like this on google: > > site:mail.openjdk.java.net core-libs-dev AsynchronousDatagramChannel > > there are probably better ways. That won't work because the pages are marked so nobody will be able to do a web search for any content here. I reported this months ago. It's a pretty big issue for all of these forums because you can't search for existing solutions, discussions, etc. -- Alan Eliasen eliasen at mindspring.com http://futureboy.us/ From Alan.Bateman at oracle.com Wed Mar 2 09:03:16 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 02 Mar 2011 09:03:16 +0000 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E00A0.4020905@linux.vnet.ibm.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> Message-ID: <4D6E07D4.6010700@oracle.com> Charles Lee wrote: > Hi guys, > > I have noticed AsynchronousDatagramChannel has been removed. I am > curious about this. So It comes to me that I can not find such topic > in the mailing list. I know the archive is > http://mail.openjdk.java.net/pipermail/jdk7-dev/, but there is no > search function there. Does anyone has some secret ways to solve this > problem? The nio-dev list is where this was discussed [1]. -Alan [1] http://mail.openjdk.java.net/pipermail/nio-dev/2010-October/001122.html From littlee at linux.vnet.ibm.com Wed Mar 2 09:14:09 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Wed, 02 Mar 2011 17:14:09 +0800 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E07D4.6010700@oracle.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> <4D6E07D4.6010700@oracle.com> Message-ID: <4D6E0A61.8040705@linux.vnet.ibm.com> On 03/02/2011 05:03 PM, Alan Bateman wrote: > Charles Lee wrote: >> Hi guys, >> >> I have noticed AsynchronousDatagramChannel has been removed. I am >> curious about this. So It comes to me that I can not find such topic >> in the mailing list. I know the archive is >> http://mail.openjdk.java.net/pipermail/jdk7-dev/, but there is no >> search function there. Does anyone has some secret ways to solve this >> problem? > The nio-dev list is where this was discussed [1]. > > -Alan > > [1] > http://mail.openjdk.java.net/pipermail/nio-dev/2010-October/001122.html > Thanks Alan. From David.Holmes at oracle.com Wed Mar 2 09:44:03 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 02 Mar 2011 19:44:03 +1000 Subject: How can I get all emails from this mailing list In-Reply-To: <4D6E0792.50401@mindspring.com> References: <4D6E00A0.4020905@linux.vnet.ibm.com> <4D6E03DB.7040300@oracle.com> <4D6E0792.50401@mindspring.com> Message-ID: <4D6E1163.1020107@oracle.com> Alan, Alan Eliasen said the following on 03/02/11 19:02: > On 03/02/2011 01:46 AM, David Holmes wrote: >> You can try something like this on google: >> >> site:mail.openjdk.java.net core-libs-dev AsynchronousDatagramChannel >> >> there are probably better ways. > > That won't work because the pages are marked > > > > so nobody will be able to do a web search for any content here. I > reported this months ago. It's a pretty big issue for all of these > forums because you can't search for existing solutions, discussions, etc. I suggest you try again, I tested it before I posted it. David From maurizio.cimadamore at oracle.com Wed Mar 2 10:57:21 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 02 Mar 2011 10:57:21 +0000 Subject: hg: jdk7/tl/langtools: 6541876: "Enclosing Instance" error new in 1.6 Message-ID: <20110302105725.7DECE47BC5@hg.openjdk.java.net> Changeset: 02b699d97a55 Author: mcimadamore Date: 2011-03-02 10:56 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/02b699d97a55 6541876: "Enclosing Instance" error new in 1.6 Summary: unqualified 'this' should not be selected in a qualified super() call in a default constructor Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/comp/Lower.java ! src/share/classes/com/sun/tools/javac/comp/Resolve.java + test/tools/javac/implicitThis/6541876/T6541876a.java + test/tools/javac/implicitThis/6541876/T6541876b.java ! test/tools/javac/implicitThis/NewBeforeOuterConstructed3.java ! test/tools/javac/nested/4903103/T4903103.java From Alan.Bateman at oracle.com Wed Mar 2 15:12:00 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 02 Mar 2011 15:12:00 +0000 Subject: 7021987: native2ascii "file cannot be read" error message is broken Message-ID: <4D6E5E40.7030708@oracle.com> I need a reviewer for a small regression in the native2ascii tool whereby its error messages aren't as expected. Early in the jdk7 this code appears to have been changed to address a "non-varargs call of varargs method" warning in a usage of MessgaeFormat.format. A cast was added to cast a String[] to an Object resulting in the compiler treating it as a varargs call. I've used the opportunity to eliminate a raw type warning in this code and replace a usage of legacy j.u.Vector with List. This is old code with other "opportunities" to do cleanup but I don't have time to spent time on it. The webrev with the changes is here: http://cr.openjdk.java.net/~alanb/7021987/webrev/ Thanks, Alan. From Lance.Andersen at oracle.com Wed Mar 2 15:54:08 2011 From: Lance.Andersen at oracle.com (Lance Andersen - Oracle) Date: Wed, 2 Mar 2011 10:54:08 -0500 Subject: 7021987: native2ascii "file cannot be read" error message is broken In-Reply-To: <4D6E5E40.7030708@oracle.com> References: <4D6E5E40.7030708@oracle.com> Message-ID: <92F213BA-E25A-4ACA-B840-137A472AE783@oracle.com> looks fine Alan On Mar 2, 2011, at 10:12 AM, Alan Bateman wrote: > > I need a reviewer for a small regression in the native2ascii tool whereby its error messages aren't as expected. Early in the jdk7 this code appears to have been changed to address a "non-varargs call of varargs method" warning in a usage of MessgaeFormat.format. A cast was added to cast a String[] to an Object resulting in the compiler treating it as a varargs call. I've used the opportunity to eliminate a raw type warning in this code and replace a usage of legacy j.u.Vector with List. This is old code with other "opportunities" to do cleanup but I don't have time to spent time on it. The webrev with the changes is here: > http://cr.openjdk.java.net/~alanb/7021987/webrev/ > > Thanks, > Alan. > Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com Oracle is committed to developing practices and products that help protect the environment From mandy.chung at oracle.com Wed Mar 2 16:11:35 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Wed, 02 Mar 2011 08:11:35 -0800 Subject: 7021987: native2ascii "file cannot be read" error message is broken In-Reply-To: <4D6E5E40.7030708@oracle.com> References: <4D6E5E40.7030708@oracle.com> Message-ID: <4D6E6C37.5090201@oracle.com> Thumbs up. Mandy On 3/2/11 7:12 AM, Alan Bateman wrote: > > I need a reviewer for a small regression in the native2ascii tool > whereby its error messages aren't as expected. Early in the jdk7 this > code appears to have been changed to address a "non-varargs call of > varargs method" warning in a usage of MessgaeFormat.format. A cast was > added to cast a String[] to an Object resulting in the compiler > treating it as a varargs call. I've used the opportunity to eliminate > a raw type warning in this code and replace a usage of legacy > j.u.Vector with List. This is old code with other "opportunities" to > do cleanup but I don't have time to spent time on it. The webrev with > the changes is here: > http://cr.openjdk.java.net/~alanb/7021987/webrev/ > > Thanks, > Alan. > From alan.bateman at oracle.com Wed Mar 2 17:17:06 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Wed, 02 Mar 2011 17:17:06 +0000 Subject: hg: jdk7/tl/jdk: 7021987: native2ascii "file cannot be read" error message is broken Message-ID: <20110302171717.1A3E547BD2@hg.openjdk.java.net> Changeset: 895687e879ca Author: alanb Date: 2011-03-02 16:56 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/895687e879ca 7021987: native2ascii "file cannot be read" error message is broken Reviewed-by: lancea, mchung ! src/share/classes/sun/tools/native2ascii/Main.java ! test/sun/tools/native2ascii/Native2AsciiTests.sh From kelly.ohair at oracle.com Wed Mar 2 19:38:51 2011 From: kelly.ohair at oracle.com (Kelly O'Hair) Date: Wed, 2 Mar 2011 11:38:51 -0800 Subject: Need reviewers: Update of jaxp 1.4.5 source drop bundle Message-ID: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> Need reviewer for change in jaxp source drop bundle 7023289: jaxp 1.4.5 development jdk7 2nd integration http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxp-145dev1/webrev/ Joe or someone from the JAXP team may want to comment on the specific changes in this new source bundle. -kto From Alan.Bateman at oracle.com Wed Mar 2 19:48:11 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 02 Mar 2011 19:48:11 +0000 Subject: Need reviewers: Update of jaxp 1.4.5 source drop bundle In-Reply-To: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> References: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> Message-ID: <4D6E9EFB.4000506@oracle.com> Kelly O'Hair wrote: > Need reviewer for change in jaxp source drop bundle > > 7023289: jaxp 1.4.5 development jdk7 2nd integration > http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxp-145dev1/webrev/ > > Joe or someone from the JAXP team may want to comment on the specific changes in this new > source bundle. > > -kto > > The update to jaxp.properties looks okay to me. -Alan From jonathan.gibbons at oracle.com Wed Mar 2 22:04:26 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Wed, 02 Mar 2011 22:04:26 +0000 Subject: hg: jdk7/tl/langtools: 6986895: compiler gives misleading message for no input files Message-ID: <20110302220428.5DDF547BE2@hg.openjdk.java.net> Changeset: 2a5c919f20b8 Author: jjg Date: 2011-03-02 14:03 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/2a5c919f20b8 6986895: compiler gives misleading message for no input files Reviewed-by: darcy ! 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/resources/javac.properties + test/tools/javac/options/T6986895.java From rama.pulavarthi at oracle.com Wed Mar 2 23:03:47 2011 From: rama.pulavarthi at oracle.com (Rama Pulavarthi) Date: Wed, 02 Mar 2011 15:03:47 -0800 Subject: Problem running webrev on linux Message-ID: <4D6ECCD3.3050708@oracle.com> Hi, I am having problems running webrev on Ubuntu 10.04.It is stuck while generating the framed_sdiff. The function relative_dir seems to get wrong input as d1, d2 does not have a common root as logged below and even the check in the function to find it fails and is stuck in loop. I updated gawk from 3.1.6 to 3.1.8 and still see the same problem. Do others face this problem? Input to function framed_sdiff ************** debug TNAME=java.security ************** debug TPATH=src/share/lib/security ************** debug lhsfile=/tmp/28650.file1.html ************** debug rhsfile=/tmp/28650.file2.html ************** debug comment= ************** debug WDIR=/home2/ramkris/w/jdk/jdk7/7020513-new/tl/jdk/webrev Input to function relative_dir ************** debug d1= src/share/lib/security ************** debug d2=/home2/ramkris/w/jdk/jdk7/7020513-new/tl/jdk/webrev ************** debug 1 src/share/lib/security ************** debug 2 src/share/lib/security ************** debug 2 src/share/lib/security .. ************** debug 3 ************** debug 2 src/share/lib/security ../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../../../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../../../../../.. ************** debug 3 ************** debug 2 src/share/lib/security ../../../../../../../../.. ************** debug 3 ..... thanks, Rama Pulavarthi From huizhe.wang at oracle.com Wed Mar 2 19:55:49 2011 From: huizhe.wang at oracle.com (Joe Wang) Date: Wed, 02 Mar 2011 11:55:49 -0800 Subject: Need reviewers: Update of jaxp 1.4.5 source drop bundle In-Reply-To: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> References: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> Message-ID: <4D6EA0C5.5050203@oracle.com> Kelly, Thanks for the quick action! So I may even have time to handle any regressions before my vacation :) I double-checked both paths, and also the checksum. They are all good to me. Thanks, Joe On 3/2/2011 11:38 AM, Kelly O'Hair wrote: > Need reviewer for change in jaxp source drop bundle > > 7023289: jaxp 1.4.5 development jdk7 2nd integration > http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxp-145dev1/webrev/ > > Joe or someone from the JAXP team may want to comment on the specific changes in this new > source bundle. > > -kto > > From gnu_andrew at member.fsf.org Thu Mar 3 02:01:43 2011 From: gnu_andrew at member.fsf.org (Dr Andrew John Hughes) Date: Thu, 3 Mar 2011 02:01:43 +0000 Subject: Need reviewers: Update of jaxp 1.4.5 source drop bundle In-Reply-To: <4D6E9EFB.4000506@oracle.com> References: <984D321F-F4F4-4FC4-BE41-C89E75F66243@oracle.com> <4D6E9EFB.4000506@oracle.com> Message-ID: On 2 March 2011 19:48, Alan Bateman wrote: > Kelly O'Hair wrote: >> >> Need reviewer for change in jaxp source drop bundle >> >> 7023289: jaxp 1.4.5 development jdk7 2nd integration >> http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxp-145dev1/webrev/ >> >> Joe or someone from the JAXP team may want to comment on the specific >> changes in this new >> source bundle. >> >> -kto >> >> > > The update to jaxp.properties looks okay to me. > > -Alan > The problem with this drop tarball method is the jaxp.properties update is all you can see. How do we know what the actual changes are between these tarballs? Is there some JAXP repository somewhere these are derived from, with appropriate tagging? When we had the source code in the repository, we could at least see what changes were being made. Having to track down and patch some JAXP issues recently has been a nightmare with this drop tarball system. -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: F5862A37 (https://keys.indymedia.org/) Fingerprint = EA30 D855 D50F 90CD F54D ?0698 0713 C3ED F586 2A37 From jonathan.gibbons at oracle.com Thu Mar 3 05:06:48 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 03 Mar 2011 05:06:48 +0000 Subject: hg: jdk7/tl/langtools: 6986892: confusing warning given after errors in annotation processing Message-ID: <20110303050650.DA07C47BF7@hg.openjdk.java.net> Changeset: 3085d0089546 Author: jjg Date: 2011-03-02 21:06 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/3085d0089546 6986892: confusing warning given after errors in annotation processing Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java + test/tools/javac/processing/warnings/UseImplicit/C1.java + test/tools/javac/processing/warnings/UseImplicit/TestProcUseImplicitWarning.java + test/tools/javac/processing/warnings/UseImplicit/err.out + test/tools/javac/processing/warnings/UseImplicit/p/C2.java + test/tools/javac/processing/warnings/UseImplicit/warn.out From jonathan.gibbons at oracle.com Thu Mar 3 05:14:24 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 03 Mar 2011 05:14:24 +0000 Subject: hg: jdk7/tl/langtools: 6639645: Modeling type implementing missing interfaces Message-ID: <20110303051426.EBA1B47BF8@hg.openjdk.java.net> Changeset: 4baab658f357 Author: jjg Date: 2011-03-02 21:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4baab658f357 6639645: Modeling type implementing missing interfaces Reviewed-by: darcy, mcimadamore ! src/share/classes/com/sun/tools/javac/code/Flags.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/MemberEnter.java ! src/share/classes/com/sun/tools/javac/parser/JavacParser.java ! src/share/classes/com/sun/tools/javac/tree/JCTree.java ! src/share/classes/com/sun/tools/javac/tree/TreeCopier.java ! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java ! test/tools/javac/api/6557752/T6557752.java + test/tools/javac/processing/model/element/TestMissingElement/InvalidSource.java + test/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java + test/tools/javac/processing/model/element/TestMissingElement2/Generator.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingClass.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingGenericClass1.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingGenericClass2.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingGenericInterface1.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingGenericInterface2.java + test/tools/javac/processing/model/element/TestMissingElement2/TestMissingInterface.java From neil.richards at ngmr.net Thu Mar 3 09:10:02 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Thu, 3 Mar 2011 09:10:02 +0000 Subject: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient In-Reply-To: References: <175B5A20-658C-47EE-AE68-888D5FE23E49@oracle.com> Message-ID: Please advise me on what steps remain for this change to be committed. Thanks, Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From maurizio.cimadamore at oracle.com Thu Mar 3 09:44:46 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 03 Mar 2011 09:44:46 +0000 Subject: hg: jdk7/tl/langtools: 7023233: False positive for -Xlint:try with nested try with resources blocks Message-ID: <20110303094448.E0F9447C04@hg.openjdk.java.net> Changeset: e9b8fbb30f5a Author: mcimadamore Date: 2011-03-03 09:43 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e9b8fbb30f5a 7023233: False positive for -Xlint:try with nested try with resources blocks Summary: Wrong lint warning issued about unused resource when nested try-with-resource blocks are found Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Flow.java + test/tools/javac/TryWithResources/UnusedResourcesTest.java From kelly.ohair at oracle.com Thu Mar 3 14:51:07 2011 From: kelly.ohair at oracle.com (kelly.ohair at oracle.com) Date: Thu, 03 Mar 2011 14:51:07 +0000 Subject: hg: jdk7/tl/jaxp: 7023289: jaxp 1.4.5 development jdk7 2nd integration Message-ID: <20110303145107.3064747C13@hg.openjdk.java.net> Changeset: 877fd25c5a2f Author: ohair Date: 2011-03-02 12:00 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/877fd25c5a2f 7023289: jaxp 1.4.5 development jdk7 2nd integration Reviewed-by: joehw, mchung, alanb ! jaxp.properties From Alan.Bateman at oracle.com Thu Mar 3 15:06:12 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Thu, 03 Mar 2011 15:06:12 +0000 Subject: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient In-Reply-To: References: <175B5A20-658C-47EE-AE68-888D5FE23E49@oracle.com> Message-ID: <4D6FAE64.9060907@oracle.com> Neil Richards wrote: > Please advise me on what steps remain for this change to be committed. > I think the main thing with this proposal is getting agreement that it is the right thing to do. On one hand it avoids the set getting corrupted. On the other hand it's masking a problem and really part of a bigger issue. This isn't really my area but it kinda feels like we need a run mode or some way to enable concurrent modification exceptions so that the developer has some chance to fix the real issues. -Alan. From michael.x.mcmahon at oracle.com Thu Mar 3 15:35:06 2011 From: michael.x.mcmahon at oracle.com (michael.x.mcmahon at oracle.com) Date: Thu, 03 Mar 2011 15:35:06 +0000 Subject: hg: jdk7/tl/jdk: 7018606: (process) test/java/lang/ProcessBuilder/Basic.java failing intermittently (win) Message-ID: <20110303153525.6893147C17@hg.openjdk.java.net> Changeset: 75064373ed6b Author: michaelm Date: 2011-03-03 15:34 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/75064373ed6b 7018606: (process) test/java/lang/ProcessBuilder/Basic.java failing intermittently (win) Reviewed-by: alanb ! test/java/lang/ProcessBuilder/Basic.java From neil.richards at ngmr.net Thu Mar 3 16:41:33 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Thu, 3 Mar 2011 16:41:33 +0000 Subject: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient In-Reply-To: <4D6FAE64.9060907@oracle.com> References: <175B5A20-658C-47EE-AE68-888D5FE23E49@oracle.com> <4D6FAE64.9060907@oracle.com> Message-ID: On 3 March 2011 15:06, Alan Bateman wrote: > I think the main thing with this proposal is getting agreement that it is > the right thing to do. On one hand it avoids the set getting corrupted. On > the other hand it's masking a problem and really part of a bigger issue. > This isn't really my area but it kinda feels like we need a run mode or some > way to enable concurrent modification exceptions so that the developer has > some chance to fix the real issues. > > -Alan. > As I previously noted in the discussion [1], the current Javadoc API for EnumSet explicitly states that ConcurrentModificationException will never be thrown from its iterator. [2] Also, Mike observed that other fixes which introduce the possibility of new ConcurrentModificationExceptions being thrown have previously been rejected on that basis. [3] We may all agree that if one was to start from scratch, consistently throwing CMEs (at least, where it's feasible to detect them) would probably be the ideal approach. But given the actual starting point, where existing API documentation explicits states that CMEs will *never* be thrown from EnumSet's iterator, and has done so since EnumSet's introduction in Java 5, I can appreciate there being nervousness about changing that explicit (EnumSet-iterator-specific) contract with the user/developer at this point. Given this nervousness, my suggested change implements the next best strategy, which is to make the iterator implementation tolerate the modification without corrupting the underlying EnumSet. This was, presumably, the behaviour as intended by the original author of the EnumSet API Javadoc. (In hindsight, one might disagree with the design choice made, but not that the design choice *was* made, given its explicit documentation). To leave the EnumSet iterator's code in its current (unchanged) form, I would argue, would be the worst possible outcome: It neither protects the contents of EnumSets from being "gratuitously" corrupted due to modification from both the iterator and the set (by being tolerant of this possibility), nor does it alert the developer to the error they are making. (I describe the corruption as "gratuitous" because it is so trivial to avoid for this iterator). I don't think that having a run-mode to enable CMEs to be thrown in this case would make things any better for the developer. What would prompt a developer to run in such a mode? In practice, I suspect it would merely act as a crutch with which folk would retrospectively beat the poor developer over the head, once corrupted EnumSets were detected, possibly (probably?) after their code is deployed. If there were agreement to throw CMEs by default, and have a run mode to disable them, I guess I'd be okay with that. I'm not sure that that would generally allay the backwards-compatibility concerns sufficiently for such a solution to be acceptable, however. Also, it didn't seem like that was the direction that the conversation was previously heading. As always, suggestions and guidance on how to progress the resolution to this problem forward gratefully accepted, Thanks, Neil [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-January/005763.html [2] http://download.oracle.com/javase/1.5.0/docs/api/java/util/EnumSet.html [3] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005799.html -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From chris.hegarty at oracle.com Thu Mar 3 16:45:27 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Thu, 03 Mar 2011 16:45:27 +0000 Subject: hg: jdk7/tl/jdk: 7018137: HTML4 compliance issues Message-ID: <20110303164537.7688347C1C@hg.openjdk.java.net> Changeset: 7cfb0693eb33 Author: chegar Date: 2011-03-03 16:44 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7cfb0693eb33 7018137: HTML4 compliance issues Summary: move end list items tags to after nested list Reviewed-by: alanb ! src/share/classes/java/net/URI.java ! src/share/classes/java/net/package.html From chris.hegarty at oracle.com Thu Mar 3 16:49:26 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Thu, 03 Mar 2011 16:49:26 +0000 Subject: hg: jdk7/tl/jdk: 6721694: java/lang/Thread/StartOOMTest.java fails with timeout or with crash Message-ID: <20110303164938.64E0247C1D@hg.openjdk.java.net> Changeset: 9b99a14375bc Author: chegar Date: 2011-03-03 16:48 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/9b99a14375bc 6721694: java/lang/Thread/StartOOMTest.java fails with timeout or with crash Summary: the test is not suitable to be run automatically Reviewed-by: alanb ! test/java/lang/Thread/StartOOMTest.java From sean.coffey at oracle.com Thu Mar 3 16:56:42 2011 From: sean.coffey at oracle.com (sean.coffey at oracle.com) Date: Thu, 03 Mar 2011 16:56:42 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110303165701.59E7147C1F@hg.openjdk.java.net> Changeset: 732faed56eb0 Author: coffeys Date: 2011-03-03 16:51 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/732faed56eb0 6750362: Very large LDAP requests throw a OOM on LDAP servers which aren't aware of Paged Results Controls 6748156: add an new JNDI property to control the boolean flag WaitForReply Reviewed-by: vinnie, robm ! src/share/classes/com/sun/jndi/ldap/Connection.java ! src/share/classes/com/sun/jndi/ldap/LdapClient.java ! src/share/classes/com/sun/jndi/ldap/LdapCtx.java ! src/share/classes/com/sun/jndi/ldap/LdapRequest.java + test/com/sun/jndi/ldap/NoWaitForReplyTest.java Changeset: 0bd32f96187d Author: coffeys Date: 2011-03-03 17:00 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0bd32f96187d Merge From michael.x.mcmahon at oracle.com Thu Mar 3 17:16:35 2011 From: michael.x.mcmahon at oracle.com (michael.x.mcmahon at oracle.com) Date: Thu, 03 Mar 2011 17:16:35 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110303171654.ACFAE47C21@hg.openjdk.java.net> Changeset: b645b5bc460b Author: michaelm Date: 2011-03-03 17:14 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b645b5bc460b 7024264: HttpURLConnection/NetPermission doc issue Reviewed-by: chegar ! src/share/classes/java/net/HttpURLConnection.java ! src/share/classes/java/net/NetPermission.java Changeset: 6e596210bf01 Author: michaelm Date: 2011-03-03 17:16 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/6e596210bf01 Merge From maurizio.cimadamore at oracle.com Thu Mar 3 17:51:53 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 03 Mar 2011 17:51:53 +0000 Subject: hg: jdk7/tl/langtools: 2 new changesets Message-ID: <20110303175157.809A547C23@hg.openjdk.java.net> Changeset: c15d788cb381 Author: mcimadamore Date: 2011-03-03 17:32 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/c15d788cb381 7023703: Valid code doesn't compile Summary: leftovers cause problems when analyzing loops in Flow.java Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Flow.java + test/tools/javac/7023703/T7023703neg.java + test/tools/javac/7023703/T7023703neg.out + test/tools/javac/7023703/T7023703pos.java Changeset: 32565546784b Author: mcimadamore Date: 2011-03-03 17:34 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/32565546784b 7022054: Invalid compiler error on covariant overriding methods with the same erasure Summary: Rules for method clash use notion of subsignature, which is sometimes too strict and incompatible with JDK 6 Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/code/Types.java ! src/share/classes/com/sun/tools/javac/comp/Check.java + test/tools/javac/generics/7022054/T7022054neg1.java + test/tools/javac/generics/7022054/T7022054neg1.out + test/tools/javac/generics/7022054/T7022054neg2.java + test/tools/javac/generics/7022054/T7022054neg2.out + test/tools/javac/generics/7022054/T7022054pos1.java + test/tools/javac/generics/7022054/T7022054pos2.java From maurizio.cimadamore at oracle.com Thu Mar 3 18:06:08 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Thu, 03 Mar 2011 18:06:08 +0000 Subject: hg: jdk7/tl/langtools: 7024212: TestWarnErrorCount fails Message-ID: <20110303180610.A823847C24@hg.openjdk.java.net> Changeset: 8fb48a9ac9ec Author: mcimadamore Date: 2011-03-03 18:05 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/8fb48a9ac9ec 7024212: TestWarnErrorCount fails Summary: TestWarnErrorCount should be executed with -Xlint:all,-path to avoid spurious failures Reviewed-by: jjg ! test/tools/javac/processing/TestWarnErrorCount.java From kumar.x.srinivasan at oracle.com Thu Mar 3 19:40:18 2011 From: kumar.x.srinivasan at oracle.com (Kumar Srinivasan) Date: Thu, 03 Mar 2011 11:40:18 -0800 Subject: 7023963 : Simple fixes to anon diamond in the jdk. Message-ID: <4D6FEEA2.8060604@oracle.COM> Please review, corrections to the diamond operator on anonymous classes as suggested by langtools team. http://cr.openjdk.java.net/~ksrini/7023963/webrev.0/ Thanks Kumar From Alan.Bateman at oracle.com Thu Mar 3 20:16:23 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Thu, 03 Mar 2011 20:16:23 +0000 Subject: 7023963 : Simple fixes to anon diamond in the jdk. In-Reply-To: <4D6FEEA2.8060604@oracle.COM> References: <4D6FEEA2.8060604@oracle.COM> Message-ID: <4D6FF717.9050402@oracle.com> Kumar Srinivasan wrote: > Please review, corrections to the diamond operator on anonymous classes > as suggested by langtools team. > > http://cr.openjdk.java.net/~ksrini/7023963/webrev.0/ > > Thanks > Kumar > Looks fine to me. -Alan From mandy.chung at oracle.com Thu Mar 3 20:21:35 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Thu, 03 Mar 2011 12:21:35 -0800 Subject: 7023963 : Simple fixes to anon diamond in the jdk. In-Reply-To: <4D6FEEA2.8060604@oracle.COM> References: <4D6FEEA2.8060604@oracle.COM> Message-ID: <4D6FF84F.9080701@oracle.com> Looks fine with me. Mandy On 03/03/11 11:40, Kumar Srinivasan wrote: > Please review, corrections to the diamond operator on anonymous classes > as suggested by langtools team. > > http://cr.openjdk.java.net/~ksrini/7023963/webrev.0/ > > Thanks > Kumar > From David.Holmes at oracle.com Thu Mar 3 20:43:04 2011 From: David.Holmes at oracle.com (David Holmes) Date: Fri, 04 Mar 2011 06:43:04 +1000 Subject: 7023963 : Simple fixes to anon diamond in the jdk. In-Reply-To: <4D6FEEA2.8060604@oracle.COM> References: <4D6FEEA2.8060604@oracle.COM> Message-ID: <4D6FFD58.6090103@oracle.com> Kumar Srinivasan said the following on 03/04/11 05:40: > Please review, corrections to the diamond operator on anonymous classes > as suggested by langtools team. > > http://cr.openjdk.java.net/~ksrini/7023963/webrev.0/ Looks fine of course, but it is sad that it is necessary. I wonder what percentage of potential diamond usages this kills? :( Pity we couldn't just detect the non-denotable types and give a compilation error. David From maurizio.cimadamore at oracle.com Thu Mar 3 22:38:28 2011 From: maurizio.cimadamore at oracle.com (maurizio cimadamore) Date: Thu, 03 Mar 2011 22:38:28 +0000 Subject: 7023963 : Simple fixes to anon diamond in the jdk. In-Reply-To: <4D6FFD58.6090103@oracle.com> References: <4D6FEEA2.8060604@oracle.COM> <4D6FFD58.6090103@oracle.com> Message-ID: <4D701864.50702@oracle.com> On 03/03/2011 20:43, David Holmes wrote: > Kumar Srinivasan said the following on 03/04/11 05:40: >> Please review, corrections to the diamond operator on anonymous classes >> as suggested by langtools team. >> >> http://cr.openjdk.java.net/~ksrini/7023963/webrev.0/ > > Looks fine of course, but it is sad that it is necessary. I wonder > what percentage of potential diamond usages this kills? :( Pity we > couldn't just detect the non-denotable types and give a compilation > error. > > David Changes look ok - thanks Kumar. Maurizio From David.Holmes at oracle.com Fri Mar 4 06:33:44 2011 From: David.Holmes at oracle.com (David Holmes) Date: Fri, 04 Mar 2011 16:33:44 +1000 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations Message-ID: <4D7087C8.40605@oracle.com> Hopefully all interested parties are addressed in the cc lists. webrev at: http://cr.openjdk.java.net/~dholmes/7022370/webrev/ The launcher ergonomics (ergo.c) currently relies on per-architecture, eg ergo_sparc.c, ergo_i586.c, files to define the actual ergonomics operations. Only x86 is actually CPU specific, both sparc and zero share the same platform independent implementation. It will simplify things if we provide a platform independent default in ergo.c that is conditionally compiled, and modify the build system to cause that compilation if a platform specific ergo file is not found. We can potentially delete all the ergo_*.c files except for ergo_i586.c, and we no longer require that there be a per-architecture file, which makes additional porting easier. Gary: do you mind seeing ergo_zero.c go away, or would you prefer to leave it in case someone is doing a local customization? I suppose the some consideration could be given to ergo_sparc.c too. Is anybody aware of downstream distros that modify these files to change the default ergonomics policies? Thanks, David Holmes From alan.bateman at oracle.com Fri Mar 4 09:39:07 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Fri, 04 Mar 2011 09:39:07 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110304093928.833CF47CA2@hg.openjdk.java.net> Changeset: 2fb9e2d4ef46 Author: alanb Date: 2011-03-04 09:29 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/2fb9e2d4ef46 6944810: (ch) Assert failure in sun.nio.ch.PendingIoCache.clearPendingIoMap [win] Reviewed-by: chegar ! src/share/classes/java/nio/channels/AsynchronousFileChannel.java ! src/windows/classes/sun/nio/ch/PendingIoCache.java ! src/windows/classes/sun/nio/ch/WindowsAsynchronousFileChannelImpl.java ! src/windows/classes/sun/nio/ch/WindowsAsynchronousSocketChannelImpl.java ! test/ProblemList.txt Changeset: 259011d14d48 Author: alanb Date: 2011-03-04 09:33 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/259011d14d48 Merge From kumar.x.srinivasan at oracle.com Fri Mar 4 17:38:54 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Fri, 04 Mar 2011 17:38:54 +0000 Subject: hg: jdk7/tl/jdk: 7023963: (misc) fix diamond anon instances in the jdk Message-ID: <20110304173918.22C8647CCC@hg.openjdk.java.net> Changeset: c4bd93431a20 Author: ksrini Date: 2011-03-04 09:32 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c4bd93431a20 7023963: (misc) fix diamond anon instances in the jdk Reviewed-by: alanb, mchung, mcimadamore, dholmes ! src/share/classes/com/sun/java/util/jar/pack/PackageReader.java ! src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java ! src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipDirectoryStream.java ! src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipPath.java From jonathan.gibbons at oracle.com Fri Mar 4 19:34:42 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Fri, 04 Mar 2011 19:34:42 +0000 Subject: hg: jdk7/tl/langtools: 6966736: javac verbose output is inconsistent Message-ID: <20110304193448.C3C9647CD3@hg.openjdk.java.net> Changeset: 7798e3a5ecf5 Author: jjg Date: 2011-03-04 11:33 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/7798e3a5ecf5 6966736: javac verbose output is inconsistent Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/apt/main/AptJavaCompiler.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/main/JavaCompiler.java ! src/share/classes/com/sun/tools/javac/util/Log.java From xueming.shen at oracle.com Fri Mar 4 19:37:26 2011 From: xueming.shen at oracle.com (xueming.shen at oracle.com) Date: Fri, 04 Mar 2011 19:37:26 +0000 Subject: hg: jdk7/tl/jdk: 7023244: (zipfs) langtools CompileTest fails on read-only file system Message-ID: <20110304193735.B5EEC47CD4@hg.openjdk.java.net> Changeset: 90b7926884a8 Author: sherman Date: 2011-03-04 11:35 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/90b7926884a8 7023244: (zipfs) langtools CompileTest fails on read-only file system Summary: replaced checkAccess with Files.isWritable() Reviewed-by: alanb ! src/share/demo/nio/zipfs/src/com/sun/nio/zipfs/ZipFileSystem.java From alan.bateman at oracle.com Fri Mar 4 21:29:02 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Fri, 04 Mar 2011 21:29:02 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110304212922.C04E647CEC@hg.openjdk.java.net> Changeset: 7b6ad3027f3d Author: alanb Date: 2011-03-04 21:26 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7b6ad3027f3d 7023403: (ch) sun.nio.ch.SolarisEventPort.startPoll failed with AssertionError Reviewed-by: forax ! src/solaris/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java ! test/java/nio/channels/AsynchronousSocketChannel/Basic.java Changeset: 28bedf6eba87 Author: alanb Date: 2011-03-04 21:28 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/28bedf6eba87 Merge From kumar.x.srinivasan at oracle.COM Fri Mar 4 22:57:54 2011 From: kumar.x.srinivasan at oracle.COM (Kumar Srinivasan) Date: Fri, 04 Mar 2011 14:57:54 -0800 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <4D7087C8.40605@oracle.com> References: <4D7087C8.40605@oracle.com> Message-ID: <4D716E72.1090605@oracle.COM> Looks good to me - approved. Thanks Kumar > Hopefully all interested parties are addressed in the cc lists. > > webrev at: > > http://cr.openjdk.java.net/~dholmes/7022370/webrev/ > > The launcher ergonomics (ergo.c) currently relies on per-architecture, > eg ergo_sparc.c, ergo_i586.c, files to define the actual ergonomics > operations. Only x86 is actually CPU specific, both sparc and zero > share the same platform independent implementation. It will simplify > things if we provide a platform independent default in ergo.c that is > conditionally compiled, and modify the build system to cause that > compilation if a platform specific ergo file is not found. > > We can potentially delete all the ergo_*.c files except for > ergo_i586.c, and we no longer require that there be a per-architecture > file, which makes additional porting easier. > > Gary: do you mind seeing ergo_zero.c go away, or would you prefer to > leave it in case someone is doing a local customization? I suppose the > some consideration could be given to ergo_sparc.c too. Is anybody > aware of downstream distros that modify these files to change the > default ergonomics policies? > > Thanks, > David Holmes From mandy.chung at oracle.com Fri Mar 4 23:12:08 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Fri, 04 Mar 2011 15:12:08 -0800 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <4D7087C8.40605@oracle.com> References: <4D7087C8.40605@oracle.com> Message-ID: <4D7171C8.7070108@oracle.com> Looks good to me. Mandy On 3/3/11 10:33 PM, David Holmes wrote: > Hopefully all interested parties are addressed in the cc lists. > > webrev at: > > http://cr.openjdk.java.net/~dholmes/7022370/webrev/ > > The launcher ergonomics (ergo.c) currently relies on per-architecture, > eg ergo_sparc.c, ergo_i586.c, files to define the actual ergonomics > operations. Only x86 is actually CPU specific, both sparc and zero > share the same platform independent implementation. It will simplify > things if we provide a platform independent default in ergo.c that is > conditionally compiled, and modify the build system to cause that > compilation if a platform specific ergo file is not found. > > We can potentially delete all the ergo_*.c files except for > ergo_i586.c, and we no longer require that there be a per-architecture > file, which makes additional porting easier. > > Gary: do you mind seeing ergo_zero.c go away, or would you prefer to > leave it in case someone is doing a local customization? I suppose the > some consideration could be given to ergo_sparc.c too. Is anybody > aware of downstream distros that modify these files to change the > default ergonomics policies? > > Thanks, > David Holmes From jonathan.gibbons at oracle.com Sat Mar 5 03:53:31 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Sat, 05 Mar 2011 03:53:31 +0000 Subject: hg: jdk7/tl/langtools: 6866185: Util.getPackageSourcePath should use lastIndexOf not indexOf and related cleanup Message-ID: <20110305035338.E5CC247D31@hg.openjdk.java.net> Changeset: ebf7c13df6c0 Author: jjg Date: 2011-03-04 19:53 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/ebf7c13df6c0 6866185: Util.getPackageSourcePath should use lastIndexOf not indexOf and related cleanup Reviewed-by: bpatel ! src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java ! src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java ! src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java ! src/share/classes/com/sun/tools/javadoc/AnnotationDescImpl.java ! src/share/classes/com/sun/tools/javadoc/AnnotationValueImpl.java ! src/share/classes/com/sun/tools/javadoc/ClassDocImpl.java ! src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java ! src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java ! src/share/classes/com/sun/tools/javadoc/ParameterizedTypeImpl.java ! src/share/classes/com/sun/tools/javadoc/SeeTagImpl.java ! src/share/classes/com/sun/tools/javadoc/TypeMaker.java ! src/share/classes/com/sun/tools/javadoc/TypeVariableImpl.java ! src/share/classes/com/sun/tools/javadoc/WildcardTypeImpl.java From jonathan.gibbons at oracle.com Sat Mar 5 03:56:25 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Sat, 05 Mar 2011 03:56:25 +0000 Subject: hg: jdk7/tl/langtools: 6227454: package.html and overview.html may not be read fully Message-ID: <20110305035627.6D93447D34@hg.openjdk.java.net> Changeset: 4ee7de0684f5 Author: jjg Date: 2011-03-04 19:56 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4ee7de0684f5 6227454: package.html and overview.html may not be read fully Reviewed-by: bpatel ! src/share/classes/com/sun/tools/javadoc/DocImpl.java ! src/share/classes/com/sun/tools/javadoc/resources/javadoc.properties + test/tools/javadoc/6227454/Test.java From jonathan.gibbons at oracle.com Sat Mar 5 03:59:36 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Sat, 05 Mar 2011 03:59:36 +0000 Subject: hg: jdk7/tl/langtools: 6964914: javadoc does not output number of warnings using user written doclet Message-ID: <20110305035938.8C67547D37@hg.openjdk.java.net> Changeset: 5e6c661891da Author: jjg Date: 2011-03-04 19:59 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/5e6c661891da 6964914: javadoc does not output number of warnings using user written doclet Reviewed-by: bpatel ! src/share/classes/com/sun/tools/javadoc/DocletInvoker.java ! src/share/classes/com/sun/tools/javadoc/Messager.java ! src/share/classes/com/sun/tools/javadoc/RootDocImpl.java ! src/share/classes/com/sun/tools/javadoc/Start.java + test/tools/javadoc/6964914/Error.java + test/tools/javadoc/6964914/JavacWarning.java + test/tools/javadoc/6964914/JavadocWarning.java + test/tools/javadoc/6964914/Test.java + test/tools/javadoc/6964914/TestStdDoclet.java + test/tools/javadoc/6964914/TestUserDoclet.java + test/tools/javadoc/T6968833.java From zhouyx at linux.vnet.ibm.com Mon Mar 7 05:03:27 2011 From: zhouyx at linux.vnet.ibm.com (Sean Chou) Date: Mon, 7 Mar 2011 13:03:27 +0800 Subject: Questions about XJC tool. Message-ID: Hi, Just two questions about xjc. About this bug "XJC fails to generate a class for a type with >1 wildcard"(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6927454), is there a plan to fix it? And I find the xjc tool is under the directory "jaxws/.hg/store/data/src/ share/classes/com/sun/tools/internal/" in my working copy(using hg fclone http://hg.openjdk.java.net/jdk7/jdk7/). Is there any other place I can find its source? Thanks. -- Best Regards, Sean Chou From David.Holmes at oracle.com Mon Mar 7 06:38:48 2011 From: David.Holmes at oracle.com (David Holmes) Date: Mon, 07 Mar 2011 16:38:48 +1000 Subject: Questions about XJC tool. In-Reply-To: References: Message-ID: <4D747D78.2000608@oracle.com> Sean Chou said the following on 03/07/11 15:03: > Just two questions about xjc. > > About this bug "XJC fails to generate a class for a type with >1 > wildcard"(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6927454), > is there a plan to fix it? This is strange, bug parade shows the bug in the dispatched state, but our internal system shows it is as "fixed delivered" in 2.1.13. It was evaluated in April last year. David > And I find the xjc tool is under the directory "jaxws/.hg/store/data/src/ > share/classes/com/sun/tools/internal/" in my working copy(using > hg fclone http://hg.openjdk.java.net/jdk7/jdk7/). Is there any other place > I can find its source? > > Thanks. > From spoole at linux.vnet.ibm.com Mon Mar 7 08:49:40 2011 From: spoole at linux.vnet.ibm.com (Steve Poole) Date: Mon, 07 Mar 2011 08:49:40 +0000 Subject: Questions about XJC tool. In-Reply-To: References: Message-ID: <4D749C24.8000704@linux.vnet.ibm.com> On 07/03/11 05:03, Sean Chou wrote: > Hi, > > Just two questions about xjc. > > About this bug "XJC fails to generate a class for a type with>1 > wildcard"(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6927454), > is there a plan to fix it? > > And I find the xjc tool is under the directory "jaxws/.hg/store/data/src/ > share/classes/com/sun/tools/internal/" in my working copy(using > hg fclone http://hg.openjdk.java.net/jdk7/jdk7/). Is there any other place > I can find its source? > I assume that bugs in JAXB have to be fixed in the JAXB project, not in OpenJDK. I don't know how the relationship between OpenJDK and JAXB/JAXWS/JAXP works. Maybe someone can explain usual working practises for getting these sort of bugs fixed? > Thanks. > From Alan.Bateman at oracle.com Mon Mar 7 09:05:58 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 07 Mar 2011 09:05:58 +0000 Subject: Questions about XJC tool. In-Reply-To: References: Message-ID: <4D749FF6.4090401@oracle.com> Sean Chou wrote: > Hi, > > Just two questions about xjc. > > About this bug "XJC fails to generate a class for a type with >1 > wildcard"(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6927454), > is there a plan to fix it? > > And I find the xjc tool is under the directory "jaxws/.hg/store/data/src/ > share/classes/com/sun/tools/internal/" in my working copy(using > hg fclone http://hg.openjdk.java.net/jdk7/jdk7/). Is there any other place > I can find its source? > > Thanks. > > As David points out, this issue appears to have been fixed last year by adding a new option to xjc. I don't know why bugs.sun.com isn't showing the up to date bug but there has been some ongoing glitches with the mirroring of the bugs. I'll ask the folks who maintain this to see if this can be resolved. In any case, it's worth remembering that the JAX* components are maintained in the upstream jaxp and jax-ws projects so this is why you don't see the code in the jdk7 forest. The jaxws repository in the forest will build it from a local copy of the source or it can download it. The .hg/store tree is where mercurial keeps its internal data structures so you probably don't want to be changing files in there. The sources you see in there are probably from 2009, when OpenJDK ceased to maintain its own copy of the this code. -Alan. From gbenson at redhat.com Mon Mar 7 09:57:38 2011 From: gbenson at redhat.com (Gary Benson) Date: Mon, 7 Mar 2011 09:57:38 +0000 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <4D7087C8.40605@oracle.com> References: <4D7087C8.40605@oracle.com> Message-ID: <20110307095738.GA3742@redhat.com> Hi David, I'm good with these changes, and I'm happy for ergo_zero.c to vanish. Thanks, Gary David Holmes wrote: > Hopefully all interested parties are addressed in the cc lists. > > webrev at: > > http://cr.openjdk.java.net/~dholmes/7022370/webrev/ > > The launcher ergonomics (ergo.c) currently relies on > per-architecture, eg ergo_sparc.c, ergo_i586.c, files to define the > actual ergonomics operations. Only x86 is actually CPU specific, > both sparc and zero share the same platform independent > implementation. It will simplify things if we provide a platform > independent default in ergo.c that is conditionally compiled, and > modify the build system to cause that compilation if a platform > specific ergo file is not found. > > We can potentially delete all the ergo_*.c files except for > ergo_i586.c, and we no longer require that there be a > per-architecture file, which makes additional porting easier. > > Gary: do you mind seeing ergo_zero.c go away, or would you prefer to > leave it in case someone is doing a local customization? I suppose > the some consideration could be given to ergo_sparc.c too. Is > anybody aware of downstream distros that modify these files to > change the default ergonomics policies? > > Thanks, > David Holmes -- http://gbenson.net/ From maurizio.cimadamore at oracle.com Mon Mar 7 14:33:07 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 07 Mar 2011 14:33:07 +0000 Subject: hg: jdk7/tl/langtools: 7020044: Project Coin: diamond erroneous allowed on some anonymous inner classes Message-ID: <20110307143309.4C84547F01@hg.openjdk.java.net> Changeset: ca32f2986301 Author: mcimadamore Date: 2011-03-07 14:31 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/ca32f2986301 7020044: Project Coin: diamond erroneous allowed on some anonymous inner classes Summary: Disallow diamond on anonymous innner class creation expression (as per JSR 334's EDR) Reviewed-by: jjg ! 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/resources/compiler.properties ! test/tools/javac/diags/examples.not-yet.txt + test/tools/javac/diags/examples/DiamondAndAnonClass.java - test/tools/javac/diags/examples/DiamondInvalidArg.java - test/tools/javac/diags/examples/DiamondInvalidArgs.java ! test/tools/javac/generics/diamond/6996914/T6996914a.java ! test/tools/javac/generics/diamond/6996914/T6996914b.java ! test/tools/javac/generics/diamond/T6939780.java ! test/tools/javac/generics/diamond/T6939780.out ! test/tools/javac/generics/diamond/neg/Neg01.java ! test/tools/javac/generics/diamond/neg/Neg01.out ! test/tools/javac/generics/diamond/neg/Neg02.java ! test/tools/javac/generics/diamond/neg/Neg02.out ! test/tools/javac/generics/diamond/neg/Neg03.java ! test/tools/javac/generics/diamond/neg/Neg03.out ! test/tools/javac/generics/diamond/neg/Neg04.java ! test/tools/javac/generics/diamond/neg/Neg04.out ! test/tools/javac/generics/diamond/neg/Neg05.java ! test/tools/javac/generics/diamond/neg/Neg05.out ! test/tools/javac/generics/diamond/neg/Neg06.java ! test/tools/javac/generics/diamond/neg/Neg06.out ! test/tools/javac/generics/diamond/neg/Neg07.java ! test/tools/javac/generics/diamond/neg/Neg07.out ! test/tools/javac/generics/diamond/neg/Neg08.java ! test/tools/javac/generics/diamond/neg/Neg08.out ! test/tools/javac/generics/diamond/neg/Neg09.java ! test/tools/javac/generics/diamond/neg/Neg09.out ! test/tools/javac/generics/diamond/neg/Neg10.java ! test/tools/javac/generics/diamond/neg/Neg11.java - test/tools/javac/generics/diamond/neg/Neg12.java - test/tools/javac/generics/diamond/neg/Neg12.out ! test/tools/javac/generics/diamond/pos/Pos01.java ! test/tools/javac/generics/diamond/pos/Pos02.java ! test/tools/javac/generics/diamond/pos/Pos03.java ! test/tools/javac/generics/diamond/pos/Pos04.java ! test/tools/javac/generics/diamond/pos/Pos05.java + test/tools/javac/generics/diamond/pos/Pos06.java + test/tools/javac/generics/diamond/pos/Pos07.java - test/tools/javac/multicatch/Neg05.java - test/tools/javac/multicatch/Neg05.out + test/tools/javac/multicatch/Pos09.java From maurizio.cimadamore at oracle.com Mon Mar 7 14:13:24 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Mon, 07 Mar 2011 14:13:24 +0000 Subject: hg: jdk7/tl/langtools: 7024568: Very long method resolution causing OOM error Message-ID: <20110307141329.7059F47EFA@hg.openjdk.java.net> Changeset: 74f0c05c51eb Author: mcimadamore Date: 2011-03-07 14:11 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/74f0c05c51eb 7024568: Very long method resolution causing OOM error Summary: Resolve.findMethod scans same receiver type more than once in certain inheritance graphs Reviewed-by: jjg Contributed-by: jan.lahoda at oracle.com ! src/share/classes/com/sun/tools/javac/comp/Resolve.java + test/tools/javac/7024568/T7024568.java + test/tools/javac/7024568/T7024568.out From sean.coffey at oracle.com Mon Mar 7 14:39:41 2011 From: sean.coffey at oracle.com (sean.coffey at oracle.com) Date: Mon, 07 Mar 2011 14:39:41 +0000 Subject: hg: jdk7/tl/jdk: 7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up Message-ID: <20110307144018.3502747F04@hg.openjdk.java.net> Changeset: 339342f311cc Author: coffeys Date: 2011-03-07 14:43 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/339342f311cc 7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up Reviewed-by: alanb ! test/com/sun/jndi/ldap/NoWaitForReplyTest.java From sean.mullan at oracle.com Mon Mar 7 18:45:05 2011 From: sean.mullan at oracle.com (sean.mullan at oracle.com) Date: Mon, 07 Mar 2011 18:45:05 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110307184523.DE6FD47F21@hg.openjdk.java.net> Changeset: bc0c58d65e97 Author: mullan Date: 2011-03-07 13:20 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/bc0c58d65e97 7022467: SecretKeyFactory doesn't support algorithm "AES" on Windows and Linux Reviewed-by: wetmore, valeriep ! src/share/classes/javax/crypto/SecretKeyFactory.java Changeset: 62b0337d1369 Author: mullan Date: 2011-03-07 13:44 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/62b0337d1369 Merge From mike.duigou at oracle.com Mon Mar 7 18:47:42 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Mon, 7 Mar 2011 10:47:42 -0800 Subject: Making java.util.Iterator.remove() for the iterators for EnumSet more resilient In-Reply-To: References: <175B5A20-658C-47EE-AE68-888D5FE23E49@oracle.com> <4D6FAE64.9060907@oracle.com> Message-ID: Hi Neil; I think your message presents the perfect "Speak now or forever hold your peace" opportunity. Barring any new substantive objections (I think you have addressed the previous objections more than adequately) I believe we should commit your patch to EnumSet and I will do so at the end of this week unless there are objections. I will do the required pre-integration testing this week so that everything should be ready to go by Friday (March 11th). Mike On Mar 3 2011, at 08:41 , Neil Richards wrote: > On 3 March 2011 15:06, Alan Bateman wrote: >> I think the main thing with this proposal is getting agreement that it is >> the right thing to do. On one hand it avoids the set getting corrupted. On >> the other hand it's masking a problem and really part of a bigger issue. >> This isn't really my area but it kinda feels like we need a run mode or some >> way to enable concurrent modification exceptions so that the developer has >> some chance to fix the real issues. >> >> -Alan. > > > As I previously noted in the discussion [1], the current Javadoc API > for EnumSet explicitly states that ConcurrentModificationException > will never be thrown from its iterator. [2] > > Also, Mike observed that other fixes which introduce the possibility > of new ConcurrentModificationExceptions being thrown have previously > been rejected on that basis. [3] > > We may all agree that if one was to start from scratch, consistently > throwing CMEs (at least, where it's feasible to detect them) would > probably be the ideal approach. > > But given the actual starting point, where existing API documentation > explicits states that CMEs will *never* be thrown from EnumSet's > iterator, and has done so since EnumSet's introduction in Java 5, I > can appreciate there being nervousness about changing that explicit > (EnumSet-iterator-specific) contract with the user/developer at this > point. > > Given this nervousness, my suggested change implements the next best > strategy, which is to make the iterator implementation tolerate the > modification without corrupting the underlying EnumSet. I agree that this is the best possible change. > This was, presumably, the behaviour as intended by the original author > of the EnumSet API Javadoc. > (In hindsight, one might disagree with the design choice made, but not > that the design choice *was* made, given its explicit documentation). > > To leave the EnumSet iterator's code in its current (unchanged) form, > I would argue, would be the worst possible outcome: It neither > protects the contents of EnumSets from being "gratuitously" corrupted > due to modification from both the iterator and the set (by being > tolerant of this possibility), nor does it alert the developer to the > error they are making. > (I describe the corruption as "gratuitous" because it is so trivial to > avoid for this iterator). I agree. > As always, suggestions and guidance on how to progress the resolution > to this problem forward gratefully accepted, This is exactly the right way to proceed. Thanks! > Thanks, > Neil > > [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-January/005763.html > [2] http://download.oracle.com/javase/1.5.0/docs/api/java/util/EnumSet.html > [3] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005799.html > > -- > Unless stated above: > IBM email: neil_richards at uk.ibm.com > IBM United Kingdom Limited - Registered in England and Wales with number 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From rama.pulavarthi at oracle.com Mon Mar 7 19:39:08 2011 From: rama.pulavarthi at oracle.com (Rama Pulavarthi) Date: Mon, 07 Mar 2011 11:39:08 -0800 Subject: Review request for 7020513 : Add com.sun.xml.internal to the "package.access" property in java.security In-Reply-To: <4D680F51.3050906@oracle.com> References: <4D64558A.6040807@oracle.com> <4D64C8EF.2050101@oracle.com> <4D654E60.9070106@oracle.com> <4D67F10B.80506@oracle.com> <4D680F51.3050906@oracle.com> Message-ID: <4D75345C.6070006@oracle.com> Thanks for the review. We had to make additional changes to run the tests. Hopefully this is the final webrev for this issue. Please review this new webrev which also has changes to jdk/test/Makefile to run the tests. http://cr.openjdk.java.net/~ramap/CR7020513-open-webrev/ thanks, Rama Pulavarthi On 02/25/2011 12:21 PM, Sean Mullan wrote: > Looks good to me. > > --Sean > > On 2/25/11 1:12 PM, Rama Pulavarthi wrote: >> Please review this updated webrev that has the patch for JDK 7 repo. >> http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxws-7020513-open/webrev/ >> >> >> For background on this issue, this is not a new one. I am trying to port >> the old fixes made in jdk repo as part of earlier jax-ws integrations in >> to Open JDK 6. >> The original issue CR 6592792 was fixed in JDK 6u7 and then ported to >> Open JDK 6. When Open JDK 6 transitioned to Hg, it was committed as >> [1]. As fix for CR 6831313 >> :update jaxws in >> OpenJDK7 to 2.1 plus bug fixes from OpenJDK 6, Only the changes in jaxws >> sources are ported to JDK 7 [2]. But, there are other changes that are >> made in jdk repo required for this fix. >> >> [1] http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/586feec8273d >> >> [2] http://hg.openjdk.java.net/jdk7/build/jaxws/rev/31822b475baa >> >> >> >> thanks, >> Rama Pulavarthi From sean.mullan at oracle.com Mon Mar 7 19:54:31 2011 From: sean.mullan at oracle.com (Sean Mullan) Date: Mon, 07 Mar 2011 14:54:31 -0500 Subject: Review request for 7020513 : Add com.sun.xml.internal to the "package.access" property in java.security In-Reply-To: <4D75345C.6070006@oracle.com> References: <4D64558A.6040807@oracle.com> <4D64C8EF.2050101@oracle.com> <4D654E60.9070106@oracle.com> <4D67F10B.80506@oracle.com> <4D680F51.3050906@oracle.com> <4D75345C.6070006@oracle.com> Message-ID: <4D7537F7.6090101@oracle.com> I'll defer to Kelly on the Makefile changes :) --Sean On 03/07/2011 02:39 PM, Rama Pulavarthi wrote: > Thanks for the review. We had to make additional changes to run the > tests. Hopefully this is the final webrev for this issue. > > Please review this new webrev which also has changes to > jdk/test/Makefile to run the tests. > http://cr.openjdk.java.net/~ramap/CR7020513-open-webrev/ > > thanks, > Rama Pulavarthi > > On 02/25/2011 12:21 PM, Sean Mullan wrote: >> Looks good to me. >> >> --Sean >> >> On 2/25/11 1:12 PM, Rama Pulavarthi wrote: >>> Please review this updated webrev that has the patch for JDK 7 repo. >>> http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxws-7020513-open/webrev/ >>> >>> >>> For background on this issue, this is not a new one. I am trying to port >>> the old fixes made in jdk repo as part of earlier jax-ws integrations in >>> to Open JDK 6. >>> The original issue CR 6592792 was fixed in JDK 6u7 and then ported to >>> Open JDK 6. When Open JDK 6 transitioned to Hg, it was committed as >>> [1]. As fix for CR 6831313 >>> :update jaxws in >>> OpenJDK7 to 2.1 plus bug fixes from OpenJDK 6, Only the changes in jaxws >>> sources are ported to JDK 7 [2]. But, there are other changes that are >>> made in jdk repo required for this fix. >>> >>> [1] http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/586feec8273d >>> >>> [2] http://hg.openjdk.java.net/jdk7/build/jaxws/rev/31822b475baa >>> >>> >>> >>> thanks, >>> Rama Pulavarthi > From lana.steuck at oracle.com Mon Mar 7 20:07:51 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:07:51 +0000 Subject: hg: jdk7/tl: 4 new changesets Message-ID: <20110307200751.7E5C547F29@hg.openjdk.java.net> Changeset: da55264ff2fb Author: ohair Date: 2011-02-16 13:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/da55264ff2fb 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 5d86d951426a Author: cl Date: 2011-02-23 15:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/5d86d951426a Merge Changeset: 0f62a65fb666 Author: cl Date: 2011-02-24 15:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/0f62a65fb666 Added tag jdk7-b131 for changeset 5d86d951426a ! .hgtags Changeset: b1fafacc3040 Author: katleman Date: 2011-03-03 14:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/b1fafacc3040 Added tag jdk7-b132 for changeset 0f62a65fb666 ! .hgtags From lana.steuck at oracle.com Mon Mar 7 20:07:54 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:07:54 +0000 Subject: hg: jdk7/tl/corba: 4 new changesets Message-ID: <20110307200800.CCA0947F2C@hg.openjdk.java.net> Changeset: a9335b646c1c Author: ohair Date: 2011-02-16 13:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/a9335b646c1c 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 9d6dd2cdfcb9 Author: cl Date: 2011-02-23 15:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/9d6dd2cdfcb9 Merge Changeset: 1b1e75e8f476 Author: cl Date: 2011-02-24 15:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/1b1e75e8f476 Added tag jdk7-b131 for changeset 9d6dd2cdfcb9 ! .hgtags Changeset: 671fe2e623ff Author: katleman Date: 2011-03-03 14:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/671fe2e623ff Added tag jdk7-b132 for changeset 1b1e75e8f476 ! .hgtags From lana.steuck at oracle.com Mon Mar 7 20:08:00 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:08:00 +0000 Subject: hg: jdk7/tl/jaxp: 5 new changesets Message-ID: <20110307200800.DE16147F2F@hg.openjdk.java.net> Changeset: a57220f22751 Author: ohair Date: 2011-02-16 13:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/a57220f22751 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: eab6f27131e4 Author: cl Date: 2011-02-23 15:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/eab6f27131e4 Merge Changeset: abe04c59a556 Author: cl Date: 2011-02-24 15:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/abe04c59a556 Added tag jdk7-b131 for changeset eab6f27131e4 ! .hgtags Changeset: 8e1148c7911b Author: katleman Date: 2011-03-03 14:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/8e1148c7911b Added tag jdk7-b132 for changeset abe04c59a556 ! .hgtags Changeset: b693ccf23fb7 Author: lana Date: 2011-03-07 11:56 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/b693ccf23fb7 Merge From lana.steuck at oracle.com Mon Mar 7 20:08:04 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:08:04 +0000 Subject: hg: jdk7/tl/jaxws: 4 new changesets Message-ID: <20110307200804.E03B947F32@hg.openjdk.java.net> Changeset: 9e3904866cab Author: ohair Date: 2011-02-16 13:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/9e3904866cab 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 438abc0356cd Author: cl Date: 2011-02-23 15:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/438abc0356cd Merge Changeset: 0e57c3272d37 Author: cl Date: 2011-02-24 15:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/0e57c3272d37 Added tag jdk7-b131 for changeset 438abc0356cd ! .hgtags Changeset: 359d0c8c00a0 Author: katleman Date: 2011-03-03 14:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/359d0c8c00a0 Added tag jdk7-b132 for changeset 0e57c3272d37 ! .hgtags From lana.steuck at oracle.com Mon Mar 7 20:08:06 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:08:06 +0000 Subject: hg: jdk7/tl/langtools: 7 new changesets Message-ID: <20110307200820.E106647F35@hg.openjdk.java.net> Changeset: 22ea7d483794 Author: ohair Date: 2011-02-16 13:30 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/22ea7d483794 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 67221b8643b4 Author: cl Date: 2011-02-23 15:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/67221b8643b4 Merge Changeset: 80bbd1da4a72 Author: cl Date: 2011-02-24 15:16 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/80bbd1da4a72 Added tag jdk7-b131 for changeset 67221b8643b4 ! .hgtags Changeset: de5524670f80 Author: lana Date: 2011-02-21 14:35 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/de5524670f80 Merge Changeset: e3d011d59a33 Author: lana Date: 2011-02-24 18:05 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e3d011d59a33 Merge Changeset: e77e98f936e8 Author: katleman Date: 2011-03-03 14:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e77e98f936e8 Added tag jdk7-b132 for changeset e3d011d59a33 ! .hgtags Changeset: b1b898c00b71 Author: lana Date: 2011-03-07 11:37 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/b1b898c00b71 Merge From lana.steuck at oracle.com Mon Mar 7 20:08:09 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:08:09 +0000 Subject: hg: jdk7/tl/hotspot: 55 new changesets Message-ID: <20110307200945.EDD4647F39@hg.openjdk.java.net> Changeset: cdef89d821bd Author: ohair Date: 2011-02-16 13:30 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/cdef89d821bd 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 0aa3b4908911 Author: cl Date: 2011-02-23 15:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/0aa3b4908911 Merge Changeset: 2015d9b41531 Author: cl Date: 2011-02-24 15:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/2015d9b41531 Added tag jdk7-b131 for changeset 0aa3b4908911 ! .hgtags Changeset: f3e07ceeaed9 Author: trims Date: 2011-02-25 11:42 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f3e07ceeaed9 Added tag hs21-b02 for changeset e9aa2ca89ad6 ! .hgtags Changeset: 7dc5384467e0 Author: coleenp Date: 2011-02-12 10:28 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/7dc5384467e0 7022659: errorHandler doesn't compile without precompiled headers Summary: add proper includes in errorHandler.hpp Reviewed-by: phh, kamg ! src/share/vm/utilities/errorReporter.hpp Changeset: c798c277ddd1 Author: brutisso Date: 2011-02-03 20:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/c798c277ddd1 7015169: GC Cause not always set Summary: Sometimes the gc cause was not always set. This caused JStat to print the wrong information. Reviewed-by: tonyp, ysr Contributed-by: suenaga.yasumasa at oss.ntt.co.jp ! src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.hpp ! src/share/vm/gc_implementation/g1/vm_operations_g1.hpp ! 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/gc_interface/gcCause.cpp ! src/share/vm/gc_interface/gcCause.hpp ! src/share/vm/services/heapDumper.cpp Changeset: c5a923563727 Author: ysr Date: 2011-02-07 22:19 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/c5a923563727 6912621: iCMS: Error: assert(_markBitMap.isMarked(addr + 1),"Missing Printezis bit?") Summary: Fix block_size_if_printezis_bits() so it does not expect the bits, only uses them when available. Fix block_size_no_stall() so it does not stall when the bits are missing such cases, letting the caller deal with zero size returns. Constant pool cache oops do not need to be unparsable or conc_unsafe after their klass pointer is installed. Some cosmetic clean-ups and some assertion checking for conc-usafety which, in the presence of class file redefinition, has no a-priori time boundedness, so all GCs must be able to safely deal with putatively conc-unsafe objects in a stop-world pause. Reviewed-by: jmasa, johnc ! src/share/vm/classfile/classFileParser.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp ! src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp ! src/share/vm/gc_interface/collectedHeap.cpp ! src/share/vm/interpreter/rewriter.cpp ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/memory/oopFactory.hpp ! src/share/vm/oops/constantPoolKlass.cpp ! src/share/vm/oops/cpCacheKlass.cpp ! src/share/vm/oops/cpCacheKlass.hpp ! src/share/vm/oops/cpCacheOop.hpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/methodOop.hpp ! src/share/vm/oops/oop.hpp ! src/share/vm/prims/jvmtiRedefineClasses.cpp ! src/share/vm/prims/methodHandleWalk.cpp Changeset: e5383553fd4e Author: stefank Date: 2011-02-08 12:33 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/e5383553fd4e 7014851: Remove unused parallel compaction code Summary: Removed. Reviewed-by: jcoomes, brutisso ! src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp ! src/share/vm/oops/arrayKlassKlass.cpp ! src/share/vm/oops/compiledICHolderKlass.cpp ! src/share/vm/oops/constMethodKlass.cpp ! src/share/vm/oops/constantPoolKlass.cpp ! src/share/vm/oops/cpCacheKlass.cpp ! 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/instanceRefKlass.cpp ! src/share/vm/oops/klassKlass.cpp ! src/share/vm/oops/klassPS.hpp ! src/share/vm/oops/klassVtable.cpp ! src/share/vm/oops/klassVtable.hpp ! src/share/vm/oops/methodDataKlass.cpp ! src/share/vm/oops/methodDataOop.cpp ! src/share/vm/oops/methodDataOop.hpp ! src/share/vm/oops/methodKlass.cpp ! src/share/vm/oops/objArrayKlass.cpp ! src/share/vm/oops/objArrayKlassKlass.cpp ! src/share/vm/oops/oop.hpp ! src/share/vm/oops/oop.pcgc.inline.hpp ! src/share/vm/oops/typeArrayKlass.cpp Changeset: 59e20a452a2a Author: johnc Date: 2011-02-09 09:43 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/59e20a452a2a 7017008: G1: Turn on compressed oops by default. Summary: Normally compressed oops is enabled when the maximum heap size is under a certain limit, except when G1 is also enabled. Remove this limitation. Also re-enable GCBasher testing with G1 on 64 bit windows in jprt. Reviewed-by: jcoomes, brutisso, tonyp ! make/jprt.properties ! src/share/vm/runtime/arguments.cpp Changeset: 183658a2d0b3 Author: ysr Date: 2011-02-10 14:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/183658a2d0b3 7018302: newly added assert related to size of constantPoolOop causes secondary assertions or crashes Summary: 6912621 used a raw oop in the newly added assert following an allocation attempt that could result in a GC. Reviewed-by: jmasa ! src/share/vm/oops/constantPoolKlass.cpp Changeset: 55cc33cf55bc Author: stefank Date: 2011-02-11 14:15 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/55cc33cf55bc 7018257: jmm_DumpThreads allocates into permgen Summary: Don't allocate in permgen Reviewed-by: ysr, sla ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/memory/oopFactory.hpp ! src/share/vm/services/management.cpp Changeset: f7702f8c0e25 Author: tonyp Date: 2011-02-14 22:21 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f7702f8c0e25 Merge ! make/jprt.properties ! src/share/vm/services/management.cpp Changeset: 02368ad6c63f Author: trims Date: 2011-02-16 17:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/02368ad6c63f Merge Changeset: 15d6977f04b0 Author: sla Date: 2011-02-10 13:03 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/15d6977f04b0 7017824: Add support for creating 64-bit Visual Studio projects Summary: Updated create.bat and ProjectCreator Reviewed-by: brutisso, stefank, ohair ! make/windows/create.bat ! make/windows/makefiles/compile.make ! make/windows/makefiles/projectcreator.make ! make/windows/makefiles/rules.make - make/windows/platform_amd64 - make/windows/platform_i486 - make/windows/platform_ia64 ! make/windows/projectfiles/common/Makefile ! src/os_cpu/windows_x86/vm/unwind_windows_x86.hpp ! src/share/tools/ProjectCreator/BuildConfig.java ! src/share/tools/ProjectCreator/DirectoryTree.java ! src/share/tools/ProjectCreator/FileFormatException.java - src/share/tools/ProjectCreator/Macro.java - src/share/tools/ProjectCreator/MacroDefinitions.java ! src/share/tools/ProjectCreator/Util.java ! src/share/tools/ProjectCreator/WinGammaPlatform.java ! src/share/tools/ProjectCreator/WinGammaPlatformVC6.java ! src/share/tools/ProjectCreator/WinGammaPlatformVC7.java ! src/share/vm/adlc/adlc.hpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/methodOop.hpp Changeset: 7aa1f99ca301 Author: coleenp Date: 2011-02-12 10:28 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/7aa1f99ca301 7019157: errorHandler doesn't compile with super old gcc without precompiled headers Summary: old gccs don't support precompiled headers so have to supply includes Reviewed-by: phh, kamg ! src/share/vm/utilities/errorReporter.hpp Changeset: 54df4702df97 Author: rottenha Date: 2011-02-14 03:19 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/54df4702df97 Merge - make/windows/platform_amd64 - make/windows/platform_i486 - make/windows/platform_ia64 - src/share/tools/ProjectCreator/Macro.java - src/share/tools/ProjectCreator/MacroDefinitions.java Changeset: de14f1eee390 Author: dcubed Date: 2011-02-15 19:00 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/de14f1eee390 6954420: 2/4 jps shows "process information unavailable" sometimes Summary: Make sure the backing store file is flushed in create_sharedmem_resources() and get_user_name_slow() no longer checks the size of the backing store file. Reviewed-by: briand, swamyv, acorn, poonam ! src/os/windows/vm/perfMemory_windows.cpp Changeset: b76d12f4ab2d Author: dholmes Date: 2011-02-14 19:27 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/b76d12f4ab2d 7018429: JPRT: Update Makefile to use ALT_JDK_TARGET_IMPORT_PATH for copying JDK Summary: Set JDK_IMPORT_PATH to ALT_JDK_TARGET_IMPORT_PATH if it is defined Reviewed-by: phh, ohair ! make/Makefile ! make/defs.make Changeset: 5415131bc5ab Author: dholmes Date: 2011-02-16 01:42 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/5415131bc5ab Merge Changeset: c08677f98289 Author: coleenp Date: 2011-02-16 11:34 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/c08677f98289 6840152: JVM crashes when heavyweight monitors are used Summary: Turn off biased locking if !UseFastLocking or UseHeavyMonitors options are requested. Reviewed-by: phh, never, dcubed, dholmes ! src/share/vm/runtime/arguments.cpp Changeset: 3adec115d40d Author: coleenp Date: 2011-02-16 17:12 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/3adec115d40d 7019689: Non-dependent name is found in dependent base class although it should be rejected Summary: fix hashtable.hpp to qualify non-dependant name with "this" Reviewed-by: phh, never, poonam Contributed-by: volker.simonis at gmail.com ! src/share/vm/utilities/hashtable.hpp Changeset: a959935a5732 Author: coleenp Date: 2011-02-16 16:25 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a959935a5732 Merge Changeset: 6e70f1bb7f6f Author: coleenp Date: 2011-02-18 18:26 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/6e70f1bb7f6f 7019557: SharedMiscDataSize too small for 64-bit fastdebug JVM Summary: Increase default SharedMiscDataSize Reviewed-by: dcubed, kamg ! src/share/vm/runtime/globals.hpp Changeset: f77b3ec064b0 Author: rottenha Date: 2011-02-21 04:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f77b3ec064b0 Merge - make/windows/platform_amd64 - make/windows/platform_i486 - make/windows/platform_ia64 - src/share/tools/ProjectCreator/Macro.java - src/share/tools/ProjectCreator/MacroDefinitions.java ! src/share/vm/oops/methodOop.cpp ! src/share/vm/oops/methodOop.hpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: 4f26f535a225 Author: never Date: 2011-01-31 17:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/4f26f535a225 6354181: nsk.logging.stress.threads.scmhml001 fails assertion in "src/share/vm/oops/instanceKlass.cpp, 111" Reviewed-by: jrose, acorn ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/ci/ciInstanceKlass.cpp ! src/share/vm/classfile/loaderConstraints.cpp ! src/share/vm/classfile/systemDictionary.cpp Changeset: 638119ce7cfd Author: twisti Date: 2011-02-01 03:38 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/638119ce7cfd 7009309: JSR 292: compiler/6991596/Test6991596.java crashes on fastdebug JDK7/b122 Reviewed-by: kvn, never ! agent/src/share/classes/sun/jvm/hotspot/runtime/StubRoutines.java ! src/cpu/x86/vm/cppInterpreter_x86.cpp ! src/cpu/x86/vm/interpreter_x86.hpp ! src/cpu/x86/vm/interpreter_x86_32.cpp ! src/cpu/x86/vm/sharedRuntime_x86_32.cpp ! src/cpu/x86/vm/sharedRuntime_x86_64.cpp ! src/cpu/x86/vm/stubGenerator_x86_32.cpp ! src/cpu/x86/vm/stubRoutines_x86_32.cpp ! src/cpu/x86/vm/stubRoutines_x86_32.hpp ! src/cpu/x86/vm/templateInterpreter_x86_32.cpp ! src/cpu/x86/vm/templateInterpreter_x86_64.cpp ! src/cpu/x86/vm/templateTable_x86_32.cpp ! src/cpu/zero/vm/stubRoutines_zero.cpp ! src/cpu/zero/vm/stubRoutines_zero.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: fbf3184da15d Author: twisti Date: 2011-02-01 05:51 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fbf3184da15d 7012339: JSR 292 crash in G1SATBCardTableModRefBS::write_ref_field_pre_work() Reviewed-by: jrose, never ! src/share/vm/oops/cpCacheOop.cpp Changeset: c52cba2a3359 Author: kvn Date: 2011-02-01 10:27 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/c52cba2a3359 7014998: assert(is_T_family(features) == is_niagara(features)) failed: Niagara should be T series Summary: Use substring search instead of compare and convert string to upper case before search. Reviewed-by: never, phh, iveresov ! src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Changeset: 194c9fdee631 Author: kvn Date: 2011-02-07 09:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/194c9fdee631 7017240: C2: native memory leak in nsk/regression/b4675027 on windows-x86 in comp mode with G1 Summary: Add ResourceMark into PhaseIdealLoop::build_and_optimize(). Reviewed-by: never ! src/share/vm/opto/loopnode.cpp ! src/share/vm/opto/loopnode.hpp Changeset: 3763ca6579b7 Author: kvn Date: 2011-02-07 10:25 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/3763ca6579b7 7013538: Java memory leak with escape analysis Summary: Don't allocate VectorSet iterator on C heap. Reuse resource storage in EA. Reviewed-by: never ! src/share/vm/libadt/vectset.cpp ! src/share/vm/libadt/vectset.hpp ! src/share/vm/opto/escape.cpp ! src/share/vm/opto/escape.hpp ! src/share/vm/opto/phase.cpp Changeset: f7de3327c683 Author: kvn Date: 2011-02-07 10:34 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f7de3327c683 7017124: Fix some VM stats to avoid 32-bit overflow Summary: Added new method inc_stat_counter() to increment long statistic values and use atomic long load and store. Reviewed-by: dholmes, jrose, phh, never ! src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp ! src/share/vm/memory/allocation.cpp ! src/share/vm/memory/allocation.hpp ! src/share/vm/memory/allocation.inline.hpp ! src/share/vm/opto/indexSet.cpp ! src/share/vm/opto/indexSet.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.cpp ! src/share/vm/runtime/os.hpp Changeset: 336d17dff7cc Author: kvn Date: 2011-02-08 16:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/336d17dff7cc 7014874: Incorrect COOPs modes on solaris-{sparcv9,amd64} with ParallelGC Summary: Align old gen size down to keep specified heap size. Reviewed-by: ysr ! src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp Changeset: 72d6c57d0658 Author: iveresov Date: 2011-02-09 16:34 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/72d6c57d0658 7017434: Tiered needs to support reprofiling Summary: Tiered needs to support proper method reprofiling after deopts. Reviewed-by: kvn ! src/share/vm/c1/c1_Compilation.cpp ! src/share/vm/oops/methodDataOop.cpp ! src/share/vm/oops/methodDataOop.hpp ! src/share/vm/runtime/simpleThresholdPolicy.cpp ! src/share/vm/runtime/simpleThresholdPolicy.hpp Changeset: 62a8557e8f36 Author: twisti Date: 2011-02-10 00:47 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/62a8557e8f36 7018277: JSR 292 change test/compiler/6987555/Test6987555.java to new MH syntax Summary: test/compiler/6987555/Test6987555.java currently does not compile because the MH return-type syntax has changed. Reviewed-by: never ! test/compiler/6987555/Test6987555.java Changeset: ab42c7e1cf83 Author: kvn Date: 2011-02-10 14:25 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/ab42c7e1cf83 7017746: Regression : C2 compiler crash due to SIGSEGV in PhaseCFG::schedule_early() Summary: Add TEMP edges (and KILL projections) before duplicated operands are removed in Expand() methods. Reviewed-by: never ! src/cpu/sparc/vm/sparc.ad ! src/share/vm/adlc/output_c.cpp ! src/share/vm/opto/node.cpp + test/compiler/7017746/Test.java Changeset: bf29934d2f4f Author: kvn Date: 2011-02-10 19:34 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/bf29934d2f4f 7018849: 7017124 fix broke VM build on some platforms Summary: Use atomic load and store in inc_stat_counter() only on SPARC and X86. Reviewed-by: iveresov ! src/share/vm/memory/allocation.inline.hpp Changeset: 173926398291 Author: twisti Date: 2011-02-11 03:17 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/173926398291 7018673: Zero: 6953144, 6990754 and 7009756 made some changes which broke Zero Reviewed-by: kvn, chrisphi, twisti ! src/os_cpu/linux_zero/vm/atomic_linux_zero.inline.hpp ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/oops/methodOop.cpp Changeset: 34457f6ac818 Author: never Date: 2011-02-11 12:05 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/34457f6ac818 7018506: CTW swallowing OOMs after symbol changes Reviewed-by: kvn, iveresov, coleenp ! src/share/vm/classfile/classLoader.cpp Changeset: 28bf941f445e Author: twisti Date: 2011-02-14 03:21 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/28bf941f445e 7018378: JSR 292: _bound_int_mh produces wrong result on 64-bit SPARC Reviewed-by: kvn ! src/cpu/sparc/vm/assembler_sparc.cpp ! src/cpu/sparc/vm/assembler_sparc.hpp ! src/cpu/sparc/vm/methodHandles_sparc.cpp ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/methodHandles_x86.cpp Changeset: 2a57c59eb548 Author: never Date: 2011-02-14 11:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/2a57c59eb548 7018101: os::dll_address_to_function_name returning wrong answers in 64 bit Reviewed-by: acorn, kvn, dsamersoff ! src/os/solaris/vm/os_solaris.cpp Changeset: 850b2295a494 Author: kvn Date: 2011-02-14 14:36 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/850b2295a494 Merge ! src/os/solaris/vm/os_solaris.cpp ! src/share/vm/compiler/compileBroker.cpp ! src/share/vm/interpreter/bytecodeInterpreter.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/vmStructs.cpp Changeset: 1957c1478794 Author: never Date: 2011-02-15 22:18 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/1957c1478794 7019819: bare oop in ciField Reviewed-by: kvn, iveresov ! src/share/vm/ci/ciField.cpp Changeset: 6bbaedb03534 Author: never Date: 2011-02-09 15:02 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/6bbaedb03534 7016474: string compare intrinsic improvements Reviewed-by: kvn ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad Changeset: 5841dc1964f0 Author: never Date: 2011-02-22 15:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/5841dc1964f0 7021531: lock ordering problems after fix for 6354181 Reviewed-by: kvn, jrose ! src/share/vm/ci/ciEnv.cpp ! src/share/vm/utilities/ostream.cpp ! src/share/vm/utilities/ostream.hpp Changeset: a97fd181b813 Author: kvn Date: 2011-02-23 11:18 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a97fd181b813 Merge - make/windows/platform_amd64 - make/windows/platform_i486 - make/windows/platform_ia64 - src/share/tools/ProjectCreator/Macro.java - src/share/tools/ProjectCreator/MacroDefinitions.java ! src/share/vm/oops/cpCacheOop.cpp ! src/share/vm/oops/methodDataOop.cpp ! src/share/vm/oops/methodDataOop.hpp ! src/share/vm/oops/methodOop.cpp ! src/share/vm/runtime/globals.hpp Changeset: 162b62460264 Author: dholmes Date: 2011-02-24 21:38 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/162b62460264 7021953: Remove flags from globals.hpp inadvertently dragged in by 7016023 Summary: removed erroneous flags Reviewed-by: kvn, dcubed ! src/share/vm/runtime/globals.hpp Changeset: cf16c93393f5 Author: rottenha Date: 2011-02-25 03:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/cf16c93393f5 Merge ! src/share/vm/runtime/globals.hpp Changeset: 02f78cfa4656 Author: stefank Date: 2011-02-21 11:26 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/02f78cfa4656 7020992: jmm_DumpThreads should not allocate system object arrays outside the perm gen Summary: Allocate ordinary object arrays Reviewed-by: ysr, never, mchung ! src/share/vm/memory/oopFactory.cpp ! src/share/vm/memory/oopFactory.hpp ! src/share/vm/services/management.cpp Changeset: 8bbefb9743ae Author: tonyp Date: 2011-02-25 10:58 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/8bbefb9743ae Merge Changeset: 76b97f73ee91 Author: tonyp Date: 2011-02-25 08:17 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/76b97f73ee91 Merge Changeset: 5a4223160326 Author: trims Date: 2011-02-25 12:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/5a4223160326 Merge - make/windows/platform_amd64 - make/windows/platform_i486 - make/windows/platform_ia64 - src/share/tools/ProjectCreator/Macro.java - src/share/tools/ProjectCreator/MacroDefinitions.java Changeset: 658d198b2e04 Author: trims Date: 2011-02-25 12:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/658d198b2e04 7022570: Bump the HS21 build number to 03 Summary: Update the HS21 build number to 03 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 0e531ab5ba04 Author: trims Date: 2011-03-01 11:53 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/0e531ab5ba04 Merge Changeset: a8d643a4db47 Author: katleman Date: 2011-03-03 14:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a8d643a4db47 Added tag jdk7-b132 for changeset 0e531ab5ba04 ! .hgtags Changeset: 1b3a350709e4 Author: trims Date: 2011-03-03 15:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/1b3a350709e4 Added tag hs21-b03 for changeset a8d643a4db47 ! .hgtags From lana.steuck at oracle.com Mon Mar 7 20:10:08 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Mon, 07 Mar 2011 20:10:08 +0000 Subject: hg: jdk7/tl/jdk: 49 new changesets Message-ID: <20110307201801.20BA447F3F@hg.openjdk.java.net> Changeset: 0355c60c2da4 Author: ohair Date: 2011-02-16 13:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0355c60c2da4 7013964: openjdk LICENSE file needs rebranding Reviewed-by: darcy, katleman, jjg ! LICENSE Changeset: 9b2631288894 Author: ohair Date: 2011-02-16 14:33 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/9b2631288894 7010594: Add /SAFESEH to links on windows to verify safe exceptions Reviewed-by: alanb ! make/common/Defs-windows.gmk ! make/common/shared/Defs-windows.gmk Changeset: 5e09deee1967 Author: andrew Date: 2011-02-23 17:10 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5e09deee1967 7021314: Build should not install javaws man page Summary: Only install javaws.1 when not building OpenJDK Reviewed-by: alanb, ohair ! make/common/Release.gmk Changeset: 8ac52c85f9e9 Author: cl Date: 2011-02-23 15:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8ac52c85f9e9 Merge Changeset: 11c9a066a5a4 Author: cl Date: 2011-02-24 15:16 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/11c9a066a5a4 Added tag jdk7-b131 for changeset 8ac52c85f9e9 ! .hgtags Changeset: d7de46ec011b Author: jrose Date: 2011-02-11 01:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d7de46ec011b 7013417: JSR 292 needs to support variadic method handle calls Summary: Implement MH.asVarargsCollector, etc., and remove withTypeHandler. Reviewed-by: twisti ! src/share/classes/java/dyn/MethodHandle.java ! src/share/classes/java/dyn/MethodHandles.java ! src/share/classes/java/dyn/package-info.java ! src/share/classes/sun/dyn/AdapterMethodHandle.java ! src/share/classes/sun/dyn/CallSiteImpl.java ! src/share/classes/sun/dyn/InvokeGeneric.java ! src/share/classes/sun/dyn/Invokers.java ! src/share/classes/sun/dyn/MethodHandleImpl.java ! src/share/classes/sun/dyn/MethodTypeImpl.java ! test/java/dyn/InvokeDynamicPrintArgs.java ! test/java/dyn/JavaDocExamplesTest.java ! test/java/dyn/MethodHandlesTest.java ! test/java/dyn/indify/Indify.java Changeset: c86c60ad8822 Author: jrose Date: 2011-02-11 01:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c86c60ad8822 7012650: implement JSR 292 EG adjustments through January 2010 Summary: misc. EG changes and polishes (excluding 7013417) Reviewed-by: twisti ! src/share/classes/java/dyn/CallSite.java ! src/share/classes/java/dyn/ClassValue.java ! src/share/classes/java/dyn/ConstantCallSite.java ! src/share/classes/java/dyn/InvokeDynamicBootstrapError.java ! src/share/classes/java/dyn/Linkage.java ! src/share/classes/java/dyn/MethodHandle.java ! src/share/classes/java/dyn/MethodHandles.java ! src/share/classes/java/dyn/MethodType.java ! src/share/classes/java/dyn/MutableCallSite.java + src/share/classes/java/dyn/SwitchPoint.java - src/share/classes/java/dyn/Switcher.java ! src/share/classes/java/dyn/VolatileCallSite.java ! src/share/classes/java/dyn/WrongMethodTypeException.java ! src/share/classes/java/dyn/package-info.java ! src/share/classes/sun/dyn/AdapterMethodHandle.java ! src/share/classes/sun/dyn/FromGeneric.java ! src/share/classes/sun/dyn/InvokeGeneric.java ! src/share/classes/sun/dyn/Invokers.java ! src/share/classes/sun/dyn/MethodHandleImpl.java ! src/share/classes/sun/dyn/ToGeneric.java + src/share/classes/sun/dyn/WrapperInstance.java ! test/java/dyn/InvokeGenericTest.java ! test/java/dyn/JavaDocExamplesTest.java ! test/java/dyn/MethodHandlesTest.java Changeset: a2241b109aa1 Author: jrose Date: 2011-02-11 01:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a2241b109aa1 7013730: JSR 292 reflective operations should report errors with standard exception types Summary: remove NoAccessException, replace it by ReflectiveOperationException subtypes; adjust javadoc of exceptions Reviewed-by: twisti ! src/share/classes/java/dyn/CallSite.java ! src/share/classes/java/dyn/Linkage.java ! src/share/classes/java/dyn/MethodHandles.java - src/share/classes/java/dyn/NoAccessException.java ! src/share/classes/sun/dyn/CallSiteImpl.java ! src/share/classes/sun/dyn/FilterGeneric.java ! src/share/classes/sun/dyn/FilterOneArgument.java ! src/share/classes/sun/dyn/FromGeneric.java ! src/share/classes/sun/dyn/InvokeGeneric.java ! src/share/classes/sun/dyn/Invokers.java ! src/share/classes/sun/dyn/MemberName.java ! src/share/classes/sun/dyn/MethodHandleImpl.java ! src/share/classes/sun/dyn/MethodHandleNatives.java ! src/share/classes/sun/dyn/SpreadGeneric.java ! src/share/classes/sun/dyn/ToGeneric.java ! src/share/classes/sun/dyn/util/ValueConversions.java ! src/share/classes/sun/dyn/util/VerifyAccess.java ! test/java/dyn/InvokeGenericTest.java ! test/java/dyn/JavaDocExamplesTest.java ! test/java/dyn/MethodHandlesTest.java Changeset: 5e4a41d0fccd Author: jrose Date: 2011-02-15 00:16 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5e4a41d0fccd 7016261: JSR 292 MethodType objects should be serializable Summary: Define private writeObject, readObject, and readResolve methods. Also add unit tests. Reviewed-by: twisti ! src/share/classes/java/dyn/MethodType.java + test/java/dyn/MethodTypeTest.java Changeset: 56cbd0504a53 Author: jrose Date: 2011-02-15 00:16 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/56cbd0504a53 7014755: JSR 292 member lookup interaction with security manager Summary: add security manager interactions for Lookup methods Reviewed-by: twisti ! src/share/classes/java/dyn/MethodHandles.java ! src/share/classes/java/dyn/package-info.java Changeset: 52bcd47b4521 Author: jrose Date: 2011-02-15 00:16 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/52bcd47b4521 7016520: JSR 292 rules for polymorphic signature processing must be in package-info Summary: insert rules for bytecode processors to recognize signature polymorphic names Reviewed-by: twisti ! src/share/classes/java/dyn/MethodHandle.java Changeset: f6cd84cfed70 Author: trims Date: 2011-02-25 12:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f6cd84cfed70 Merge - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java Changeset: 7905b047a475 Author: prr Date: 2011-02-08 14:24 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7905b047a475 7006865: Regression: Corrupted output when printing images with bit depth of 4 Reviewed-by: bae, jgodinez ! src/windows/classes/sun/awt/windows/WPathGraphics.java ! src/windows/classes/sun/awt/windows/WPrinterJob.java + test/java/awt/print/PrinterJob/ImagePrinting/ImageTypes.java Changeset: d42ce0b309ae Author: bae Date: 2011-02-09 22:24 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d42ce0b309ae 6818960: ImageFetcher ( MediaTracker) Thread leak Reviewed-by: igor, prr ! src/share/classes/sun/awt/image/ImageFetcher.java ! src/share/classes/sun/awt/image/InputStreamImageSource.java Changeset: 37d20456c54c Author: ceisserer Date: 2011-02-09 14:34 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/37d20456c54c 7018387: Xrender pipeline may leak GC's Reviewed-by: prr ! src/solaris/classes/sun/java2d/xr/XRSurfaceData.java Changeset: bcf663c292ef Author: bae Date: 2011-02-10 13:44 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/bcf663c292ef 6989774: imageio compiler warnings in native code Reviewed-by: igor, prr ! make/sun/jpeg/Makefile ! make/sun/jpeg/reorder-i586 ! make/sun/jpeg/reorder-sparc ! make/sun/jpeg/reorder-sparcv9 ! src/share/native/sun/awt/image/jpeg/imageioJPEG.c ! src/share/native/sun/awt/image/jpeg/jdmarker.c ! src/share/native/sun/awt/image/jpeg/jmemmgr.c ! src/share/native/sun/awt/image/jpeg/jmemnobs.c ! src/share/native/sun/awt/image/jpeg/jmemsys.h ! src/share/native/sun/awt/image/jpeg/jpegdecoder.c ! src/share/native/sun/awt/image/jpeg/jpeglib.h Changeset: 1881764c4cdf Author: prr Date: 2011-02-11 10:40 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1881764c4cdf 7018364: XShmGetImage with image's > drawable's size causes BadMatch Reviewed-by: art, anthony Contributed-by: linuxhippy at gmail.com ! src/solaris/native/sun/java2d/x11/X11SurfaceData.c ! src/solaris/native/sun/java2d/x11/X11SurfaceData.h Changeset: b04dafeda706 Author: prr Date: 2011-02-16 15:58 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b04dafeda706 7019441: No lookup cache for internal composite font creation leads to java heap growth Reviewed-by: igor, jgodinez ! src/share/classes/sun/font/FontUtilities.java Changeset: e45f7d50dbc9 Author: bae Date: 2011-02-17 13:42 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e45f7d50dbc9 7018912: [parfait] potential buffer overruns in imageio jpeg Reviewed-by: jgodinez, prr ! src/share/native/sun/awt/image/jpeg/imageioJPEG.c Changeset: 810445ab3099 Author: prr Date: 2011-02-18 09:14 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/810445ab3099 6857592: Getting warning while moving or resizing the frame when component.printAll() is called on local JNI Reviewed-by: bae, flar ! src/windows/native/sun/java2d/windows/GDIBlitLoops.cpp Changeset: 5d8cfcb9a4e8 Author: prr Date: 2011-02-18 09:18 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5d8cfcb9a4e8 7017637: closed/java/awt/font/StyledMetrics/BoldSpace.java failed : Space char should have 0 advance Reviewed-by: igor, jgodinez + test/java/awt/font/StyledMetrics/BoldSpace.java Changeset: 4c6500d20ebf Author: jgodinez Date: 2011-02-04 11:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4c6500d20ebf 7014796: Regression test java/awt/PrintJob/Text/stringwidth.sh cannot be terminated on Windows. Reviewed-by: prr ! test/java/awt/PrintJob/Text/StringWidth.java Changeset: 33cd780e8989 Author: jgodinez Date: 2011-02-04 11:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/33cd780e8989 6995147: Case needs to be update. ServiceDialogTest.java failed as compilation error. Reviewed-by: prr ! test/javax/print/attribute/ServiceDialogTest.java Changeset: 1d3f3c8d7ed5 Author: jgodinez Date: 2011-02-18 11:15 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1d3f3c8d7ed5 6722351: sun.print.Win32PrintService.initMedia() is slow Reviewed-by: igor, prr ! src/windows/classes/sun/print/Win32PrintService.java Changeset: 059b56058cad Author: jgodinez Date: 2011-02-18 12:04 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/059b56058cad Merge - make/java/hpi/Makefile - make/java/hpi/hpi_common.gmk - make/java/hpi/native/Makefile - make/java/hpi/native/mapfile-vers - make/java/hpi/native/reorder-i586 - make/java/hpi/native/reorder-sparc - make/java/hpi/native/reorder-sparcv9 - make/java/hpi/windows/Makefile - src/share/hpi/export/bool.h - src/share/hpi/export/dll.h - src/share/hpi/export/hpi.h - src/share/hpi/include/hpi_impl.h - src/share/hpi/include/vm_calls.h - src/share/hpi/src/hpi.c - src/solaris/hpi/export/byteorder_md.h - src/solaris/hpi/export/hpi_md.h - src/solaris/hpi/export/io_md.h - src/solaris/hpi/export/path_md.h - src/solaris/hpi/export/timeval_md.h - src/solaris/hpi/include/hpi_init.h - src/solaris/hpi/include/interrupt.h - src/solaris/hpi/include/largefile.h - src/solaris/hpi/include/largefile_linux.h - src/solaris/hpi/include/largefile_solaris.h - src/solaris/hpi/native_threads/include/condvar_md.h - src/solaris/hpi/native_threads/include/monitor_md.h - src/solaris/hpi/native_threads/include/mutex_md.h - src/solaris/hpi/native_threads/include/np.h - src/solaris/hpi/native_threads/include/porting.h - src/solaris/hpi/native_threads/include/threads_md.h - src/solaris/hpi/native_threads/src/condvar_md.c - src/solaris/hpi/native_threads/src/interrupt_md.c - src/solaris/hpi/native_threads/src/monitor_md.c - src/solaris/hpi/native_threads/src/mutex_md.c - src/solaris/hpi/native_threads/src/sys_api_td.c - src/solaris/hpi/native_threads/src/threads_linux.c - src/solaris/hpi/native_threads/src/threads_md.c - src/solaris/hpi/native_threads/src/threads_solaris.c - src/solaris/hpi/src/interrupt.c - src/solaris/hpi/src/linker_md.c - src/solaris/hpi/src/memory_md.c - src/solaris/hpi/src/system_md.c - src/windows/hpi/export/byteorder_md.h - src/windows/hpi/export/hpi_md.h - src/windows/hpi/export/io_md.h - src/windows/hpi/export/path_md.h - src/windows/hpi/export/timeval_md.h - src/windows/hpi/include/monitor_md.h - src/windows/hpi/include/mutex_md.h - src/windows/hpi/include/threads_md.h - src/windows/hpi/src/linker_md.c - src/windows/hpi/src/memory_md.c - src/windows/hpi/src/monitor_md.c - src/windows/hpi/src/path_md.c - src/windows/hpi/src/socket_md.c - src/windows/hpi/src/sys_api_md.c - src/windows/hpi/src/system_md.c - src/windows/hpi/src/threads_md.c - test/java/net/InetAddress/B4762344.java - test/java/net/InetAddress/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/java/net/InetAddress/Simple1NameServiceDescriptor.java - test/java/net/InetAddress/Simple2NameServiceDescriptor.java - test/java/net/InetAddress/SimpleNameService.java - test/sun/net/InetAddress/nameservice/B6442088.java - test/sun/net/InetAddress/nameservice/CacheTest.java - test/sun/net/InetAddress/nameservice/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/sun/net/InetAddress/nameservice/SimpleNameService.java - test/sun/net/InetAddress/nameservice/SimpleNameServiceDescriptor.java Changeset: 1acdde062e92 Author: jgodinez Date: 2011-02-18 13:47 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1acdde062e92 6850806: NPE exception throws in PrintServce.getSupportedAttributeValues Reviewed-by: igor, prr ! src/windows/classes/sun/print/Win32PrintService.java Changeset: fa6547fa57e6 Author: lana Date: 2011-02-21 14:22 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fa6547fa57e6 Merge Changeset: 5a6bd7df28b8 Author: lana Date: 2011-02-11 15:51 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5a6bd7df28b8 Merge - make/java/hpi/Makefile - make/java/hpi/hpi_common.gmk - make/java/hpi/native/Makefile - make/java/hpi/native/mapfile-vers - make/java/hpi/native/reorder-i586 - make/java/hpi/native/reorder-sparc - make/java/hpi/native/reorder-sparcv9 - make/java/hpi/windows/Makefile - src/share/hpi/export/bool.h - src/share/hpi/export/dll.h - src/share/hpi/export/hpi.h - src/share/hpi/include/hpi_impl.h - src/share/hpi/include/vm_calls.h - src/share/hpi/src/hpi.c - src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.5.8.properties - src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.5.9.properties - src/solaris/hpi/export/byteorder_md.h - src/solaris/hpi/export/hpi_md.h - src/solaris/hpi/export/io_md.h - src/solaris/hpi/export/path_md.h - src/solaris/hpi/export/timeval_md.h - src/solaris/hpi/include/hpi_init.h - src/solaris/hpi/include/interrupt.h - src/solaris/hpi/include/largefile.h - src/solaris/hpi/include/largefile_linux.h - src/solaris/hpi/include/largefile_solaris.h - src/solaris/hpi/native_threads/include/condvar_md.h - src/solaris/hpi/native_threads/include/monitor_md.h - src/solaris/hpi/native_threads/include/mutex_md.h - src/solaris/hpi/native_threads/include/np.h - src/solaris/hpi/native_threads/include/porting.h - src/solaris/hpi/native_threads/include/threads_md.h - src/solaris/hpi/native_threads/src/condvar_md.c - src/solaris/hpi/native_threads/src/interrupt_md.c - src/solaris/hpi/native_threads/src/monitor_md.c - src/solaris/hpi/native_threads/src/mutex_md.c - src/solaris/hpi/native_threads/src/sys_api_td.c - src/solaris/hpi/native_threads/src/threads_linux.c - src/solaris/hpi/native_threads/src/threads_md.c - src/solaris/hpi/native_threads/src/threads_solaris.c - src/solaris/hpi/src/interrupt.c - src/solaris/hpi/src/linker_md.c - src/solaris/hpi/src/memory_md.c - src/solaris/hpi/src/system_md.c - src/windows/hpi/export/byteorder_md.h - src/windows/hpi/export/hpi_md.h - src/windows/hpi/export/io_md.h - src/windows/hpi/export/path_md.h - src/windows/hpi/export/timeval_md.h - src/windows/hpi/include/monitor_md.h - src/windows/hpi/include/mutex_md.h - src/windows/hpi/include/threads_md.h - src/windows/hpi/src/linker_md.c - src/windows/hpi/src/memory_md.c - src/windows/hpi/src/monitor_md.c - src/windows/hpi/src/path_md.c - src/windows/hpi/src/socket_md.c - src/windows/hpi/src/sys_api_md.c - src/windows/hpi/src/system_md.c - src/windows/hpi/src/threads_md.c - test/java/net/InetAddress/B4762344.java - test/java/net/InetAddress/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/java/net/InetAddress/Simple1NameServiceDescriptor.java - test/java/net/InetAddress/Simple2NameServiceDescriptor.java - test/java/net/InetAddress/SimpleNameService.java - test/sun/net/InetAddress/nameservice/B6442088.java - test/sun/net/InetAddress/nameservice/CacheTest.java - test/sun/net/InetAddress/nameservice/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/sun/net/InetAddress/nameservice/SimpleNameService.java - test/sun/net/InetAddress/nameservice/SimpleNameServiceDescriptor.java Changeset: 14d9e6af8889 Author: andrew Date: 2011-02-15 15:09 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/14d9e6af8889 7017581: missing copyright header in test/sun/java2d/pipe/RegionOps.java Reviewed-by: anthony ! test/sun/java2d/pipe/RegionOps.java Changeset: 7c98b6b4e8a7 Author: dav Date: 2011-02-16 01:12 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7c98b6b4e8a7 6994933: java.awt.Desktop feature is "intermittently" supported on Solaris. Really unexpected behavior. Reviewed-by: art, dcherepanov ! src/solaris/classes/sun/awt/X11/XDesktopPeer.java ! src/solaris/native/sun/xawt/awt_Desktop.c Changeset: 41da8f9ea83a Author: lana Date: 2011-02-21 14:23 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/41da8f9ea83a Merge Changeset: eeaad0d340b2 Author: peytoia Date: 2011-02-09 18:00 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/eeaad0d340b2 7017800: (tz) Support tzdata2011b Reviewed-by: okutsu ! make/sun/javazic/tzdata/VERSION ! make/sun/javazic/tzdata/australasia ! make/sun/javazic/tzdata/northamerica ! make/sun/javazic/tzdata/zone.tab ! src/share/classes/sun/util/resources/TimeZoneNames.java ! src/share/classes/sun/util/resources/TimeZoneNames_de.java ! src/share/classes/sun/util/resources/TimeZoneNames_es.java ! src/share/classes/sun/util/resources/TimeZoneNames_fr.java ! src/share/classes/sun/util/resources/TimeZoneNames_it.java ! src/share/classes/sun/util/resources/TimeZoneNames_ja.java ! src/share/classes/sun/util/resources/TimeZoneNames_ko.java ! src/share/classes/sun/util/resources/TimeZoneNames_pt_BR.java ! src/share/classes/sun/util/resources/TimeZoneNames_sv.java ! src/share/classes/sun/util/resources/TimeZoneNames_zh_CN.java ! src/share/classes/sun/util/resources/TimeZoneNames_zh_TW.java Changeset: 493a9eeb9bca Author: alexp Date: 2011-02-10 21:36 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/493a9eeb9bca 6993171: JavaTest/JDK7b114 - no help text is shown for interview questions, JavaTest HANGS UP Reviewed-by: rupashka ! src/share/classes/javax/swing/JComponent.java ! src/share/classes/javax/swing/JLayer.java ! src/share/classes/javax/swing/RepaintManager.java ! src/share/classes/javax/swing/SwingUtilities.java ! src/share/classes/javax/swing/plaf/LayerUI.java ! test/javax/swing/JComponent/6989617/bug6989617.java Changeset: be8045e2d792 Author: lana Date: 2011-02-11 12:14 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/be8045e2d792 Merge - make/java/hpi/Makefile - make/java/hpi/hpi_common.gmk - make/java/hpi/native/Makefile - make/java/hpi/native/mapfile-vers - make/java/hpi/native/reorder-i586 - make/java/hpi/native/reorder-sparc - make/java/hpi/native/reorder-sparcv9 - make/java/hpi/windows/Makefile - src/share/hpi/export/bool.h - src/share/hpi/export/dll.h - src/share/hpi/export/hpi.h - src/share/hpi/include/hpi_impl.h - src/share/hpi/include/vm_calls.h - src/share/hpi/src/hpi.c - src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.5.8.properties - src/solaris/classes/sun/awt/fontconfigs/solaris.fontconfig.5.9.properties - src/solaris/hpi/export/byteorder_md.h - src/solaris/hpi/export/hpi_md.h - src/solaris/hpi/export/io_md.h - src/solaris/hpi/export/path_md.h - src/solaris/hpi/export/timeval_md.h - src/solaris/hpi/include/hpi_init.h - src/solaris/hpi/include/interrupt.h - src/solaris/hpi/include/largefile.h - src/solaris/hpi/include/largefile_linux.h - src/solaris/hpi/include/largefile_solaris.h - src/solaris/hpi/native_threads/include/condvar_md.h - src/solaris/hpi/native_threads/include/monitor_md.h - src/solaris/hpi/native_threads/include/mutex_md.h - src/solaris/hpi/native_threads/include/np.h - src/solaris/hpi/native_threads/include/porting.h - src/solaris/hpi/native_threads/include/threads_md.h - src/solaris/hpi/native_threads/src/condvar_md.c - src/solaris/hpi/native_threads/src/interrupt_md.c - src/solaris/hpi/native_threads/src/monitor_md.c - src/solaris/hpi/native_threads/src/mutex_md.c - src/solaris/hpi/native_threads/src/sys_api_td.c - src/solaris/hpi/native_threads/src/threads_linux.c - src/solaris/hpi/native_threads/src/threads_md.c - src/solaris/hpi/native_threads/src/threads_solaris.c - src/solaris/hpi/src/interrupt.c - src/solaris/hpi/src/linker_md.c - src/solaris/hpi/src/memory_md.c - src/solaris/hpi/src/system_md.c - src/windows/hpi/export/byteorder_md.h - src/windows/hpi/export/hpi_md.h - src/windows/hpi/export/io_md.h - src/windows/hpi/export/path_md.h - src/windows/hpi/export/timeval_md.h - src/windows/hpi/include/monitor_md.h - src/windows/hpi/include/mutex_md.h - src/windows/hpi/include/threads_md.h - src/windows/hpi/src/linker_md.c - src/windows/hpi/src/memory_md.c - src/windows/hpi/src/monitor_md.c - src/windows/hpi/src/path_md.c - src/windows/hpi/src/socket_md.c - src/windows/hpi/src/sys_api_md.c - src/windows/hpi/src/system_md.c - src/windows/hpi/src/threads_md.c - test/java/net/InetAddress/B4762344.java - test/java/net/InetAddress/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/java/net/InetAddress/Simple1NameServiceDescriptor.java - test/java/net/InetAddress/Simple2NameServiceDescriptor.java - test/java/net/InetAddress/SimpleNameService.java - test/sun/net/InetAddress/nameservice/B6442088.java - test/sun/net/InetAddress/nameservice/CacheTest.java - test/sun/net/InetAddress/nameservice/META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor - test/sun/net/InetAddress/nameservice/SimpleNameService.java - test/sun/net/InetAddress/nameservice/SimpleNameServiceDescriptor.java Changeset: 82f7b8f6b174 Author: alexp Date: 2011-02-15 16:40 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/82f7b8f6b174 6956842: BasicTreeUI.getPreferredSize(JComp c) is delegated to getPreferredSize(c, true) not (c, false) Reviewed-by: rupashka ! src/share/classes/javax/swing/plaf/basic/BasicTreeUI.java Changeset: be44bda15fcf Author: okutsu Date: 2011-02-16 16:51 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/be44bda15fcf 6936350: API clarification needed on useDaylightTime() for timezones that have defined usage dates Reviewed-by: peytoia ! src/share/classes/java/util/SimpleTimeZone.java ! src/share/classes/java/util/TimeZone.java + test/java/util/TimeZone/DaylightTimeTest.java Changeset: f326139e7fda Author: malenkov Date: 2011-02-16 18:32 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f326139e7fda 6980124: closed/javax/swing/plaf/synth/SynthPainter/unitTest/UnitTest.java fails Reviewed-by: alexp ! src/share/classes/javax/swing/plaf/synth/SynthGraphicsUtils.java Changeset: 888baed5c55b Author: rupashka Date: 2011-02-18 00:16 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/888baed5c55b 7016693: javax/swing/JScrollBar/6542335/bug6542335.java failed on Ubuntu Reviewed-by: alexp ! test/javax/swing/JScrollBar/6542335/bug6542335.java Changeset: db0a6fd0fea9 Author: amenkov Date: 2011-02-18 13:21 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/db0a6fd0fea9 6801236: test closed/javax/sound/sampled/FileWriter/WaveBigEndian.java fails Reviewed-by: alexp ! src/share/classes/com/sun/media/sound/services/javax.sound.sampled.spi.FormatConversionProvider Changeset: 64b4226f171f Author: amenkov Date: 2011-02-18 13:27 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/64b4226f171f 7000132: Misplaced description in javax.sound.sampled.AudioSystem.getTargetDataLine Reviewed-by: dav ! src/share/classes/javax/sound/sampled/AudioSystem.java Changeset: a93bb05d00fd Author: alexp Date: 2011-02-18 19:21 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a93bb05d00fd 6474153: LookAndFeel.makeKeyBindings(...) doesn't ignore last element in keyBindingList with odd size Reviewed-by: rupashka ! src/share/classes/javax/swing/LookAndFeel.java + test/javax/swing/LookAndFeel/6474153/bug6474153.java Changeset: 3772a3d90b40 Author: rupashka Date: 2011-02-18 20:09 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3772a3d90b40 6997102: Test case has hard code, so that applet thread threw exception Reviewed-by: alexp ! test/javax/swing/JFileChooser/6798062/bug6798062.html ! test/javax/swing/JFileChooser/6798062/bug6798062.java Changeset: 2cc71008b6db Author: lana Date: 2011-02-21 14:31 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/2cc71008b6db Merge ! src/share/classes/javax/swing/JComponent.java Changeset: 3ebece41badd Author: lana Date: 2011-02-21 14:33 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3ebece41badd Merge - test/java/lang/Thread/StopBeforeStart.java Changeset: f046a44e92fd Author: jgodinez Date: 2011-02-24 15:00 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f046a44e92fd 7022228: JPRT failure: RuntimeException in SupportedMedia regression test Reviewed-by: igor, prr ! src/windows/classes/sun/print/Win32PrintService.java Changeset: 094c70388ab0 Author: lana Date: 2011-02-24 18:04 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/094c70388ab0 Merge - test/java/lang/Thread/StopBeforeStart.java Changeset: 6bbc7a473495 Author: lana Date: 2011-03-01 14:04 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/6bbc7a473495 Merge - test/java/lang/Thread/StopBeforeStart.java Changeset: b88e4395c437 Author: katleman Date: 2011-03-03 14:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b88e4395c437 Added tag jdk7-b132 for changeset 6bbc7a473495 ! .hgtags Changeset: 6d5a992dbac2 Author: lana Date: 2011-03-07 11:36 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/6d5a992dbac2 Merge ! make/common/Release.gmk - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java From Kelly.Ohair at oracle.com Mon Mar 7 20:17:54 2011 From: Kelly.Ohair at oracle.com (Kelly O'Hair) Date: Mon, 7 Mar 2011 12:17:54 -0800 Subject: Review request for 7020513 : Add com.sun.xml.internal to the "package.access" property in java.security In-Reply-To: <4D75345C.6070006@oracle.com> References: <4D64558A.6040807@oracle.com> <4D64C8EF.2050101@oracle.com> <4D654E60.9070106@oracle.com> <4D67F10B.80506@oracle.com> <4D680F51.3050906@oracle.com> <4D75345C.6070006@oracle.com> Message-ID: Looks good to me. -kto On Mar 7, 2011, at 11:39 AM, Rama Pulavarthi wrote: > Thanks for the review. We had to make additional changes to run the > tests. Hopefully this is the final webrev for this issue. > > Please review this new webrev which also has changes to > jdk/test/Makefile to run the tests. > http://cr.openjdk.java.net/~ramap/CR7020513-open-webrev/ > > thanks, > Rama Pulavarthi > > On 02/25/2011 12:21 PM, Sean Mullan wrote: >> Looks good to me. >> >> --Sean >> >> On 2/25/11 1:12 PM, Rama Pulavarthi wrote: >>> Please review this updated webrev that has the patch for JDK 7 repo. >>> http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-jaxws-7020513-open/webrev/ >>> >>> >>> For background on this issue, this is not a new one. I am trying to port >>> the old fixes made in jdk repo as part of earlier jax-ws integrations in >>> to Open JDK 6. >>> The original issue CR 6592792 was fixed in JDK 6u7 and then ported to >>> Open JDK 6. When Open JDK 6 transitioned to Hg, it was committed as >>> [1]. As fix for CR 6831313 >>> :update jaxws in >>> OpenJDK7 to 2.1 plus bug fixes from OpenJDK 6, Only the changes in jaxws >>> sources are ported to JDK 7 [2]. But, there are other changes that are >>> made in jdk repo required for this fix. >>> >>> [1] http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/586feec8273d >>> >>> [2] http://hg.openjdk.java.net/jdk7/build/jaxws/rev/31822b475baa >>> >>> >>> >>> thanks, >>> Rama Pulavarthi > From Alan.Bateman at oracle.com Mon Mar 7 20:22:53 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 07 Mar 2011 20:22:53 +0000 Subject: Review request for 7020513 : Add com.sun.xml.internal to the "package.access" property in java.security In-Reply-To: <4D75345C.6070006@oracle.com> References: <4D64558A.6040807@oracle.com> <4D64C8EF.2050101@oracle.com> <4D654E60.9070106@oracle.com> <4D67F10B.80506@oracle.com> <4D680F51.3050906@oracle.com> <4D75345C.6070006@oracle.com> Message-ID: <4D753E9D.5080801@oracle.com> Rama Pulavarthi wrote: > Thanks for the review. We had to make additional changes to run the > tests. Hopefully this is the final webrev for this issue. > > Please review this new webrev which also has changes to > jdk/test/Makefile to run the tests. > http://cr.openjdk.java.net/~ramap/CR7020513-open-webrev/ > This looks good to me too. -Alan From jonathan.gibbons at oracle.com Mon Mar 7 21:45:30 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Mon, 07 Mar 2011 21:45:30 +0000 Subject: hg: jdk7/tl/langtools: 6980021: javac should document @file command line option Message-ID: <20110307214533.AF2B047F4B@hg.openjdk.java.net> Changeset: cb9493a80341 Author: jjg Date: 2011-03-07 13:45 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/cb9493a80341 6980021: javac should document @file command line option Reviewed-by: mcimadamore ! 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/resources/javac.properties ! test/tools/javac/diags/CheckResourceKeys.java From valerie.peng at oracle.com Mon Mar 7 22:32:40 2011 From: valerie.peng at oracle.com (valerie.peng at oracle.com) Date: Mon, 07 Mar 2011 22:32:40 +0000 Subject: hg: jdk7/tl/jdk: 6994008: PKCS11 should support "RSA" and "RSA/ECB/NoPadding" ciphers Message-ID: <20110307223311.6D48E47F55@hg.openjdk.java.net> Changeset: a52da0bada39 Author: valeriep Date: 2011-03-07 14:14 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a52da0bada39 6994008: PKCS11 should support "RSA" and "RSA/ECB/NoPadding" ciphers Summary: Add support for RSA_X_509 mechanism and aliasing of "RSA" to "RSA/ECB/PKCS1Padding". Reviewed-by: wetmore ! src/share/classes/sun/security/pkcs11/P11RSACipher.java ! src/share/classes/sun/security/pkcs11/SunPKCS11.java ! test/sun/security/pkcs11/Cipher/TestRSACipher.java ! test/sun/security/pkcs11/Cipher/TestRSACipherWrap.java + test/sun/security/pkcs11/Cipher/TestRawRSACipher.java From valerie.peng at oracle.com Tue Mar 8 01:08:19 2011 From: valerie.peng at oracle.com (Valerie (Yu-Ching) Peng) Date: Mon, 07 Mar 2011 17:08:19 -0800 Subject: Code Review for 7001933: Deadlock in java.lang.classloader.getPackage() In-Reply-To: <4D68CA91.7040005@oracle.com> References: <4D67079A.3050109@oracle.com> <4D670AD3.8080908@oracle.com> <4D684B0E.50407@oracle.com> <4D68CA91.7040005@oracle.com> Message-ID: <4D758183.6070806@oracle.com> It could be that they have custom classloader which isn't parallel capable. So, this will still occur w/ jdk7 if this is the case. We'll need to get some more information on the setup to reproduce the issue. Given the time constraint, I'll file a bug to keep track of this test case creation, but this will likely not be done for jdk7. Thanks for all the comments/feedbacks, Valerie On 02/26/11 01:40 AM, Alan Bateman wrote: > Valerie (Yu-Ching) Peng wrote: >> David, >> >> Thanks for the comments. I've updated the webrev accordingly at: >> http://cr.openjdk.java.net/~valeriep/7001933/webrev.01/ >> >> In the case of a race condition, we'll just return the earlier >> defined package object, i.e. pkg2 in your code sample. >> Or, we could also get rid of this code block altogether, then there >> shouldn't be a race condition. However, this means that we'll call >> into the parent loader for the packages that they defined which >> implies some performance cost. >> > I think the updated changes are okay/harmless but it's not completely > clear to me that the specific deadlock that this bug is about can > actually happen in jdk7 (because AppClassLoader is parallel capable). > > It would be great to put in time to develop a test to demonstrate the > original issue, even if can't be an automated regression test (I've no > doubt that it would need to run many iterations to duplicate). > > I also think we should submit a bug to re-examine how java.net.URL > behaves when java.protocol.handler.pkgs is set. Minimally I think it > needs to be clearer on the initiating loaders used when attempting to > load the protocol handler. In addition it's not clear to me that it > should fallback to the system class loader for the "file" protocol > handler as that is required early in the startup to define the system > package. > > -Alan From kumar.x.srinivasan at oracle.com Tue Mar 8 01:40:28 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Tue, 08 Mar 2011 01:40:28 +0000 Subject: hg: jdk7/tl/langtools: 7021927: javac: regression in performance Message-ID: <20110308014030.3BC9347F64@hg.openjdk.java.net> Changeset: 6970d9fb8e02 Author: ksrini Date: 2011-03-07 17:39 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/6970d9fb8e02 7021927: javac: regression in performance Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/file/JavacFileManager.java ! src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java ! src/share/classes/com/sun/tools/javac/util/Options.java ! test/tools/javac/6508981/TestInferBinaryName.java ! test/tools/javac/api/6411310/Test.java ! test/tools/javac/api/T6838467.java ! test/tools/javac/api/T6877206.java + test/tools/javac/file/zip/T6836682.java + test/tools/javac/file/zip/T6865530.java + test/tools/javac/file/zip/Utils.java From David.Holmes at oracle.com Tue Mar 8 06:10:29 2011 From: David.Holmes at oracle.com (David Holmes) Date: Tue, 08 Mar 2011 16:10:29 +1000 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <20110307095738.GA3742@redhat.com> References: <4D7087C8.40605@oracle.com> <20110307095738.GA3742@redhat.com> Message-ID: <4D75C855.4030308@oracle.com> There was a glitch with the use of CTARGDIR (which isn't defined), so now we check for the ergo file in LAUNCHER_PLATFORM_SRC. Webrev has been updated - same location. Verified with i586 and non-i586 builds. Thanks, David Gary Benson said the following on 03/07/11 19:57: > Hi David, > > I'm good with these changes, and I'm happy for ergo_zero.c to vanish. > > Thanks, > Gary > > David Holmes wrote: >> Hopefully all interested parties are addressed in the cc lists. >> >> webrev at: >> >> http://cr.openjdk.java.net/~dholmes/7022370/webrev/ >> >> The launcher ergonomics (ergo.c) currently relies on >> per-architecture, eg ergo_sparc.c, ergo_i586.c, files to define the >> actual ergonomics operations. Only x86 is actually CPU specific, >> both sparc and zero share the same platform independent >> implementation. It will simplify things if we provide a platform >> independent default in ergo.c that is conditionally compiled, and >> modify the build system to cause that compilation if a platform >> specific ergo file is not found. >> >> We can potentially delete all the ergo_*.c files except for >> ergo_i586.c, and we no longer require that there be a >> per-architecture file, which makes additional porting easier. >> >> Gary: do you mind seeing ergo_zero.c go away, or would you prefer to >> leave it in case someone is doing a local customization? I suppose >> the some consideration could be given to ergo_sparc.c too. Is >> anybody aware of downstream distros that modify these files to >> change the default ergonomics policies? >> >> Thanks, >> David Holmes > From mandy.chung at oracle.com Tue Mar 8 06:31:25 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Mon, 07 Mar 2011 22:31:25 -0800 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <4D75C855.4030308@oracle.com> References: <4D7087C8.40605@oracle.com> <20110307095738.GA3742@redhat.com> <4D75C855.4030308@oracle.com> Message-ID: <4D75CD3D.1080905@oracle.com> On 3/7/11 10:10 PM, David Holmes wrote: > There was a glitch with the use of CTARGDIR (which isn't defined), so > now we check for the ergo file in LAUNCHER_PLATFORM_SRC. Webrev has > been updated - same location. > Looks good. Sorry I didn't catch that CTARGDIR isn't defined as it exists in the existing makefile. > Verified with i586 and non-i586 builds. > Thumbs up. Mandy > Thanks, > David > > Gary Benson said the following on 03/07/11 19:57: >> Hi David, >> >> I'm good with these changes, and I'm happy for ergo_zero.c to vanish. >> >> Thanks, >> Gary >> >> David Holmes wrote: >>> Hopefully all interested parties are addressed in the cc lists. >>> >>> webrev at: >>> >>> http://cr.openjdk.java.net/~dholmes/7022370/webrev/ >>> >>> The launcher ergonomics (ergo.c) currently relies on >>> per-architecture, eg ergo_sparc.c, ergo_i586.c, files to define the >>> actual ergonomics operations. Only x86 is actually CPU specific, >>> both sparc and zero share the same platform independent >>> implementation. It will simplify things if we provide a platform >>> independent default in ergo.c that is conditionally compiled, and >>> modify the build system to cause that compilation if a platform >>> specific ergo file is not found. >>> >>> We can potentially delete all the ergo_*.c files except for >>> ergo_i586.c, and we no longer require that there be a >>> per-architecture file, which makes additional porting easier. >>> >>> Gary: do you mind seeing ergo_zero.c go away, or would you prefer to >>> leave it in case someone is doing a local customization? I suppose >>> the some consideration could be given to ergo_sparc.c too. Is >>> anybody aware of downstream distros that modify these files to >>> change the default ergonomics policies? >>> >>> Thanks, >>> David Holmes >> From Alan.Bateman at oracle.com Tue Mar 8 10:06:55 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 08 Mar 2011 10:06:55 +0000 Subject: 7025468: Tests using diamond with anonymous inner classes needs to be reverted Message-ID: <4D75FFBF.1020906@oracle.com> I need a reviewer for a small fix to two tests that no longer compile in the jdk7/tl forest as they were using diamond with anonymous inner classes. Thanks, Alan. diff --git a/test/java/nio/file/DirectoryStream/Basic.java b/test/java/nio/file/DirectoryStream/Basic.java --- a/test/java/nio/file/DirectoryStream/Basic.java +++ b/test/java/nio/file/DirectoryStream/Basic.java @@ -69,7 +69,7 @@ public class Basic { throw new RuntimeException("entry not found"); // check filtering: f* should match foo - DirectoryStream.Filter filter = new DirectoryStream.Filter<>() { + DirectoryStream.Filter filter = new DirectoryStream.Filter() { private PathMatcher matcher = dir.getFileSystem().getPathMatcher("glob:f*"); public boolean accept(Path file) { diff --git a/test/java/util/PriorityQueue/NoNulls.java b/test/java/util/PriorityQueue/NoNulls.java --- a/test/java/util/PriorityQueue/NoNulls.java +++ b/test/java/util/PriorityQueue/NoNulls.java @@ -53,7 +53,7 @@ public class NoNulls { public class NoNulls { void test(String[] args) throws Throwable { final Comparator nullTolerantComparator - = new Comparator<>() { + = new Comparator() { public int compare(String x, String y) { return (x == null ? -1 : y == null ? 1 : @@ -65,7 +65,7 @@ public class NoNulls { nullSortedSet.add(null); final PriorityQueue nullPriorityQueue - = new PriorityQueue<>() { + = new PriorityQueue() { public Object[] toArray() { return new Object[] { null };}}; final Collection nullCollection = new ArrayList<>(); From forax at univ-mlv.fr Tue Mar 8 10:17:47 2011 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Tue, 08 Mar 2011 11:17:47 +0100 Subject: 7025468: Tests using diamond with anonymous inner classes needs to be reverted In-Reply-To: <4D75FFBF.1020906@oracle.com> References: <4D75FFBF.1020906@oracle.com> Message-ID: <4D76024B.5000006@univ-mlv.fr> Le 08/03/2011 11:06, Alan Bateman a ?crit : > I need a reviewer for a small fix to two tests that no longer compile > in the jdk7/tl forest as they were using diamond with anonymous inner > classes. > > Thanks, > Alan. Looks good. R?mi > > > diff --git a/test/java/nio/file/DirectoryStream/Basic.java > b/test/java/nio/file/DirectoryStream/Basic.java > --- a/test/java/nio/file/DirectoryStream/Basic.java > +++ b/test/java/nio/file/DirectoryStream/Basic.java > @@ -69,7 +69,7 @@ public class Basic { > throw new RuntimeException("entry not found"); > > // check filtering: f* should match foo > - DirectoryStream.Filter filter = new > DirectoryStream.Filter<>() { > + DirectoryStream.Filter filter = new > DirectoryStream.Filter() { > private PathMatcher matcher = > dir.getFileSystem().getPathMatcher("glob:f*"); > public boolean accept(Path file) { > diff --git a/test/java/util/PriorityQueue/NoNulls.java > b/test/java/util/PriorityQueue/NoNulls.java > --- a/test/java/util/PriorityQueue/NoNulls.java > +++ b/test/java/util/PriorityQueue/NoNulls.java > @@ -53,7 +53,7 @@ public class NoNulls { > public class NoNulls { > void test(String[] args) throws Throwable { > final Comparator nullTolerantComparator > - = new Comparator<>() { > + = new Comparator() { > public int compare(String x, String y) { > return (x == null ? -1 : > y == null ? 1 : > @@ -65,7 +65,7 @@ public class NoNulls { > nullSortedSet.add(null); > > final PriorityQueue nullPriorityQueue > - = new PriorityQueue<>() { > + = new PriorityQueue() { > public Object[] toArray() { return new Object[] { null };}}; > > final Collection nullCollection = new ArrayList<>(); From alan.bateman at oracle.com Tue Mar 8 10:33:46 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Tue, 08 Mar 2011 10:33:46 +0000 Subject: hg: jdk7/tl/jdk: 7025468: Tests using diamond with anonymous inner classes needs to be reverted Message-ID: <20110308103408.67A6047F9A@hg.openjdk.java.net> Changeset: 663c7623b96b Author: alanb Date: 2011-03-08 10:32 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/663c7623b96b 7025468: Tests using diamond with anonymous inner classes needs to be reverted Reviewed-by: dholmes, forax ! test/java/nio/file/DirectoryStream/Basic.java ! test/java/util/PriorityQueue/NoNulls.java From maurizio.cimadamore at oracle.com Tue Mar 8 10:50:35 2011 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 08 Mar 2011 10:50:35 +0000 Subject: 7025468: Tests using diamond with anonymous inner classes needs to be reverted In-Reply-To: <4D75FFBF.1020906@oracle.com> References: <4D75FFBF.1020906@oracle.com> Message-ID: <4D7609FB.60804@oracle.com> Changes look good. Maurizio On 08/03/11 10:06, Alan Bateman wrote: > I need a reviewer for a small fix to two tests that no longer compile > in the jdk7/tl forest as they were using diamond with anonymous inner > classes. > > Thanks, > Alan. > > > diff --git a/test/java/nio/file/DirectoryStream/Basic.java > b/test/java/nio/file/DirectoryStream/Basic.java > --- a/test/java/nio/file/DirectoryStream/Basic.java > +++ b/test/java/nio/file/DirectoryStream/Basic.java > @@ -69,7 +69,7 @@ public class Basic { > throw new RuntimeException("entry not found"); > > // check filtering: f* should match foo > - DirectoryStream.Filter filter = new > DirectoryStream.Filter<>() { > + DirectoryStream.Filter filter = new > DirectoryStream.Filter() { > private PathMatcher matcher = > dir.getFileSystem().getPathMatcher("glob:f*"); > public boolean accept(Path file) { > diff --git a/test/java/util/PriorityQueue/NoNulls.java > b/test/java/util/PriorityQueue/NoNulls.java > --- a/test/java/util/PriorityQueue/NoNulls.java > +++ b/test/java/util/PriorityQueue/NoNulls.java > @@ -53,7 +53,7 @@ public class NoNulls { > public class NoNulls { > void test(String[] args) throws Throwable { > final Comparator nullTolerantComparator > - = new Comparator<>() { > + = new Comparator() { > public int compare(String x, String y) { > return (x == null ? -1 : > y == null ? 1 : > @@ -65,7 +65,7 @@ public class NoNulls { > nullSortedSet.add(null); > > final PriorityQueue nullPriorityQueue > - = new PriorityQueue<>() { > + = new PriorityQueue() { > public Object[] toArray() { return new Object[] { null };}}; > > final Collection nullCollection = new ArrayList<>(); From neil.richards at ngmr.net Tue Mar 8 15:28:52 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Tue, 8 Mar 2011 15:28:52 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export Message-ID: Bug 6597112 [1] reports that the implementation of java.rmi.server.UnicastRemoteObject.exportObject(Remote) has a window in which the Remote object given to the method is only weakly referenced by the implementation. Due to this window, an unfortunately timed GC cycle can free up the Remote object, causing an exception to be thrown at a later point (still) within the exportObject() implementation. In the implementation, the window occurs in sun.rmi.server.UnicastServerRef.exportObject(), between the creation of a sun.rmi.transport.Target object (which currently holds the object being exported weakly), and the call to ref.exportObject(), which retrieves a reference for the Remote from (the weak reference within) the Target, completes the export of the Remote, storing the retrieved (strong) reference in sun.rmi.transport.ObjectTable. The weak reference within Target is actually an instance of sun.rmi.transport.WeakRef (which extends java.lang.ref.WeakReference), a package private class that is used only for storing refs within Target objects, and (transiently) for performing lookups within the ObjectTable. WeakRef provides a facility for "pinning" (and unpinning) its object, whereby it can hold a strong reference to the object (in addition to the weak reference), thus preventing it (whilst pinned) from being GC'd. Currently, a new WeakRef starts life "unpinned". The attached suggested fix (in webrev zip file form) changes the behaviour of WeakRef such that its reference is initally pinned. This prevents the referred to (Remote) object from being initially GC-able, until the call which places a (strong) reference to it in ObjectTable has completed, at which point it can be unpinned. In order to be able to unpin it at this point, the suggested fix modifies the access modifier to Target.unpinImpl() (which calls onto WeakRef.unpin()) from 'default' (ie. package private) to 'public'. (This is necessary as the caller, UnicastServerRef, is in a different package to Target). Also included is a testcase which is likely to demonstrate the problem, based on the code given in the original bug submission. Without the fix, on my machine (a Linux x86 dual Pentium 4 - gasp at the sheer *power*), the problem is seen within around 5000 iterations, so I've set the maximum iteration count (ie. the point at which the test concludes the problem doesn't exist) to be 10x that. Please review the suggested fix attached, and reply with your comments/suggestions, Thanks, Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From neil.richards at ngmr.net Tue Mar 8 16:04:35 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Tue, 8 Mar 2011 16:04:35 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: <4D764E7F.6000509@oracle.com> References: <4D764E7F.6000509@oracle.com> Message-ID: On 8 March 2011 15:42, Alan Bateman wrote: > Give that P4 of yours a kick, it dropped the attachment. Argh! Thanks Alan - needless to say, the attachment's fine at my end (!) To avoid this stripping, I'll attach and inline the 'hg export' of the suggested fix below. (Apologies to all for the inconvenient format). Could you help me by uploading it to cr.openjdk.java.net for me, to help others cast their eyes over it? Thanks, Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU -- # HG changeset patch # User Neil Richards , # Date 1298369045 0 # Branch j6597112 # Node ID 99d99bb9e27da0dccfbd7788682f31fb05a1b119 # Parent 6bbc7a4734952ae7604578f270e1566639fa8752 6597112: referential integrity loophole during remote object export Summary: Eliminate weak ref GC window during RMI export Contributed-by: diff -r 6bbc7a473495 -r 99d99bb9e27d src/share/classes/sun/rmi/server/UnicastServerRef.java --- a/src/share/classes/sun/rmi/server/UnicastServerRef.java Tue Mar 01 14:04:59 2011 -0800 +++ b/src/share/classes/sun/rmi/server/UnicastServerRef.java Tue Feb 22 10:04:05 2011 +0000 @@ -205,6 +205,7 @@ Target target = new Target(impl, this, stub, ref.getObjID(), permanent); ref.exportObject(target); + target.unpinImpl(); hashToMethod_Map = hashToMethod_Maps.get(implClass); return stub; } diff -r 6bbc7a473495 -r 99d99bb9e27d src/share/classes/sun/rmi/transport/Target.java --- a/src/share/classes/sun/rmi/transport/Target.java Tue Mar 01 14:04:59 2011 -0800 +++ b/src/share/classes/sun/rmi/transport/Target.java Tue Feb 22 10:04:05 2011 +0000 @@ -77,11 +77,11 @@ * Construct a Target for a remote object "impl" with * a specific object id. * - * If "permanent" is true, then the impl is pinned permanently - * (the impl will not be collected via distributed and/or local - * GC). If "on" is false, than the impl is subject to - * collection. Permanent objects do not keep a server from - * exiting. + * Upon return, the impl is pinned, thus not initially eligible + * for collection via distributed and/or local GC). + * If "permanent" is false, the impl subsequently may be made subject to + * collection by calling {@link #unpinImpl()}. + * Permanent or pinned objects do not keep a server from exiting. */ public Target(Remote impl, Dispatcher disp, Remote stub, ObjID id, boolean permanent) @@ -114,9 +114,6 @@ } this.permanent = permanent; - if (permanent) { - pinImpl(); - } } /** @@ -212,7 +209,7 @@ * can be garbage collected locally. But only if there the refSet * is empty. All of the weak/strong handling is in WeakRef */ - synchronized void unpinImpl() { + public synchronized void unpinImpl() { /* only unpin if: * a) impl is not permanent, and * b) impl is not already unpinned, and diff -r 6bbc7a473495 -r 99d99bb9e27d src/share/classes/sun/rmi/transport/WeakRef.java --- a/src/share/classes/sun/rmi/transport/WeakRef.java Tue Mar 01 14:04:59 2011 -0800 +++ b/src/share/classes/sun/rmi/transport/WeakRef.java Tue Feb 22 10:04:05 2011 +0000 @@ -33,7 +33,7 @@ * * This class extends the functionality of java.lang.ref.WeakReference in * several ways. The methods pin() and unpin() can be used to set - * whether the contained reference is strong or weak (it is weak upon + * whether the contained reference is strong or weak (it is strong upon * construction). The hashCode() and equals() methods are overridden so * that WeakRef objects hash and compare to each other according to the * object identity of their referents. @@ -51,18 +51,24 @@ /** * Create a new WeakRef to the given object. + * The given object is initially pinned, ie. referenced strongly. + * It may be subsequently unpinned by calling {@link #unpin()}. */ public WeakRef(Object obj) { super(obj); setHashValue(obj); // cache object's "identity" hash code + strongRef = obj; } /** * Create a new WeakRef to the given object, registered with a queue. + * The given object is initially pinned, ie. referenced strongly. + * It may be subsequently unpinned by calling {@link #unpin()}. */ public WeakRef(Object obj, ReferenceQueue q) { super(obj, q); setHashValue(obj); // cache object's "identity" hash code + strongRef = obj; } /** diff -r 6bbc7a473495 -r 99d99bb9e27d test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java Tue Feb 22 10:04:05 2011 +0000 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6597112 + * @summary Objects should not be GC-able as they are being exported to RMI + * @author Neil Richards , + */ + +import java.rmi.Remote; +import java.rmi.server.UnicastRemoteObject; + +public class GcDuringExport { + private static final long MAX_EXPORT_ITERATIONS = 50000; + + public static void main(String[] args) throws Exception { + final Thread gcInducingThread = new Thread() { + public void run() { while (true) { + System.gc(); + try { Thread.sleep(1); } catch (InterruptedException e) { } + } + } + }; + + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + + long i = 0; + try { + while (i < MAX_EXPORT_ITERATIONS) { + i++; + UnicastRemoteObject.exportObject(new Remote() { }, 0); + } + } catch (Throwable e) { + throw new RuntimeException("Test FAILED on iteration " + i + ".", e); + } + + System.out.println("Test successfully exported " + i + " objects."); + } +} + + From kumar.x.srinivasan at oracle.com Tue Mar 8 16:13:39 2011 From: kumar.x.srinivasan at oracle.com (Kumar Srinivasan) Date: Tue, 08 Mar 2011 08:13:39 -0800 Subject: Request for review: 7022370 Launcher ergonomics doesn't need per-architecture implementations In-Reply-To: <4D75C855.4030308@oracle.com> References: <4D7087C8.40605@oracle.com> <20110307095738.GA3742@redhat.com> <4D75C855.4030308@oracle.com> Message-ID: <4D7655B3.4080006@oracle.COM> Looks good. Kumar > There was a glitch with the use of CTARGDIR (which isn't defined), so > now we check for the ergo file in LAUNCHER_PLATFORM_SRC. Webrev has > been updated - same location. > > Verified with i586 and non-i586 builds. > > Thanks, > David > > Gary Benson said the following on 03/07/11 19:57: >> Hi David, >> >> I'm good with these changes, and I'm happy for ergo_zero.c to vanish. >> >> Thanks, >> Gary >> >> David Holmes wrote: >>> Hopefully all interested parties are addressed in the cc lists. >>> >>> webrev at: >>> >>> http://cr.openjdk.java.net/~dholmes/7022370/webrev/ >>> >>> The launcher ergonomics (ergo.c) currently relies on >>> per-architecture, eg ergo_sparc.c, ergo_i586.c, files to define the >>> actual ergonomics operations. Only x86 is actually CPU specific, >>> both sparc and zero share the same platform independent >>> implementation. It will simplify things if we provide a platform >>> independent default in ergo.c that is conditionally compiled, and >>> modify the build system to cause that compilation if a platform >>> specific ergo file is not found. >>> >>> We can potentially delete all the ergo_*.c files except for >>> ergo_i586.c, and we no longer require that there be a >>> per-architecture file, which makes additional porting easier. >>> >>> Gary: do you mind seeing ergo_zero.c go away, or would you prefer to >>> leave it in case someone is doing a local customization? I suppose >>> the some consideration could be given to ergo_sparc.c too. Is >>> anybody aware of downstream distros that modify these files to >>> change the default ergonomics policies? >>> >>> Thanks, >>> David Holmes >> From Alan.Bateman at oracle.com Tue Mar 8 16:24:43 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 08 Mar 2011 16:24:43 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: References: <4D764E7F.6000509@oracle.com> Message-ID: <4D76584B.20406@oracle.com> Neil Richards wrote: > : > Could you help me by uploading it to cr.openjdk.java.net for me, to > help others cast their eyes over it? > No problem, here it is: http://cr.openjdk.java.net/~alanb/6597112/webrev/ You can of course your any other http server too. -Alan. From chris.hegarty at oracle.com Tue Mar 8 17:53:48 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Tue, 08 Mar 2011 17:53:48 +0000 Subject: hg: jdk7/tl/jdk: 6495521: (doc) ConcurrentSkipListMap links to web page NOT describing SkipList Message-ID: <20110308175358.8C9B547FA9@hg.openjdk.java.net> Changeset: f251e9510e50 Author: dl Date: 2011-03-08 17:52 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f251e9510e50 6495521: (doc) ConcurrentSkipListMap links to web page NOT describing SkipList Summary: update link, and minor implementation comment in Exchanger Reviewed-by: chegar, mduigou ! src/share/classes/java/util/concurrent/ConcurrentSkipListMap.java ! src/share/classes/java/util/concurrent/Exchanger.java From chris.hegarty at oracle.com Tue Mar 8 18:17:09 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Tue, 08 Mar 2011 18:17:09 +0000 Subject: hg: jdk7/tl/jdk: 7023006: Reduce unnecessary thread activity in ForkJoinPool Message-ID: <20110308181718.A917B47FAB@hg.openjdk.java.net> Changeset: 63509149c027 Author: dl Date: 2011-03-08 18:16 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/63509149c027 7023006: Reduce unnecessary thread activity in ForkJoinPool Reviewed-by: chegar, dholmes ! src/share/classes/java/util/concurrent/ForkJoinPool.java ! src/share/classes/java/util/concurrent/ForkJoinTask.java ! src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java From chris.hegarty at oracle.com Tue Mar 8 18:35:10 2011 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Tue, 08 Mar 2011 18:35:10 +0000 Subject: hg: jdk7/tl/jdk: 7023006: Reduce unnecessary thread activity in ForkJoinPool In-Reply-To: References: <20110308181718.A917B47FAB@hg.openjdk.java.net> Message-ID: <4D7676DE.7020101@oracle.com> On 03/ 8/11 06:25 PM, Alex Lam S.L. wrote: > Under ForkJoinPool.java: > > * readers must tolerate null slots. To avoid flailing during > > should it be "failing" (extraneous "l")? I actually flagged this in my original review, but put it aside as I guessed it was kinda correct. The array is sized large enough so as not to have it grow continuously as new workers are added. I guess 'flailing' refers to the perceived trashing if this were to happen. -Chris. > > > Alex. > > > > On Tue, Mar 8, 2011 at 6:17 PM, wrote: >> Changeset: 63509149c027 >> Author: dl >> Date: 2011-03-08 18:16 +0000 >> URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/63509149c027 >> >> 7023006: Reduce unnecessary thread activity in ForkJoinPool >> Reviewed-by: chegar, dholmes >> >> ! src/share/classes/java/util/concurrent/ForkJoinPool.java >> ! src/share/classes/java/util/concurrent/ForkJoinTask.java >> ! src/share/classes/java/util/concurrent/ForkJoinWorkerThread.java >> >> From mike.duigou at oracle.com Tue Mar 8 23:11:00 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Tue, 08 Mar 2011 23:11:00 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110308231121.37F3647FC5@hg.openjdk.java.net> Changeset: d4a34b150597 Author: mduigou Date: 2011-03-08 15:09 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d4a34b150597 6611830: UUID thread-safety and performance improvements Reviewed-by: mduigou, jjb, alanb, briangoetz, dholmes, peterjones Contributed-by: Daniel Aioanei ! src/share/classes/java/util/UUID.java Changeset: 9b2761fa906b Author: mduigou Date: 2011-03-08 15:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/9b2761fa906b Merge From mandy.chung at oracle.com Tue Mar 8 23:43:18 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Tue, 08 Mar 2011 15:43:18 -0800 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" Message-ID: <4D76BF16.5000202@oracle.com> 7006814: sun.util.logging.PlatformLogger ability to override the output format The platform logger is using the SimpleFormatter to be same as the default logging configuration. It prints 2 lines with the timestamp. For debugging use, 1-line format will be simpler and adequate. The number of lines output will be half. This fix allows to switch to 1-line format by setting "sun.util.logging.oneLineFormat" system property as an interim solution before 6381464 is fixed. Webrev at: http://cr.openjdk.java.net/~mchung/7006814/webrev.00/ Thanks Mandy From zhouyx at linux.vnet.ibm.com Wed Mar 9 05:07:46 2011 From: zhouyx at linux.vnet.ibm.com (Sean Chou) Date: Wed, 9 Mar 2011 13:07:46 +0800 Subject: Remove locks of type Object to help lock contention analysis Message-ID: Hi, I found there are code pieces using java.lang.Object as a lock type. It appears as follow: *//example ... private Object lock = new Object(); ... public void foo() { synchronized(lock) { ... } ... //end of example* This will give some confusing results when using tools like JLM to analyze synchronization contention, because tools usually use class name of the lock instance to indicate the lock. Here is an example from JLM: * **//example2 %MISS GETS NONREC SLOW REC TIER2 TIER3 %UTIL AVER-HTM MON-NAME 100 562 562 562 0 0 0 0 3377 [32C7C768] java/lang/Object at 9559CA00 (Object) 100 562 562 562 0 0 0 0 3160 [32C7C3D0] java/lang/Object at 951DA530 (Object) // <= which lock is this one representing? 100 560 560 560 0 0 0 0 3155 [37B4E854] java/lang/Object at 94BA1C00 (Object) 100 58 58 58 0 0 0 0 3100 [355D3AB8] org/apache/derby/impl/services/daemon/BasicDaemon at 9DE5B348 (Object) 100 28 28 28 0 0 0 0 3892 [355D401C] com/ibm/ws/sib/msgstore/persistence/lock/DBLockManagerThread at 9F6E5D18(Object) //end of example2* The first three lines indicate three locks of type java.lang.Object, and it is impossible to distinguish them. If these locks are changed to a named type as follows, //example3 *... private class InterruptLock {} private Object lock = new InterruptLock(); ... public void foo() { synchronized(lock) { ... } } ...* //end of example3 Exaple2 would be like this: //example4 *%MISS GETS NONREC SLOW REC TIER2 TIER3 %UTIL AVER-HTM MON-NAME 0 0 0 0 0 0 0 0 0 [36047598] com/ibm/ws/sib/msgstore/list/ReadWriteLock at A1CA04C8 (Object) 0 0 0 0 0 0 0 0 0 [360475F4] sun/nio/ch/PollSelectorImpl$InterruptLock at A7C06F58 (Object) // <= we get the lock name after modification 0 0 0 0 0 0 0 0 0 [36047650] com/ibm/ws/objectpool/ObjectPoolImpl at 9FCAA5F8(Object) * //end of example4 There are several classes found containing these pieces of code: *src/share/classes/java/lang/SecurityManager.java src/share/classes/java/lang/reflect/Proxy.java src/solaris/classes/java/lang/UNIXProcess.java.solaris src/solaris/classes/sun/nio/ch/PollSelectorImpl.java* It will bring some enhancement to performance tools if these modification can be applied. Any comments? -- Best Regards, Sean Chou From David.Holmes at oracle.com Wed Mar 9 05:16:19 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 09 Mar 2011 15:16:19 +1000 Subject: Remove locks of type Object to help lock contention analysis In-Reply-To: References: Message-ID: <4D770D23.7060802@oracle.com> Hi Sean, The intent with using Object is to avoid introducing unnecessary new classes, which increases memory and disk footprint (granted only a little but it all adds up). Further I don't see how this is any different to seeing a bunch of records that all indicate java.util.concurrent.locks.ReentrantLock as the type of the lock. It is the instance that is important, not the type (or not just the type). You can't expect a unique type name for each object used for locking. My 2c. David Holmes Sean Chou said the following on 03/09/11 15:07: > Hi, > I found there are code pieces using java.lang.Object as a lock type. It > appears as follow: > > *//example > ... > private Object lock = new Object(); > ... > public void foo() { > synchronized(lock) { ... } > ... > //end of example* > > This will give some confusing results when using tools like JLM to > analyze > synchronization contention, because tools usually use class name of the lock > > instance to indicate the lock. Here is an example from JLM: > * > **//example2 > %MISS GETS NONREC SLOW REC TIER2 TIER3 %UTIL AVER-HTM MON-NAME > 100 562 562 562 0 0 0 0 3377 [32C7C768] java/lang/Object at 9559CA00 (Object) > 100 562 562 562 0 0 0 0 3160 [32C7C3D0] java/lang/Object at 951DA530 (Object) > // <= which lock is this one representing? > 100 560 560 560 0 0 0 0 3155 [37B4E854] java/lang/Object at 94BA1C00 (Object) > 100 58 58 58 0 0 0 0 3100 [355D3AB8] > org/apache/derby/impl/services/daemon/BasicDaemon at 9DE5B348 (Object) > 100 28 28 28 0 0 0 0 3892 [355D401C] > com/ibm/ws/sib/msgstore/persistence/lock/DBLockManagerThread at 9F6E5D18(Object) > //end of example2* > > The first three lines indicate three locks of type java.lang.Object, and > it is impossible to distinguish them. > > If these locks are changed to a named type as follows, > > //example3 > *... > private class InterruptLock {} > private Object lock = new InterruptLock(); > ... > public void foo() { > synchronized(lock) { ... } } > ...* > //end of example3 > > Exaple2 would be like this: > > //example4 > *%MISS GETS NONREC SLOW REC TIER2 TIER3 %UTIL AVER-HTM MON-NAME > 0 0 0 0 0 0 0 0 0 [36047598] > com/ibm/ws/sib/msgstore/list/ReadWriteLock at A1CA04C8 (Object) > 0 0 0 0 0 0 0 0 0 [360475F4] > sun/nio/ch/PollSelectorImpl$InterruptLock at A7C06F58 (Object) // <= we get > the lock name after modification > 0 0 0 0 0 0 0 0 0 [36047650] > com/ibm/ws/objectpool/ObjectPoolImpl at 9FCAA5F8(Object) > * > //end of example4 > > There are several classes found containing these pieces of code: > *src/share/classes/java/lang/SecurityManager.java > src/share/classes/java/lang/reflect/Proxy.java > src/solaris/classes/java/lang/UNIXProcess.java.solaris > src/solaris/classes/sun/nio/ch/PollSelectorImpl.java* > > It will bring some enhancement to performance tools if these modification > can > be applied. Any comments? > From Alan.Bateman at oracle.com Wed Mar 9 10:45:44 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 09 Mar 2011 10:45:44 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: References: Message-ID: <4D775A58.6010708@oracle.com> Neil Richards wrote: > Bug 6597112 [1] reports that the implementation of > java.rmi.server.UnicastRemoteObject.exportObject(Remote) has a window > in which the Remote object given to the method is only weakly > referenced by the implementation. > > Due to this window, an unfortunately timed GC cycle can free up the > Remote object, causing an exception to be thrown at a later point > (still) within the exportObject() implementation. > I don't know the RMI code so this isn't a formal review, just a comment/question from skimming the webrev. You've changed WeakRef so that an instance is initially "strong". Does this have implications for other uses of WeakRef? I see one in sun.rmi.transport.ObjectTable for example. I wonder if it would be better to change the constructors so that the user of WeakRef decides the reference is initially pinned or not. Alternatively maybe factory methods should be introduced for all creation of WeakRefs and they be named so that it's clear where the WeakRefs are initially strong or not. Same thing with Target where I wonder about other uses as they will need to know that the impl is initially pinned. Otherwise it's good to get this bug fixed. -Alan. From neil.richards at ngmr.net Wed Mar 9 11:46:43 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Wed, 9 Mar 2011 11:46:43 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: <4D775A58.6010708@oracle.com> References: <4D775A58.6010708@oracle.com> Message-ID: Hi Alan, thanks for looking at this. On 9 March 2011 10:45, Alan Bateman wrote: > You've changed WeakRef so that an instance is initially "strong". Does this > have implications for other uses of WeakRef? I see one in > sun.rmi.transport.ObjectTable for example. You'll notice that the WeakRef constructed in ObjectTable is created solely for the purpose of looking for an entry in the table (ie. as a parameter to implTable.get()), and then immediately discarded. So whether it holds its reference strongly or weakly is unimportant in this instance. As WeakRef is only accessible within the sun.rmi.transport package (having the 'default' access modifier), I can be certain that the only two places where WeakRefs are constructed are for this lookup in ObjectTable, and in the constructor of Target. > I wonder if it would be better to > change the constructors so that the user of WeakRef decides the reference is > initially pinned or not. Alternatively maybe factory methods should be > introduced for all creation of WeakRefs and they be named so that it's clear > where the WeakRefs are initially strong or not. I don't believe the extra complexity is necessary, given WeakRef's current limited usage. > Same thing with Target where > I wonder about other uses as they will need to know that the impl is > initially pinned. Searching through the OpenJDK source, I found only two places where new Target objects are constructed: 1) sun.rmi.transport.DGCImpl. Here the Target object is called with a 'permanent' parameter setting of 'true'. (That's the 5th parameter to the constructor). You'll see that, in the original code for Target's constructor, if 'permanent' is 'true', a call was made from the constructor to its pinImpl() method, to pin the reference. With the change, this logic is no longer needed, as the reference starts life pinned. 2) sun.rmi.server.UnicastServerRef.exportObject() This is covered by my previous description of the suggested fix, which adds an explicit call to 'target.unpinImpl()' after the call to 'ref.exportObject(target)'. On reflection, I suppose it might be more clearly robust to put the unpinImpl() call in a 'finally' block (with the 'try' around the 'ref.exportObject(target)' call). Therefore, I attach an updated 'hg export' of the suggested fix, which adds this try/finally protection. On the basis of these searches, I believe the suggested fix is correct (for all uses of Target and WeakRef). - Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From Alan.Bateman at oracle.com Wed Mar 9 11:47:07 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 09 Mar 2011 11:47:07 +0000 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" In-Reply-To: <4D76BF16.5000202@oracle.com> References: <4D76BF16.5000202@oracle.com> Message-ID: <4D7768BB.2010604@oracle.com> Mandy Chung wrote: > 7006814: sun.util.logging.PlatformLogger ability to override the > output format > > The platform logger is using the SimpleFormatter to be same as the > default logging configuration. It prints 2 lines with the > timestamp. For debugging use, 1-line format will be simpler and > adequate. The number of lines output will be half. This fix allows to > switch to 1-line format by setting "sun.util.logging.oneLineFormat" > system property as an interim solution before 6381464 is fixed. > > Webrev at: > http://cr.openjdk.java.net/~mchung/7006814/webrev.00/ It seems a bit strange to have the platform logger support this but not SimpleFormatter. Do you think there would be any compatibility concerns if SimpleFormatter were changed to emit one line output? If not then it might be simpler to change it along with the platform logger so that this property isn't needed. If there is a concern then an alternative it to change the platform logger so that it emits the one-line output by default as it's only used in the platform. -Alan. From ptisnovs at redhat.com Wed Mar 9 13:27:49 2011 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Wed, 09 Mar 2011 14:27:49 +0100 Subject: Reviewer needed - more test cases added to regression java/lang/Double/ToString.java Message-ID: <4D778055.5020705@redhat.com> Hi, I'd like to change regression test java/lang/Double/ToString.java to check some issues described in bug #4511638 in addition to bug #4428022. Webrev containing new version of the regression test (and diffs) is available here: http://cr.openjdk.java.net/~ptisnovs/jtreg-DoubleToString/ New version of the test firstly check all numbers+their string form and then throws an exception in case at least one number is converted incorrectly (this means that all conversions are printed to stdout). Can anybody please review this change? Thank you in advance Pavel Tisnovsky From Alan.Bateman at oracle.com Wed Mar 9 13:56:51 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 09 Mar 2011 13:56:51 +0000 Subject: Reviewer needed - more test cases added to regression java/lang/Double/ToString.java In-Reply-To: <4D778055.5020705@redhat.com> References: <4D778055.5020705@redhat.com> Message-ID: <4D778723.4050309@oracle.com> Pavel Tisnovsky wrote: > Hi, > > I'd like to change regression test java/lang/Double/ToString.java to > check some issues described in bug #4511638 in addition to bug #4428022. > > Webrev containing new version of the regression test (and diffs) is > available here: > http://cr.openjdk.java.net/~ptisnovs/jtreg-DoubleToString/ > > New version of the test firstly check all numbers+their string form and > then throws an exception in case at least one number is converted > incorrectly (this means that all conversions are printed to stdout). > > Can anybody please review this change? > > Thank you in advance > Pavel Tisnovsky > Pavel - I think it would be best to include the test with the changes for 4511638 as we can't add a test that always fails (or maybe you are looking to add it with the @ignore keyword so that it's not run automatically?) -Alan From maurizio.cimadamore at oracle.com Wed Mar 9 16:48:22 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 09 Mar 2011 16:48:22 +0000 Subject: hg: jdk7/tl/langtools: 7025988: Test test/tools/javac/file/zip/T6836682.java takes too long to complete Message-ID: <20110309164824.E05B547FF4@hg.openjdk.java.net> Changeset: 4fd20d5b7295 Author: mcimadamore Date: 2011-03-09 16:47 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4fd20d5b7295 7025988: Test test/tools/javac/file/zip/T6836682.java takes too long to complete Summary: added @ignore tag to temporarily disable the test Reviewed-by: jjg ! test/tools/javac/file/zip/T6836682.java From mandy.chung at oracle.com Wed Mar 9 17:47:27 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Wed, 09 Mar 2011 09:47:27 -0800 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" In-Reply-To: <4D7768BB.2010604@oracle.com> References: <4D76BF16.5000202@oracle.com> <4D7768BB.2010604@oracle.com> Message-ID: <4D77BD2F.8040607@oracle.com> On 3/9/11 3:47 AM, Alan Bateman wrote: > Mandy Chung wrote: >> 7006814: sun.util.logging.PlatformLogger ability to override the >> output format >> >> The platform logger is using the SimpleFormatter to be same as the >> default logging configuration. It prints 2 lines with the >> timestamp. For debugging use, 1-line format will be simpler and >> adequate. The number of lines output will be half. This fix allows >> to switch to 1-line format by setting >> "sun.util.logging.oneLineFormat" system property as an interim >> solution before 6381464 is fixed. >> >> Webrev at: >> http://cr.openjdk.java.net/~mchung/7006814/webrev.00/ > It seems a bit strange to have the platform logger support this but > not SimpleFormatter. Do you think there would be any compatibility > concerns if SimpleFormatter were changed to emit one line output? As Eamonn said, I don't think we can change the default of SimpleFormatter to one line as it would break existing apps/scripts/tools that depend on the format. > If not then it might be simpler to change it along with the platform > logger so that this property isn't needed. If there is a concern then > an alternative it to change the platform logger so that it emits the > one-line output by default as it's only used in the platform. When j.u.logging is enabled (e.g. the j.u.logging API is called), it will use the SimpleFormatter as the default. If the platform logger uses one-line format, the output will be inconsistent depending on whether the j.u.logging API is used by the application. Keeping the default same as j.u.logging avoids the confusion. Mandy From Alan.Bateman at oracle.com Wed Mar 9 18:08:29 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 09 Mar 2011 18:08:29 +0000 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" In-Reply-To: <4D77BD2F.8040607@oracle.com> References: <4D76BF16.5000202@oracle.com> <4D7768BB.2010604@oracle.com> <4D77BD2F.8040607@oracle.com> Message-ID: <4D77C21D.1090206@oracle.com> Mandy Chung wrote: > : > As Eamonn said, I don't think we can change the default of > SimpleFormatter to one line as it would break existing > apps/scripts/tools that depend on the format. > > When j.u.logging is enabled (e.g. the j.u.logging API is called), it > will use the SimpleFormatter as the default. If the platform logger > uses one-line format, the output will be inconsistent depending on > whether the j.u.logging API is used by the application. Keeping the > default same as j.u.logging avoids the confusion. Right, but it seems very strange that the property only controls whether the platform logger emits the one-line format. It doesn't seem to be too much additional work to have SimpleFormatter do the same, or are you assuming that applications wanting a one-line format will configure their own formatter with java.util.logging.ConsoleHandler.formatter? -Alan. From mandy.chung at oracle.com Wed Mar 9 18:42:05 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Wed, 09 Mar 2011 10:42:05 -0800 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" In-Reply-To: <4D77C21D.1090206@oracle.com> References: <4D76BF16.5000202@oracle.com> <4D7768BB.2010604@oracle.com> <4D77BD2F.8040607@oracle.com> <4D77C21D.1090206@oracle.com> Message-ID: <4D77C9FD.8010201@oracle.com> On 3/9/11 10:08 AM, Alan Bateman wrote: > Mandy Chung wrote: >> : >> As Eamonn said, I don't think we can change the default of >> SimpleFormatter to one line as it would break existing >> apps/scripts/tools that depend on the format. >> >> When j.u.logging is enabled (e.g. the j.u.logging API is called), it >> will use the SimpleFormatter as the default. If the platform logger >> uses one-line format, the output will be inconsistent depending on >> whether the j.u.logging API is used by the application. Keeping the >> default same as j.u.logging avoids the confusion. > Right, but it seems very strange that the property only controls > whether the platform logger emits the one-line format. It doesn't seem > to be too much additional work to have SimpleFormatter do the same, Are you suggesting to have SimpleFormatter to support controling the one-line format vs the current 2-line format? I don't think so but just to clarify. > or are you assuming that applications wanting a one-line format will > configure their own formatter with > java.util.logging.ConsoleHandler.formatter? Right. Applications should have its own formatter if they want one-line format before 6381464 is fixed. My intent is to defer 6381464 since it impacts existing applications that require time to get feedback from customers. What I propose to do in the platform logger is for internal debugging use as an interim solution before 6381464. Mandy From david.holmes at oracle.com Thu Mar 10 00:54:42 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Thu, 10 Mar 2011 00:54:42 +0000 Subject: hg: jdk7/tl/jdk: 7022370: Launcher ergonomics should provide simple default implementation Message-ID: <20110310005513.4B86847009@hg.openjdk.java.net> Changeset: 38626f41e458 Author: dholmes Date: 2011-03-09 19:52 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/38626f41e458 7022370: Launcher ergonomics should provide simple default implementation Summary: Use a common, platform independent, implementation unless an architecture specific implementation exists Reviewed-by: ksrini, mchung, ohair, gbenson ! make/java/jli/Makefile ! src/solaris/bin/ergo.c - src/solaris/bin/ergo_sparc.c - src/solaris/bin/ergo_zero.c From kelly.ohair at oracle.com Thu Mar 10 04:35:20 2011 From: kelly.ohair at oracle.com (kelly.ohair at oracle.com) Date: Thu, 10 Mar 2011 04:35:20 +0000 Subject: hg: jdk7/tl/jdk: 3 new changesets Message-ID: <20110310043559.66A1D47016@hg.openjdk.java.net> Changeset: cfc05963734e Author: ramap Date: 2011-03-09 15:47 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/cfc05963734e 7020513: Add com.sun.xml.internal to the "package.access" property in $JAVA_HOME/lib/security/java.security Reviewed-by: ohair, alanb ! src/share/lib/security/java.security ! src/share/lib/security/java.security-solaris ! src/share/lib/security/java.security-windows ! test/Makefile Changeset: 5da9973cdba2 Author: ramap Date: 2011-03-09 15:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5da9973cdba2 6635776: Regression in jaxb tests with JDk6 U4 6741058: Move org/relaxng/datatype sources from jdk to jaxws workspace Reviewed-by: ohair, alanb ! make/com/sun/Makefile - make/com/sun/xml/Makefile ! make/common/internal/Defs-jaxws.gmk - src/share/classes/org/relaxng/datatype/Datatype.java - src/share/classes/org/relaxng/datatype/DatatypeBuilder.java - src/share/classes/org/relaxng/datatype/DatatypeException.java - src/share/classes/org/relaxng/datatype/DatatypeLibrary.java - src/share/classes/org/relaxng/datatype/DatatypeLibraryFactory.java - src/share/classes/org/relaxng/datatype/DatatypeStreamingValidator.java - src/share/classes/org/relaxng/datatype/ValidationContext.java - src/share/classes/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java - src/share/classes/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java - src/share/classes/org/relaxng/datatype/helpers/StreamingValidatorImpl.java Changeset: ea897f472e81 Author: ohair Date: 2011-03-09 18:01 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ea897f472e81 Merge - make/com/sun/xml/Makefile - src/share/classes/org/relaxng/datatype/Datatype.java - src/share/classes/org/relaxng/datatype/DatatypeBuilder.java - src/share/classes/org/relaxng/datatype/DatatypeException.java - src/share/classes/org/relaxng/datatype/DatatypeLibrary.java - src/share/classes/org/relaxng/datatype/DatatypeLibraryFactory.java - src/share/classes/org/relaxng/datatype/DatatypeStreamingValidator.java - src/share/classes/org/relaxng/datatype/ValidationContext.java - src/share/classes/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java - src/share/classes/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java - src/share/classes/org/relaxng/datatype/helpers/StreamingValidatorImpl.java From sundararajan.a at sun.com Thu Mar 10 07:23:45 2011 From: sundararajan.a at sun.com (sundararajan.a at sun.com) Date: Thu, 10 Mar 2011 07:23:45 +0000 Subject: hg: jdk7/tl/jdk: 6960211: JavaScript engine allows creation of interface although methods not available Message-ID: <20110310072354.DDE4A4701C@hg.openjdk.java.net> Changeset: 090c52eebf6a Author: sundar Date: 2011-03-10 12:52 +0530 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/090c52eebf6a 6960211: JavaScript engine allows creation of interface although methods not available Reviewed-by: jjh ! src/share/classes/com/sun/script/javascript/RhinoScriptEngine.java ! src/share/classes/com/sun/script/util/InterfaceImplementor.java + test/javax/script/GetInterfaceTest.java From ptisnovs at redhat.com Thu Mar 10 09:54:34 2011 From: ptisnovs at redhat.com (Pavel Tisnovsky) Date: Thu, 10 Mar 2011 10:54:34 +0100 Subject: Reviewer needed - more test cases added to regression java/lang/Double/ToString.java In-Reply-To: <4D778723.4050309@oracle.com> References: <4D778055.5020705@redhat.com> <4D778723.4050309@oracle.com> Message-ID: <4D789FDA.4000208@redhat.com> Alan Bateman wrote: > Pavel Tisnovsky wrote: >> Hi, >> >> I'd like to change regression test java/lang/Double/ToString.java to >> check some issues described in bug #4511638 in addition to bug #4428022. >> >> Webrev containing new version of the regression test (and diffs) is >> available here: >> http://cr.openjdk.java.net/~ptisnovs/jtreg-DoubleToString/ >> >> New version of the test firstly check all numbers+their string form and >> then throws an exception in case at least one number is converted >> incorrectly (this means that all conversions are printed to stdout). >> >> Can anybody please review this change? >> >> Thank you in advance >> Pavel Tisnovsky >> > Pavel - I think it would be best to include the test with the changes > for 4511638 as we can't add a test that always fails (or maybe you are > looking to add it with the @ignore keyword so that it's not run > automatically?) Sorry I didn't know it is not possible to add a regression test which always fails. Because 4511638 is not fixed yet (AFAIK), I'll prefer to wait for this fix. Thanks Pavel > > -Alan From Alan.Bateman at oracle.com Thu Mar 10 15:44:20 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Thu, 10 Mar 2011 15:44:20 +0000 Subject: Review request: 7006814 "sun.util.logging.PlatformLogger ability to override the output format" In-Reply-To: <4D77C9FD.8010201@oracle.com> References: <4D76BF16.5000202@oracle.com> <4D7768BB.2010604@oracle.com> <4D77BD2F.8040607@oracle.com> <4D77C21D.1090206@oracle.com> <4D77C9FD.8010201@oracle.com> Message-ID: <4D78F1D4.9010301@oracle.com> Mandy Chung wrote: > : > Are you suggesting to have SimpleFormatter to support controling the > one-line format vs the current 2-line format? Yes, that's what I was wondering about as it seems a bit strange that we can configure the platform logger to generate one-line output but not SimpleFormatter (at least not without creating a formatter and configuring ConsoleHandler.formatter). It sounds like 6381464 isn't really fixable out of concerns for existing log file parsers, in which case maybe it should be closed. On the webrev, then the changes looks reasonable to me. It doesn't look like getCurrentTime needs to cache the Date object. On the property it looks like you have to explicitly set it to "true" to be effective, ie: can't "java -Dsun.util.logging.oneLineFormat Foo". Might be nicer to rename to something like useOneLineFormat and default it to true when the value is the empty string (just a suggestion). -Alan. From vincent.x.ryan at oracle.com Thu Mar 10 18:38:23 2011 From: vincent.x.ryan at oracle.com (vincent.x.ryan at oracle.com) Date: Thu, 10 Mar 2011 18:38:23 +0000 Subject: hg: jdk7/tl/jdk: 7016078: javax.net.ssl.SSLException: Received fatal alert: internal_error starting JDK 7 b126 Message-ID: <20110310183851.117344703A@hg.openjdk.java.net> Changeset: 7766633ec80f Author: vinnie Date: 2011-03-10 18:21 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7766633ec80f 7016078: javax.net.ssl.SSLException: Received fatal alert: internal_error starting JDK 7 b126 Reviewed-by: valeriep ! src/share/classes/sun/security/pkcs11/P11Key.java From bhavesh.patel at sun.com Thu Mar 10 22:39:55 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Thu, 10 Mar 2011 22:39:55 +0000 Subject: hg: jdk7/tl/langtools: 6776656: Incorrect number in 'generated' help-doc.html Message-ID: <20110310223957.0430F47047@hg.openjdk.java.net> Changeset: da10d62990a7 Author: bpatel Date: 2011-03-10 14:37 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/da10d62990a7 6776656: Incorrect number in 'generated' help-doc.html Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties From mike.duigou at oracle.com Fri Mar 11 00:15:37 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Thu, 10 Mar 2011 16:15:37 -0800 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() Message-ID: <60175512-023E-428D-B003-F699CF9A8DA7@oracle.com> This is a review request for an issue which was previously committed in 2006 but was quickly withdrawn because it was believed to cause a regression in other software. That removal was mistaken and this fix appears to be bona-fide beneficial. http://cr.openjdk.java.net/~mduigou/5045147/0/webrev/ Note that this fix impacts both TreeMap and TreeSet. Prior to this fix both have allowed "null" to be added to the collection when the map/set is empty. I've personally run across this issue in usage. Diagnosing and fixing the broken application wasn't initially obvious because of this bug in TreeMap/TreeSet. Only after some frustrating sleuthing were we able to conclude that the problem was in TreeMap. Thanks, Mike From chris.hegarty at oracle.com Fri Mar 11 08:47:59 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Fri, 11 Mar 2011 08:47:59 +0000 Subject: hg: jdk7/tl/jdk: 7024560: InetAddress.getLocalHost().getHostName() returns localhost for hostnames of length HOST_NAME_MAX Message-ID: <20110311084809.819FB47088@hg.openjdk.java.net> Changeset: ab13f19ee0ff Author: chegar Date: 2011-03-11 08:47 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ab13f19ee0ff 7024560: InetAddress.getLocalHost().getHostName() returns localhost for hostnames of length HOST_NAME_MAX Reviewed-by: alanb, michaelm ! src/solaris/native/java/net/Inet4AddressImpl.c ! src/solaris/native/java/net/Inet6AddressImpl.c From chris.hegarty at oracle.com Fri Mar 11 08:58:08 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Fri, 11 Mar 2011 08:58:08 +0000 Subject: hg: jdk7/tl/jdk: 7026346: URLConnection.guessContentTypeFromStream does not support UTF-8 and UTF-32 xml streams with BOM Message-ID: <20110311085818.5995947089@hg.openjdk.java.net> Changeset: 107d55ecd50d Author: chegar Date: 2011-03-11 08:57 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/107d55ecd50d 7026346: URLConnection.guessContentTypeFromStream does not support UTF-8 and UTF-32 xml streams with BOM Reviewed-by: alanb Contributed-by: Charles Lee ! src/share/classes/java/net/URLConnection.java ! test/java/net/URLConnection/GetXmlContentType.java From vincent.x.ryan at oracle.com Fri Mar 11 09:57:47 2011 From: vincent.x.ryan at oracle.com (vincent.x.ryan at oracle.com) Date: Fri, 11 Mar 2011 09:57:47 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110311095806.BF4274708C@hg.openjdk.java.net> Changeset: 8ef60faa95d6 Author: vinnie Date: 2011-03-11 09:55 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8ef60faa95d6 6986477: sun/security/mscapi/AccessKeyStore.sh test is failing on jdk7 Reviewed-by: valeriep ! test/sun/security/mscapi/access.policy ! test/sun/security/mscapi/noaccess.policy Changeset: f4d3033b4b65 Author: vinnie Date: 2011-03-11 09:57 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f4d3033b4b65 Merge - make/com/sun/xml/Makefile - src/share/classes/org/relaxng/datatype/Datatype.java - src/share/classes/org/relaxng/datatype/DatatypeBuilder.java - src/share/classes/org/relaxng/datatype/DatatypeException.java - src/share/classes/org/relaxng/datatype/DatatypeLibrary.java - src/share/classes/org/relaxng/datatype/DatatypeLibraryFactory.java - src/share/classes/org/relaxng/datatype/DatatypeStreamingValidator.java - src/share/classes/org/relaxng/datatype/ValidationContext.java - src/share/classes/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java - src/share/classes/org/relaxng/datatype/helpers/ParameterlessDatatypeBuilder.java - src/share/classes/org/relaxng/datatype/helpers/StreamingValidatorImpl.java - src/solaris/bin/ergo_sparc.c - src/solaris/bin/ergo_zero.c From chris.hegarty at oracle.com Fri Mar 11 13:50:57 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Fri, 11 Mar 2011 13:50:57 +0000 Subject: hg: jdk7/tl/jdk: 7023363: URI("ftp", "[www.abc.com]", "/dir1/dir2", "query", "frag") should throw URISyntaxException Message-ID: <20110311135107.32A1547096@hg.openjdk.java.net> Changeset: 3fdfa11ea5ac Author: chegar Date: 2011-03-11 13:50 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3fdfa11ea5ac 7023363: URI("ftp", "[www.abc.com]", "/dir1/dir2", "query", "frag") should throw URISyntaxException Reviewed-by: alanb, michaelm ! src/share/classes/java/net/URI.java ! test/java/net/URI/Test.java From kumar.x.srinivasan at oracle.com Fri Mar 11 18:12:20 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Fri, 11 Mar 2011 18:12:20 +0000 Subject: hg: jdk7/tl/jdk: 7023416: (pack200) fix parfait issues Message-ID: <20110311181248.1824A470A0@hg.openjdk.java.net> Changeset: ed87479c96c2 Author: ksrini Date: 2011-03-11 10:03 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ed87479c96c2 7023416: (pack200) fix parfait issues Reviewed-by: jrose ! src/share/native/com/sun/java/util/jar/pack/unpack.cpp From mike.duigou at oracle.com Fri Mar 11 18:22:59 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Fri, 11 Mar 2011 10:22:59 -0800 Subject: core-dev Missing mails Message-ID: (apologies to those on build-dev who also got this message in error) It appears that there was a transient problem with the openjdk email server earlier this week and that, as a result, some core-lib-dev emails were not sent to the subscriber list. Of interest to me are two review requests: "Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put()" http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006171.html and "Making java.util.Iterator.remove() for the iterators for EnumSet more resilient" http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006122.html Due to the apparent lack of notification I will delay the commit of the EnumSet patch until Monday. Thanks and sorry for the inconvenience, Mike From naoto.sato at oracle.com Fri Mar 11 19:31:54 2011 From: naoto.sato at oracle.com (naoto.sato at oracle.com) Date: Fri, 11 Mar 2011 19:31:54 +0000 Subject: hg: jdk7/tl/jdk: 7023613: (lc) Incorrect string returned by Locale.toString() with non-empty script field Message-ID: <20110311193204.397E3470A7@hg.openjdk.java.net> Changeset: 8216ad5fabb8 Author: naoto Date: 2011-03-11 11:31 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8216ad5fabb8 7023613: (lc) Incorrect string returned by Locale.toString() with non-empty script field Reviewed-by: srl ! src/share/classes/java/util/Locale.java ! test/java/util/Locale/LocaleEnhanceTest.java From Lance.Andersen at oracle.com Fri Mar 11 20:03:50 2011 From: Lance.Andersen at oracle.com (Lance Andersen - Oracle) Date: Fri, 11 Mar 2011 15:03:50 -0500 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList Message-ID: Hi, I have posted the diffs to DriverManager for review at http://cr.openjdk.java.net/~lancea/7026898/. This change utilizes CopyOnWriteArrayList instead of the Vectors previously used. Regards, Lance Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com Oracle is committed to developing practices and products that help protect the environment From Ulf.Zibis at gmx.de Fri Mar 11 20:18:50 2011 From: Ulf.Zibis at gmx.de (Ulf Zibis) Date: Fri, 11 Mar 2011 21:18:50 +0100 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList In-Reply-To: References: Message-ID: <4D7A83AA.8060208@gmx.de> Maybe you could update the javadoc style ( -> @code etc.) and move the constructor to the begining. -Ulf Am 11.03.2011 21:03, schrieb Lance Andersen - Oracle: > Hi, > > I have posted the diffs to DriverManager for review at http://cr.openjdk.java.net/~lancea/7026898/. This change utilizes CopyOnWriteArrayList instead of the Vectors previously used. > > > Regards, > > Lance > > > Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 > Oracle Java Engineering > 1 Network Drive > Burlington, MA 01803 > Lance.Andersen at oracle.com > > Oracle is committed to developing practices and products that help protect the environment > > > From Lance.Andersen at oracle.com Fri Mar 11 20:56:26 2011 From: Lance.Andersen at oracle.com (Lance Andersen - Oracle) Date: Fri, 11 Mar 2011 15:56:26 -0500 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList In-Reply-To: <4D7A83AA.8060208@gmx.de> References: <4D7A83AA.8060208@gmx.de> Message-ID: <19350AAD-1F08-4906-9607-2E4F530EE120@oracle.com> Hi Ulf, Thank you for the note. On Mar 11, 2011, at 3:18 PM, Ulf Zibis wrote: > Maybe you could update the javadoc style ( -> @code etc.) and move the constructor to the begining. I need to go through all of the java.sql & javax.sql classes to address HTML issues over the coming weeks, I will look at the javadoc changes that you suggest then (there are existing CRs on this) I do not mind moving the constructor, I just left it where it was since DriverManager was written, but happy to do so. Regards Lance > > -Ulf > > > Am 11.03.2011 21:03, schrieb Lance Andersen - Oracle: >> Hi, >> >> I have posted the diffs to DriverManager for review at http://cr.openjdk.java.net/~lancea/7026898/. This change utilizes CopyOnWriteArrayList instead of the Vectors previously used. >> >> >> Regards, >> >> Lance >> >> >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 >> Oracle Java Engineering >> 1 Network Drive >> Burlington, MA 01803 >> Lance.Andersen at oracle.com >> >> Oracle is committed to developing practices and products that help protect the environment >> >> >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com Oracle is committed to developing practices and products that help protect the environment From Alan.Bateman at oracle.com Fri Mar 11 21:04:10 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 11 Mar 2011 21:04:10 +0000 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() In-Reply-To: References: Message-ID: <4D7A8E4A.8020901@oracle.com> Mike Duigou wrote but nobody heard: > This is a review request for an issue which was previously committed in 2006 but was quickly withdrawn because it was believed to cause a regression in other software. That removal was mistaken and this fix appears to be bona-fide beneficial. > > http://cr.openjdk.java.net/~mduigou/5045147/0/webrev/ > > Note that this fix impacts both TreeMap and TreeSet. Prior to this fix both have allowed "null" to be added to the collection when the map/set is empty. I've personally run across this issue in usage. Diagnosing and fixing the broken application wasn't initially obvious because of this bug in TreeMap/TreeSet. Only after some frustrating sleuthing were we able to conclude that the problem was in TreeMap. > It would be great to get this one fixed, thanks for going through the history. The change looks good to me. I guess there isn't really any need to explicitly check if the comparator is null as it will NPE anyway, and probably there isn't a need to explicitly check key either as compare(key,key) will give us the NPE. If you are keeping the explicit null check then should the braces go? -Alan. From forax at univ-mlv.fr Fri Mar 11 21:03:39 2011 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Fri, 11 Mar 2011 22:03:39 +0100 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList In-Reply-To: <4D7A83AA.8060208@gmx.de> References: <4D7A83AA.8060208@gmx.de> Message-ID: <4D7A8E2B.3070407@univ-mlv.fr> Hi Lance, - logSync is not declared final. - the comment "thow a SecurityException" is not that useful - in getDrivers(), I think you can use an ArrayList to gather all drivers and use Collections.enumeration() at the end. - also instead of if (drivers == null || drivers.equals("")) { if (drivers == null || drivers.isEmpty()) { should be a little more efficient. That's all :) R?mi On 03/11/2011 09:18 PM, Ulf Zibis wrote: > Maybe you could update the javadoc style ( -> @code etc.) and > move the constructor to the begining. > > -Ulf > > > Am 11.03.2011 21:03, schrieb Lance Andersen - Oracle: >> Hi, >> >> I have posted the diffs to DriverManager for review at >> http://cr.openjdk.java.net/~lancea/7026898/. This change utilizes >> CopyOnWriteArrayList instead of the Vectors previously used. >> >> >> Regards, >> >> Lance >> >> >> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 >> Oracle Java Engineering >> 1 Network Drive >> Burlington, MA 01803 >> Lance.Andersen at oracle.com >> >> Oracle is committed to developing practices and products that >> help protect the environment >> >> >> From joe.darcy at oracle.com Fri Mar 11 22:07:57 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Fri, 11 Mar 2011 22:07:57 +0000 Subject: hg: jdk7/tl/langtools: 7026868: Apply specification changes fro 6505047 Message-ID: <20110311220759.55A2A470AD@hg.openjdk.java.net> Changeset: 46ed58a098ad Author: darcy Date: 2011-03-11 14:07 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/46ed58a098ad 7026868: Apply specification changes fro 6505047 Reviewed-by: jjg ! src/share/classes/javax/lang/model/element/Element.java ! src/share/classes/javax/lang/model/element/TypeParameterElement.java From schlosna at gmail.com Fri Mar 11 23:26:08 2011 From: schlosna at gmail.com (David Schlosnagle) Date: Fri, 11 Mar 2011 18:26:08 -0500 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList In-Reply-To: References: Message-ID: On Fri, Mar 11, 2011 at 3:03 PM, Lance Andersen - Oracle wrote: > I have posted the diffs to DriverManager for review at http://cr.openjdk.java.net/~lancea/7026898/. ?This change utilizes CopyOnWriteArrayList instead of the Vectors previously used. Lance, Shouldn't the logSync lock field be final? - Dave From bhavesh.patel at sun.com Fri Mar 11 23:42:12 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Fri, 11 Mar 2011 23:42:12 +0000 Subject: hg: jdk7/tl/langtools: 7006178: findbugs high priority issues in new javadoc Message-ID: <20110311234214.530FF470B1@hg.openjdk.java.net> Changeset: b60754fe206d Author: bpatel Date: 2011-03-11 15:39 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/b60754fe206d 7006178: findbugs high priority issues in new javadoc Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java + test/com/sun/javadoc/testUseOption/C.java ! test/com/sun/javadoc/testUseOption/TestUseOption.java + test/com/sun/javadoc/testUseOption/UsedInC.java From Lance.Andersen at oracle.com Sat Mar 12 21:51:30 2011 From: Lance.Andersen at oracle.com (Lance Andersen - Oracle) Date: Sat, 12 Mar 2011 16:51:30 -0500 Subject: Code review request for 7026898 DriverManager to now use CopyOnWriteArrayList In-Reply-To: References: Message-ID: <772E8086-4A8F-45BC-BE80-7A4CC6EA1850@oracle.com> Hi Dave, Yes it could be made final. This is just a hold over from the original code, but there is no reason that I cannot make it final. Regards Lance On Mar 11, 2011, at 6:26 PM, David Schlosnagle wrote: > On Fri, Mar 11, 2011 at 3:03 PM, Lance Andersen - Oracle > wrote: >> I have posted the diffs to DriverManager for review at http://cr.openjdk.java.net/~lancea/7026898/. This change utilizes CopyOnWriteArrayList instead of the Vectors previously used. > > Lance, > > Shouldn't the logSync lock field be final? > > - Dave Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037 Oracle Java Engineering 1 Network Drive Burlington, MA 01803 Lance.Andersen at oracle.com Oracle is committed to developing practices and products that help protect the environment From weijun.wang at oracle.com Sun Mar 13 09:11:09 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Sun, 13 Mar 2011 09:11:09 +0000 Subject: hg: jdk7/tl/jdk: 6990848: JGSS/windows security code native code compiler warnings Message-ID: <20110313091119.96154470F9@hg.openjdk.java.net> Changeset: d901560d70a7 Author: weijun Date: 2011-03-13 17:09 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d901560d70a7 6990848: JGSS/windows security code native code compiler warnings Reviewed-by: valeriep ! src/windows/native/sun/security/krb5/NativeCreds.c From xuelei.fan at oracle.com Mon Mar 14 16:05:26 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Mon, 14 Mar 2011 16:05:26 +0000 Subject: hg: jdk7/tl/jdk: 7009794: misleading text in SSLHandshakeException exception message Message-ID: <20110314160556.CF8024713C@hg.openjdk.java.net> Changeset: fa9d7e241517 Author: xuelei Date: 2011-03-14 09:05 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fa9d7e241517 7009794: misleading text in SSLHandshakeException exception message Summary: update the warning message Reviewed-by: weijun ! src/share/classes/sun/security/ssl/ClientHandshaker.java From kumar.x.srinivasan at oracle.com Mon Mar 14 17:38:34 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Mon, 14 Mar 2011 17:38:34 +0000 Subject: hg: jdk7/tl/jdk: 7027288: (launcher) remove jkernel test from MiscTests Message-ID: <20110314173843.ED9F547142@hg.openjdk.java.net> Changeset: b708c576f201 Author: ksrini Date: 2011-03-14 10:36 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b708c576f201 7027288: (launcher) remove jkernel test from MiscTests Reviewed-by: mchung, herrick ! test/tools/launcher/MiscTests.java From vincent.x.ryan at oracle.com Mon Mar 14 18:13:49 2011 From: vincent.x.ryan at oracle.com (vincent.x.ryan at oracle.com) Date: Mon, 14 Mar 2011 18:13:49 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110314181408.5E96747144@hg.openjdk.java.net> Changeset: 5c978a922711 Author: vinnie Date: 2011-03-14 17:50 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5c978a922711 6686215: Some mutables not defensively copied when deserializing java.security.CodeSource & Timestamp objects Reviewed-by: mullan ! src/share/classes/java/security/CodeSource.java ! src/share/classes/java/security/Timestamp.java Changeset: 2e473067520f Author: vinnie Date: 2011-03-14 18:13 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/2e473067520f Merge From jonathan.gibbons at oracle.com Mon Mar 14 18:34:00 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Mon, 14 Mar 2011 18:34:00 +0000 Subject: hg: jdk7/tl/langtools: 7026414: Types.asElement() returns null for ErrorType Message-ID: <20110314183404.8C8CF47147@hg.openjdk.java.net> Changeset: 307b065ff2af Author: jjg Date: 2011-03-14 11:33 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/307b065ff2af 7026414: Types.asElement() returns null for ErrorType Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/model/JavacTypes.java ! test/tools/javac/api/6557752/T6557752.java ! test/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java From jonathan.gibbons at oracle.com Mon Mar 14 18:42:38 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Mon, 14 Mar 2011 18:42:38 +0000 Subject: hg: jdk7/tl/langtools: 7010608: the string 'error' should appear in error messages Message-ID: <20110314184240.1B2FF47149@hg.openjdk.java.net> Changeset: e2890b8369f7 Author: jjg Date: 2011-03-14 11:42 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e2890b8369f7 7010608: the string 'error' should appear in error messages Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/util/BasicDiagnosticFormatter.java ! test/tools/apt/Compile/golden.txt ! test/tools/javac/4846262/Test.out ! test/tools/javac/Diagnostics/6769027/T6769027.java + test/tools/javac/Diagnostics/7010608/Test.java ! test/tools/javac/diags/examples/CountError.java ! test/tools/javac/diags/examples/CountErrorPlural.java ! test/tools/javac/diags/examples/IdentifierExpected.java ! test/tools/javac/diags/examples/KindnameClass.java ! test/tools/javac/diags/examples/KindnameConstructor.java ! test/tools/javac/diags/examples/KindnameMethod.java ! test/tools/javac/diags/examples/KindnameVariable.java From joe.darcy at oracle.com Mon Mar 14 18:46:15 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Mon, 14 Mar 2011 18:46:15 +0000 Subject: hg: jdk7/tl/jdk: 7027362: Project Coin: warn of throwing InterruptedException in AutoCloseable.close javadoc Message-ID: <20110314184625.2C5724714A@hg.openjdk.java.net> Changeset: 1924a21184a6 Author: darcy Date: 2011-03-14 11:45 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1924a21184a6 7027362: Project Coin: warn of throwing InterruptedException in AutoCloseable.close javadoc Reviewed-by: jjb ! src/share/classes/java/lang/AutoCloseable.java From jonathan.gibbons at oracle.com Mon Mar 14 18:49:08 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Mon, 14 Mar 2011 18:49:08 +0000 Subject: hg: jdk7/tl/langtools: 7026509: Cannot use JavaCompiler to create multiple CompilationTasks for partial compilations Message-ID: <20110314184910.1B7054714B@hg.openjdk.java.net> Changeset: cb119107aeea Author: jjg Date: 2011-03-14 11:48 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/cb119107aeea 7026509: Cannot use JavaCompiler to create multiple CompilationTasks for partial compilations Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java ! src/share/classes/com/sun/tools/javac/api/JavacTool.java + test/tools/javac/api/TestJavacTask_Lock.java + test/tools/javac/api/TestJavacTask_Multiple.java + test/tools/javac/api/TestJavacTask_ParseAttrGen.java From mike.duigou at oracle.com Mon Mar 14 21:02:43 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Mon, 14 Mar 2011 14:02:43 -0700 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: <4D7BF02D.4040707@oracle.com> References: <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com> <4D7BF02D.4040707@oracle.com> Message-ID: <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> I've gotten feedback regarding this issue and I've updated the webrev to use the commented out compare(key, key) test rather than the previously committed solution. I hadn't looked at the commented out code too carefully and had assumed it was pseudo-code rather than an actual solution. It's an improvement over the original solution and reads, to me and apparently others, a lot simpler. http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ Also now included is a jtreg unit test. Mike From Alan.Bateman at oracle.com Mon Mar 14 21:09:45 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 14 Mar 2011 21:09:45 +0000 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> References: <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com> <4D7BF02D.4040707@oracle.com> <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> Message-ID: <4D7E8419.90101@oracle.com> Mike Duigou wrote: > I've gotten feedback regarding this issue and I've updated the webrev to use the commented out compare(key, key) test rather than the previously committed solution. I hadn't looked at the commented out code too carefully and had assumed it was pseudo-code rather than an actual solution. It's an improvement over the original solution and reads, to me and apparently others, a lot simpler. > > http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ > > Also now included is a jtreg unit test. > > Mike This looks much better. On the test it might be better to give it a real name, maybe Nulls or NullsAndEmptyMaps. Also looks like the bugID is missing a "4" in the comment at L42 and L69. -Alan. From mike.duigou at oracle.com Mon Mar 14 21:50:15 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Mon, 14 Mar 2011 21:50:15 +0000 Subject: hg: jdk7/tl/jdk: 7014637: Improve behavior of EnumSet Iterator.remove() Message-ID: <20110314215025.1C1FC47159@hg.openjdk.java.net> Changeset: 7d1b13126574 Author: mduigou Date: 2011-03-14 14:49 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7d1b13126574 7014637: Improve behavior of EnumSet Iterator.remove() Reviewed-by: mduigou, alanb Contributed-by: Neil Richards ! src/share/classes/java/util/JumboEnumSet.java ! src/share/classes/java/util/RegularEnumSet.java + test/java/util/EnumSet/LargeEnumIteratorRemoveResilience.java + test/java/util/EnumSet/SmallEnumIteratorRemoveResilience.java From spoole at linux.vnet.ibm.com Tue Mar 15 09:36:23 2011 From: spoole at linux.vnet.ibm.com (Steve Poole) Date: Tue, 15 Mar 2011 09:36:23 +0000 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> References: <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com> <4D7BF02D.4040707@oracle.com> <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> Message-ID: <4D7F3317.3050907@linux.vnet.ibm.com> On 14/03/11 21:02, Mike Duigou wrote: > I've gotten feedback regarding this issue and I've updated the webrev to use the commented out compare(key, key) test rather than the previously committed solution. I hadn't looked at the commented out code too carefully and had assumed it was pseudo-code rather than an actual solution. It's an improvement over the original solution and reads, to me and apparently others, a lot simpler. > Hi - can you post the feedback to the mailing list? > http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ > > Also now included is a jtreg unit test. > > Mike From alan.bateman at oracle.com Tue Mar 15 13:28:08 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Tue, 15 Mar 2011 13:28:08 +0000 Subject: hg: jdk7/tl/jdk: 7026376: (dc) DatagramChannel created without specifying protocol family fails to join IPv4 group Message-ID: <20110315132835.E63CC4717B@hg.openjdk.java.net> Changeset: 0ba980dc486e Author: alanb Date: 2011-03-15 13:15 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0ba980dc486e 7026376: (dc) DatagramChannel created without specifying protocol family fails to join IPv4 group Reviewed-by: chegar ! make/java/nio/mapfile-linux ! make/java/nio/mapfile-solaris ! src/share/classes/sun/nio/ch/DatagramChannelImpl.java ! src/share/classes/sun/nio/ch/Net.java ! src/solaris/native/sun/nio/ch/Net.c ! src/windows/native/sun/nio/ch/Net.c ! test/java/nio/channels/DatagramChannel/MulticastSendReceiveTests.java From mike.duigou at oracle.com Tue Mar 15 16:34:00 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Tue, 15 Mar 2011 09:34:00 -0700 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: <4D7F3317.3050907@linux.vnet.ibm.com> References: <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com> <4D7BF02D.4040707@oracle.com> <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com> <4D7F3317.3050907@linux.vnet.ibm.com> Message-ID: <1E0A3D33-5020-4A2F-A97C-04126EE9239B@oracle.com> On Mar 15 2011, at 02:36 , Steve Poole wrote: > On 14/03/11 21:02, Mike Duigou wrote: >> I've gotten feedback regarding this issue and I've updated the webrev to use the commented out compare(key, key) test rather than the previously committed solution. I hadn't looked at the commented out code too carefully and had assumed it was pseudo-code rather than an actual solution. It's an improvement over the original solution and reads, to me and apparently others, a lot simpler. >> > Hi - can you post the feedback to the mailing list? Hi Steve; Sorry, I can't repost them. I'd have preferred that the feedback went to the list but for whatever reasons the two respondents chose to send the feedback privately and I won't repost their private emails. (They are certainly welcome to do so if they feel it matters). Perhaps it was just a case of "Reply to Sender" vs "Reply to All". I don't know. To summarize the messages though, "Just use the commented out code for 504517. It's better than the old patch." Mike >> http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ >> >> Also now included is a jtreg unit test. >> >> Mike > From jason_mehrens at hotmail.com Tue Mar 15 17:05:28 2011 From: jason_mehrens at hotmail.com (Jason Mehrens) Date: Tue, 15 Mar 2011 12:05:28 -0500 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: <1E0A3D33-5020-4A2F-A97C-04126EE9239B@oracle.com> References: , , <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com>, <4D7BF02D.4040707@oracle.com>, <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com>, <4D7F3317.3050907@linux.vnet.ibm.com>, <1E0A3D33-5020-4A2F-A97C-04126EE9239B@oracle.com> Message-ID: Hi Steve, I was one of the people that provided feedback on Mike's patch. In my case, it was a mishap of reply to sender vs. reply to all. I don't have the original email but, the result are visible in the test case that Mike wrote. My main concern with the old patch that if you use a raw type (think legacy code) you can poison a TreeMap/TreeSet with non-null object that cannot be compared. I remembered reviewing that code back in JSR166 maintenance review. I can't take credit for it since the review section of the bug report does a great job of explaining the evolution of the correct patch. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147 Jason > Subject: Re: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] > From: mike.duigou at oracle.com > Date: Tue, 15 Mar 2011 09:34:00 -0700 > To: spoole at linux.vnet.ibm.com > CC: core-libs-dev at openjdk.java.net > > > On Mar 15 2011, at 02:36 , Steve Poole wrote: > > > On 14/03/11 21:02, Mike Duigou wrote: > >> I've gotten feedback regarding this issue and I've updated the webrev to use the commented out compare(key, key) test rather than the previously committed solution. I hadn't looked at the commented out code too carefully and had assumed it was pseudo-code rather than an actual solution. It's an improvement over the original solution and reads, to me and apparently others, a lot simpler. > >> > > Hi - can you post the feedback to the mailing list? > > Hi Steve; > > Sorry, I can't repost them. I'd have preferred that the feedback went to the list but for whatever reasons the two respondents chose to send the feedback privately and I won't repost their private emails. (They are certainly welcome to do so if they feel it matters). Perhaps it was just a case of "Reply to Sender" vs "Reply to All". I don't know. To summarize the messages though, "Just use the commented out code for 504517. It's better than the old patch." > > Mike > > >> http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ > >> > >> Also now included is a jtreg unit test. > >> > >> Mike > > > From jonathan.gibbons at oracle.com Tue Mar 15 18:06:11 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Tue, 15 Mar 2011 18:06:11 +0000 Subject: hg: jdk7/tl/langtools: 6993311: annotations on packages are not validated Message-ID: <20110315180616.C785647186@hg.openjdk.java.net> Changeset: c9432f06d9bc Author: jjg Date: 2011-03-15 11:04 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/c9432f06d9bc 6993311: annotations on packages are not validated Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java + test/tools/javac/annotations/TestAnnotationPackageInfo.java ! test/tools/javac/annotations/pos/package-info.java ! test/tools/javac/processing/filer/TestPackageInfo.java ! test/tools/javac/processing/filer/foo/bar/package-info.java From jonathan.gibbons at oracle.com Tue Mar 15 18:41:50 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Tue, 15 Mar 2011 18:41:50 +0000 Subject: hg: jdk7/tl/langtools: 6987384: -XprintProcessorRoundsInfo message printed with different timing than previous Message-ID: <20110315184152.94EE647188@hg.openjdk.java.net> Changeset: edf03ca74991 Author: jjg Date: 2011-03-15 11:41 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/edf03ca74991 6987384: -XprintProcessorRoundsInfo message printed with different timing than previous Reviewed-by: darcy ! test/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/tools/javac/processing/6430209/b6341534.java ! test/tools/javac/processing/environment/round/TestContext.java + test/tools/javac/processing/options/testPrintProcessorInfo/Test.java + test/tools/javac/processing/options/testPrintProcessorInfo/Test.out From jonathan.gibbons at oracle.com Tue Mar 15 18:50:36 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Tue, 15 Mar 2011 18:50:36 +0000 Subject: hg: jdk7/tl/langtools: 6988079: Errors reported via Messager.printMessage(ERROR, "error message") are not tallied correctly Message-ID: <20110315185038.34A3B4718A@hg.openjdk.java.net> Changeset: 0f9e5b7f0d7e Author: jjg Date: 2011-03-15 11:48 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/0f9e5b7f0d7e 6988079: Errors reported via Messager.printMessage(ERROR,"error message") are not tallied correctly Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java ! test/tools/javac/processing/6994946/SemanticErrorTest.2.out + test/tools/javac/processing/errors/TestErrorCount.java + test/tools/javac/processing/errors/TestErrorCount.out From bhavesh.patel at sun.com Tue Mar 15 21:20:16 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Tue, 15 Mar 2011 21:20:16 +0000 Subject: hg: jdk7/tl/langtools: 4743537: Help doesn't say what "All Classes" and other links really mean Message-ID: <20110315212018.E53D847198@hg.openjdk.java.net> Changeset: 480de7832e2f Author: bpatel Date: 2011-03-15 14:19 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/480de7832e2f 4743537: Help doesn't say what "All Classes" and other links really mean Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties From valerie.peng at oracle.com Wed Mar 16 02:45:30 2011 From: valerie.peng at oracle.com (valerie.peng at oracle.com) Date: Wed, 16 Mar 2011 02:45:30 +0000 Subject: hg: jdk7/tl/jdk: 7001933: Deadlock in java.lang.classloader.getPackage() Message-ID: <20110316024605.25017471AB@hg.openjdk.java.net> Changeset: 4a7da412db38 Author: valeriep Date: 2011-03-15 18:42 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4a7da412db38 7001933: Deadlock in java.lang.classloader.getPackage() Summary: Modified to not holding the "packages" lock when calling parent CL. Reviewed-by: dholmes, alanb ! src/share/classes/java/lang/ClassLoader.java From xuelei.fan at oracle.com Wed Mar 16 06:09:41 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Wed, 16 Mar 2011 06:09:41 +0000 Subject: hg: jdk7/tl/jdk: 7025073: Stricter check on trust anchor makes VerifyCACerts.java test fail Message-ID: <20110316060950.A248B471B3@hg.openjdk.java.net> Changeset: 8b7f0a3a0b2e Author: xuelei Date: 2011-03-15 23:08 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8b7f0a3a0b2e 7025073: Stricter check on trust anchor makes VerifyCACerts.java test fail Summary: loosen the check for version 1 and 2 X.509 certificate Reviewed-by: mullan, weijun ! src/share/classes/sun/security/provider/certpath/AdaptableX509CertSelector.java ! src/share/classes/sun/security/provider/certpath/ForwardBuilder.java From xuelei.fan at oracle.com Wed Mar 16 06:14:04 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Wed, 16 Mar 2011 06:14:04 +0000 Subject: hg: jdk7/tl/jdk: 7022855: Export "PKIX" as the standard algorithm name of KeyManagerFactory Message-ID: <20110316061414.2CFF3471B4@hg.openjdk.java.net> Changeset: e3efbb250c0c Author: xuelei Date: 2011-03-15 23:13 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e3efbb250c0c 7022855: Export "PKIX" as the standard algorithm name of KeyManagerFactory Summary: export the existing "NewSunX509" algorithm implementation using the standard name "PKIX" Reviewed-by: weijun, wetmore ! src/share/classes/sun/security/ssl/ClientHandshaker.java ! src/share/classes/sun/security/ssl/SunJSSE.java ! test/sun/security/ssl/javax/net/ssl/GetInstance.java From david.holmes at oracle.com Wed Mar 16 09:33:20 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Wed, 16 Mar 2011 09:33:20 +0000 Subject: hg: jdk7/tl/jdk: 56 new changesets Message-ID: <20110316094242.32B4A471C8@hg.openjdk.java.net> Changeset: eb54e565c491 Author: ohair Date: 2011-02-26 09:45 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/eb54e565c491 7016175: HTML generated from new JavaDoc has tags added from makefile Reviewed-by: jjg ! make/common/shared/Defs-javadoc.gmk ! make/docs/Makefile Changeset: 391a9ef69036 Author: ohair Date: 2011-02-26 10:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/391a9ef69036 Merge Changeset: e88c8381eaca Author: ohair Date: 2011-02-26 12:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e88c8381eaca 7022237: Fix use of \" in the new "release" file at the top of the install, windows issues Reviewed-by: ohrstrom ! make/common/Release.gmk Changeset: 123dd69407f9 Author: ohair Date: 2011-02-26 12:42 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/123dd69407f9 Merge Changeset: ed1d4691da29 Author: ohrstrom Date: 2011-02-28 10:56 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ed1d4691da29 7021753: Add a build times report Summary: Report the build times at end of a jdkroot build. Reviewed-by: ohair ! make/common/shared/Defs-utils.gmk Changeset: f32f0ae3d873 Author: ohair Date: 2011-03-02 12:09 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f32f0ae3d873 Merge Changeset: 869cba583dd4 Author: ohair Date: 2011-03-02 13:18 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/869cba583dd4 7020815: REBASE should not be required for windows jdk repo builds - can't build with VS 2010 Express Reviewed-by: prr ! make/common/shared/Defs-utils.gmk ! make/common/shared/Sanity.gmk Changeset: e5cd10425e7e Author: ohair Date: 2011-03-03 07:02 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e5cd10425e7e Merge - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java - test/java/lang/Thread/StopBeforeStart.java Changeset: c588355b5bb7 Author: ohair Date: 2011-03-03 15:30 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c588355b5bb7 Merge Changeset: 7931291bc5d3 Author: herrick Date: 2011-03-01 17:09 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7931291bc5d3 7021567: need to create jnlp javadoc for 64 bit bundles. Summary: need to create jnlp javadoc for 64 bit bundles. Reviewed-by: igor, ohair ! make/common/Release.gmk Changeset: c53711f82bfb Author: igor Date: 2011-03-08 14:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c53711f82bfb Merge - test/java/lang/Thread/StopBeforeStart.java Changeset: 5e5f68a01d12 Author: ohair Date: 2011-03-08 16:05 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5e5f68a01d12 Merge ! make/common/Release.gmk Changeset: 6aeed99af874 Author: mchung Date: 2011-03-09 23:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/6aeed99af874 7025631: Remove the modules build support from jdk 7 Reviewed-by: alanb, ohair ! make/Makefile ! make/com/sun/crypto/provider/Makefile ! make/com/sun/java/pack/Makefile ! make/com/sun/java/pack/prop/Makefile ! make/com/sun/jndi/cosnaming/Makefile ! make/com/sun/jndi/dns/Makefile ! make/com/sun/jndi/ldap/Makefile ! make/com/sun/jndi/rmi/registry/Makefile ! make/com/sun/nio/sctp/Makefile ! make/com/sun/org/apache/xml/Makefile ! make/com/sun/rowset/Makefile ! make/com/sun/script/Makefile ! make/com/sun/security/auth/module/Makefile ! make/com/sun/servicetag/Makefile ! make/com/sun/tools/attach/Makefile ! make/common/Defs.gmk ! make/common/Demo.gmk ! make/common/Library.gmk ! make/common/Program.gmk ! make/common/Release.gmk ! make/common/Sanity.gmk ! make/common/Subdirs.gmk ! make/common/shared/Sanity.gmk ! make/java/awt/Makefile ! make/java/fdlibm/Makefile ! make/java/instrument/Makefile ! make/java/java/Makefile ! make/java/java_crw_demo/Makefile ! make/java/java_hprof_demo/Makefile ! make/java/jli/Makefile ! make/java/jvm/Makefile ! make/java/logging/Makefile ! make/java/main/java/Makefile ! make/java/main/javaw/Makefile ! make/java/management/Makefile ! make/java/net/Makefile ! make/java/nio/Makefile ! make/java/npt/Makefile ! make/java/redist/Makefile ! make/java/redist/fonts/Makefile ! make/java/redist/sajdi/Makefile ! make/java/security/Makefile ! make/java/sql/Makefile ! make/java/text/base/Makefile ! make/java/verify/Makefile ! make/java/zip/Makefile ! make/javax/crypto/Makefile ! make/javax/imageio/Makefile ! make/javax/print/Makefile ! make/javax/sound/Makefile ! make/javax/sound/jsoundalsa/Makefile ! make/javax/sound/jsoundds/Makefile ! make/javax/sql/Makefile ! make/javax/swing/Makefile ! make/javax/swing/plaf/Makefile ! make/jpda/back/Makefile ! make/jpda/transport/Makefile ! make/jpda/transport/shmem/Makefile ! make/jpda/transport/socket/Makefile ! make/jpda/tty/Makefile ! make/launchers/Makefile ! make/mkdemo/jvmti/Makefile ! make/mkdemo/management/Makefile ! make/mksample/dtrace/Makefile ! make/mksample/jmx/jmx-scandir/Makefile ! make/mksample/nbproject/Makefile ! make/mksample/nio/file/Makefile ! make/mksample/nio/multicast/Makefile ! make/mksample/nio/server/Makefile ! make/mksample/scripting/scriptpad/Makefile ! make/mksample/webservices/EbayClient/Makefile ! make/mksample/webservices/EbayServer/Makefile ! make/sun/applet/Makefile ! make/sun/awt/Makefile ! make/sun/cmm/Makefile ! make/sun/cmm/kcms/Makefile ! make/sun/cmm/lcms/Makefile ! make/sun/dcpr/Makefile ! make/sun/font/Makefile ! make/sun/font/t2k/Makefile ! make/sun/headless/Makefile ! make/sun/image/generic/Makefile ! make/sun/image/vis/Makefile ! make/sun/jar/Makefile ! make/sun/javazic/Makefile ! make/sun/jawt/Makefile ! make/sun/jconsole/Makefile ! make/sun/jdbc/Makefile ! make/sun/jdga/Makefile ! make/sun/jpeg/Makefile ! make/sun/launcher/Makefile ! make/sun/management/Makefile ! make/sun/native2ascii/Makefile ! make/sun/net/others/Makefile ! make/sun/net/spi/nameservice/dns/Makefile ! make/sun/nio/cs/Makefile ! make/sun/org/mozilla/javascript/Makefile ! make/sun/pisces/Makefile ! make/sun/rmi/cgi/Makefile ! make/sun/rmi/oldtools/Makefile ! make/sun/rmi/registry/Makefile ! make/sun/rmi/rmi/Makefile ! make/sun/rmi/rmic/Makefile ! make/sun/rmi/rmid/Makefile ! make/sun/security/ec/Makefile ! make/sun/security/jgss/wrapper/Makefile ! make/sun/security/krb5/Makefile ! make/sun/security/mscapi/Makefile ! make/sun/security/pkcs11/Makefile ! make/sun/security/smartcardio/Makefile ! make/sun/security/tools/Makefile ! make/sun/serialver/Makefile ! make/sun/splashscreen/Makefile ! make/sun/text/Makefile ! make/sun/tools/Makefile ! make/sun/tracing/dtrace/Makefile ! make/sun/xawt/Makefile Changeset: 1657b854c956 Author: mchung Date: 2011-03-09 23:59 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1657b854c956 7026228: Remove make/modules and make/common/Modules.gmk Reviewed-by: alanb, ohair - make/common/Modules.gmk - make/java/nio/mxbean/Makefile - make/modules/Makefile - make/modules/bootmodule.roots - make/modules/jdk7.depconfig - make/modules/modules.config - make/modules/modules.group - make/modules/optional.depconfig - make/modules/tools/Makefile - make/modules/tools/build.xml - make/modules/tools/nbproject/project.properties - make/modules/tools/nbproject/project.xml - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java - make/modules/tools/src/com/sun/classanalyzer/Klass.java - make/modules/tools/src/com/sun/classanalyzer/Module.java - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java Changeset: c28f5ac2d5f8 Author: ohair Date: 2011-03-10 14:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c28f5ac2d5f8 7025412: make381 issues with quotes in jdk/make/docs/Makefile and other places Reviewed-by: mchung, herrick ! make/common/shared/Defs-javadoc.gmk ! make/common/shared/Sanity.gmk ! make/docs/Makefile ! make/javax/crypto/Defs-jce.gmk Changeset: 38be400c2608 Author: asaha Date: 2011-03-09 16:44 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/38be400c2608 6908562: JFB Custom Revision Version Build/Makefile changes Reviewed-by: ohair, ksrini, katleman ! make/common/Release.gmk ! make/common/shared/Defs.gmk Changeset: fc680f496eaf Author: asaha Date: 2011-03-14 12:01 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fc680f496eaf Merge - make/common/Modules.gmk ! make/common/Release.gmk - make/java/nio/mxbean/Makefile - make/modules/Makefile - make/modules/bootmodule.roots - make/modules/jdk7.depconfig - make/modules/modules.config - make/modules/modules.group - make/modules/optional.depconfig - make/modules/tools/Makefile - make/modules/tools/build.xml - make/modules/tools/nbproject/project.properties - make/modules/tools/nbproject/project.xml - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java - make/modules/tools/src/com/sun/classanalyzer/Klass.java - make/modules/tools/src/com/sun/classanalyzer/Module.java - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java Changeset: e947a98ea3c1 Author: cl Date: 2011-03-10 17:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e947a98ea3c1 Added tag jdk7-b133 for changeset 5e5f68a01d12 ! .hgtags Changeset: 864b669d54d8 Author: lana Date: 2011-02-21 19:43 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/864b669d54d8 Merge - make/sun/jkernel/FILES_c_windows.gmk - make/sun/jkernel/FILES_java.gmk - make/sun/jkernel/Makefile - src/share/classes/java/io/TempFileHelper.java - src/share/classes/java/nio/file/FileRef.java - src/share/classes/java/nio/file/attribute/Attributes.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java - src/share/classes/sun/jkernel/BackgroundDownloader.java - src/share/classes/sun/jkernel/Bundle.java - src/share/classes/sun/jkernel/BundleCheck.java - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java - src/share/classes/sun/jkernel/DigestOutputStream.java - src/share/classes/sun/jkernel/DownloadManager.java - src/share/classes/sun/jkernel/KernelError.java - src/share/classes/sun/jkernel/Mutex.java - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java - src/share/classes/sun/jkernel/StandaloneMessageDigest.java - src/share/classes/sun/jkernel/StandaloneSHA.java - src/share/demo/zipfs - src/windows/native/sun/jkernel/DownloadDialog.cpp - src/windows/native/sun/jkernel/DownloadDialog.h - src/windows/native/sun/jkernel/DownloadHelper.cpp - src/windows/native/sun/jkernel/DownloadHelper.h - src/windows/native/sun/jkernel/graphics/bullet.bmp - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp - src/windows/native/sun/jkernel/graphics/java-icon.ico - src/windows/native/sun/jkernel/graphics/masthead.bmp - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp - src/windows/native/sun/jkernel/kernel.cpp - src/windows/native/sun/jkernel/kernel.def - src/windows/native/sun/jkernel/kernel.h - src/windows/native/sun/jkernel/kernel.rc - src/windows/native/sun/jkernel/kernel_de.rc - src/windows/native/sun/jkernel/kernel_en.rc - src/windows/native/sun/jkernel/kernel_es.rc - src/windows/native/sun/jkernel/kernel_fr.rc - src/windows/native/sun/jkernel/kernel_it.rc - src/windows/native/sun/jkernel/kernel_ja.rc - src/windows/native/sun/jkernel/kernel_ko.rc - src/windows/native/sun/jkernel/kernel_pt_BR.rc - src/windows/native/sun/jkernel/kernel_sv.rc - src/windows/native/sun/jkernel/kernel_zh.rc - src/windows/native/sun/jkernel/kernel_zh_TW.rc - src/windows/native/sun/jkernel/resource.h - src/windows/native/sun/jkernel/stdafx.cpp - src/windows/native/sun/jkernel/stdafx.h - src/windows/native/sun/jkernel/version.rc - test/java/nio/file/Files/ContentType.java - test/java/nio/file/Files/CreateFileTree.java - test/java/nio/file/Files/ForceLoad.java - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector - test/java/nio/file/Files/MaxDepth.java - test/java/nio/file/Files/PrintFileTree.java - test/java/nio/file/Files/SimpleFileTypeDetector.java - test/java/nio/file/Files/SkipSiblings.java - test/java/nio/file/Files/TerminateWalk.java - test/java/nio/file/Files/WalkWithSecurity.java - test/java/nio/file/Files/denyAll.policy - test/java/nio/file/Files/grantAll.policy - test/java/nio/file/Files/grantTopOnly.policy - test/java/nio/file/Files/walk_file_tree.sh - test/java/nio/file/Path/CheckPermissions.java - test/java/nio/file/Path/CopyAndMove.java - test/java/nio/file/Path/DeleteOnClose.java - test/java/nio/file/Path/FileAttributes.java - test/java/nio/file/Path/InterruptCopy.java - test/java/nio/file/Path/Links.java - test/java/nio/file/Path/PassThroughFileSystem.java - test/java/nio/file/Path/SBC.java - test/java/nio/file/Path/TemporaryFiles.java - test/java/nio/file/Path/delete_on_close.sh - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java Changeset: 196d6e802721 Author: prr Date: 2011-02-28 10:25 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/196d6e802721 7004728: [parfait] potential memory leaks in XRender code Reviewed-by: bae, ceisserer ! src/solaris/native/sun/java2d/x11/XRBackendNative.c Changeset: bbbf427a9007 Author: ceisserer Date: 2011-03-01 14:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/bbbf427a9007 6974985: Jave2Demo threw exceptions when xrender enabled in OEL5.5 Reviewed-by: prr ! make/sun/awt/mapfile-mawt-vers ! make/sun/xawt/mapfile-vers ! src/solaris/classes/sun/java2d/xr/XRSurfaceData.java ! src/solaris/native/sun/java2d/x11/X11SurfaceData.c ! src/solaris/native/sun/java2d/x11/XRSurfaceData.c Changeset: 01dcb496946e Author: ceisserer Date: 2011-03-03 16:06 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/01dcb496946e 7023589: Xrender : NullPointerException in sun.font.XRGlyphCache.freeGlyphs running Java 2D demo Reviewed-by: prr ! src/share/classes/sun/font/StrikeCache.java ! src/solaris/classes/sun/font/XRGlyphCache.java Changeset: f82f0af7de5b Author: prr Date: 2011-03-04 15:54 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f82f0af7de5b 7023591: Xrender: java2D font demo - text highlighting tab content is black Reviewed-by: flar ! src/share/classes/sun/java2d/pipe/AAShapePipe.java Changeset: 1356371db8c9 Author: lana Date: 2011-03-06 23:37 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1356371db8c9 Merge - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java - test/java/lang/Thread/StopBeforeStart.java Changeset: df0de56682b7 Author: dcherepanov Date: 2011-02-24 13:01 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/df0de56682b7 6996708: The event on the tray icon does not trigger and there is no message printed. Reviewed-by: art, ant ! src/windows/native/sun/windows/awt_TrayIcon.cpp Changeset: 75d8c1200df8 Author: dcherepanov Date: 2011-02-25 13:58 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/75d8c1200df8 7020522: Need to reapply the fix for 6664512 Reviewed-by: art, mchung ! src/share/classes/sun/util/logging/PlatformLogger.java Changeset: c27520009762 Author: dcherepanov Date: 2011-02-25 15:33 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c27520009762 7009114: GTK FileDialog lies about it's Bounds Reviewed-by: art, anthony ! make/sun/xawt/mapfile-vers ! src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java ! src/solaris/native/sun/awt/gtk2_interface.c ! src/solaris/native/sun/awt/gtk2_interface.h ! src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c ! src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.h Changeset: de0f2f8563eb Author: lana Date: 2011-02-26 23:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/de0f2f8563eb Merge - make/sun/jkernel/FILES_c_windows.gmk - make/sun/jkernel/FILES_java.gmk - make/sun/jkernel/Makefile - src/share/classes/java/io/TempFileHelper.java - src/share/classes/java/nio/file/FileRef.java - src/share/classes/java/nio/file/attribute/Attributes.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java - src/share/classes/sun/jkernel/BackgroundDownloader.java - src/share/classes/sun/jkernel/Bundle.java - src/share/classes/sun/jkernel/BundleCheck.java - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java - src/share/classes/sun/jkernel/DigestOutputStream.java - src/share/classes/sun/jkernel/DownloadManager.java - src/share/classes/sun/jkernel/KernelError.java - src/share/classes/sun/jkernel/Mutex.java - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java - src/share/classes/sun/jkernel/StandaloneMessageDigest.java - src/share/classes/sun/jkernel/StandaloneSHA.java - src/share/demo/zipfs - src/windows/native/sun/jkernel/DownloadDialog.cpp - src/windows/native/sun/jkernel/DownloadDialog.h - src/windows/native/sun/jkernel/DownloadHelper.cpp - src/windows/native/sun/jkernel/DownloadHelper.h - src/windows/native/sun/jkernel/graphics/bullet.bmp - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp - src/windows/native/sun/jkernel/graphics/java-icon.ico - src/windows/native/sun/jkernel/graphics/masthead.bmp - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp - src/windows/native/sun/jkernel/kernel.cpp - src/windows/native/sun/jkernel/kernel.def - src/windows/native/sun/jkernel/kernel.h - src/windows/native/sun/jkernel/kernel.rc - src/windows/native/sun/jkernel/kernel_de.rc - src/windows/native/sun/jkernel/kernel_en.rc - src/windows/native/sun/jkernel/kernel_es.rc - src/windows/native/sun/jkernel/kernel_fr.rc - src/windows/native/sun/jkernel/kernel_it.rc - src/windows/native/sun/jkernel/kernel_ja.rc - src/windows/native/sun/jkernel/kernel_ko.rc - src/windows/native/sun/jkernel/kernel_pt_BR.rc - src/windows/native/sun/jkernel/kernel_sv.rc - src/windows/native/sun/jkernel/kernel_zh.rc - src/windows/native/sun/jkernel/kernel_zh_TW.rc - src/windows/native/sun/jkernel/resource.h - src/windows/native/sun/jkernel/stdafx.cpp - src/windows/native/sun/jkernel/stdafx.h - src/windows/native/sun/jkernel/version.rc - test/java/nio/file/Files/ContentType.java - test/java/nio/file/Files/CreateFileTree.java - test/java/nio/file/Files/ForceLoad.java - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector - test/java/nio/file/Files/MaxDepth.java - test/java/nio/file/Files/PrintFileTree.java - test/java/nio/file/Files/SimpleFileTypeDetector.java - test/java/nio/file/Files/SkipSiblings.java - test/java/nio/file/Files/TerminateWalk.java - test/java/nio/file/Files/WalkWithSecurity.java - test/java/nio/file/Files/denyAll.policy - test/java/nio/file/Files/grantAll.policy - test/java/nio/file/Files/grantTopOnly.policy - test/java/nio/file/Files/walk_file_tree.sh - test/java/nio/file/Path/CheckPermissions.java - test/java/nio/file/Path/CopyAndMove.java - test/java/nio/file/Path/DeleteOnClose.java - test/java/nio/file/Path/FileAttributes.java - test/java/nio/file/Path/InterruptCopy.java - test/java/nio/file/Path/Links.java - test/java/nio/file/Path/PassThroughFileSystem.java - test/java/nio/file/Path/SBC.java - test/java/nio/file/Path/TemporaryFiles.java - test/java/nio/file/Path/delete_on_close.sh - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java Changeset: 024d040af4a3 Author: anthony Date: 2011-03-01 13:49 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/024d040af4a3 7022488: The security warning may disappear unexpectedly Summary: Initialize the fullScreenExclusiveModeState flag in the AwtWindow constructor Reviewed-by: art, dcherepanov ! src/windows/native/sun/windows/awt_Window.cpp Changeset: b5e609488bc8 Author: dcherepanov Date: 2011-03-01 15:24 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b5e609488bc8 6826397: PIT : Frame System Menu is not seen for when ALT + Space Bar is pressed in jdk7 b55 build. Reviewed-by: art, ant ! src/windows/native/sun/windows/awt_Frame.cpp ! src/windows/native/sun/windows/awt_Frame.h Changeset: 8cd20d3e5448 Author: lana Date: 2011-03-06 20:32 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8cd20d3e5448 Merge - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java - test/java/lang/Thread/StopBeforeStart.java Changeset: 333bd91466bd Author: lana Date: 2011-03-07 14:44 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/333bd91466bd Merge ! make/sun/xawt/mapfile-vers Changeset: f8fdf9bca159 Author: okutsu Date: 2011-02-22 14:51 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f8fdf9bca159 7010379: fontconfig update for RHEL 6 Reviewed-by: peytoia ! make/sun/awt/Makefile Changeset: 5957bd3cfdc3 Author: okutsu Date: 2011-02-23 14:09 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5957bd3cfdc3 6623219: Font.canDisplayUpTo does not work with supplementary characters Reviewed-by: prr, peytoia ! src/share/classes/java/awt/Font.java + test/java/awt/FontClass/SurrogateTest/SupplementaryCanDisplayUpToTest.java Changeset: 30d112b3b6f2 Author: okutsu Date: 2011-02-23 16:50 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/30d112b3b6f2 6955047: (tz) javadoc for TimeZone.getDisplayName(boolean daylight, int style, Locale locale) is not clear 7021680: (tz) daylight savings time should be daylight saving time Reviewed-by: peytoia ! src/share/classes/java/util/Calendar.java ! src/share/classes/java/util/GregorianCalendar.java ! src/share/classes/java/util/TimeZone.java Changeset: ff611d9474cb Author: okutsu Date: 2011-02-24 15:09 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ff611d9474cb 7021989: Missing observesDaylightTime override in ZoneInfo Reviewed-by: peytoia ! src/share/classes/sun/util/calendar/ZoneInfo.java Changeset: 01c752a48b51 Author: okutsu Date: 2011-02-24 16:29 +0900 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/01c752a48b51 6772689: java.sql.Date.valueOf("2042-10-xx").toString() wrong in some time zones Reviewed-by: peytoia ! src/share/classes/sun/util/calendar/ZoneInfo.java + test/java/util/TimeZone/Bug6772689.java Changeset: e390ce4509c6 Author: alexp Date: 2011-02-28 18:20 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e390ce4509c6 6826074: JScrollPane does not revalidate the component hierarchy after scrolling Reviewed-by: anthony ! src/share/classes/javax/swing/DefaultDesktopManager.java ! src/share/classes/javax/swing/JViewport.java Changeset: 1ef5b85d41f2 Author: amenkov Date: 2011-02-28 18:36 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1ef5b85d41f2 7013521: AudioSystem.write for AIFF files closes source audio stream Reviewed-by: dav ! src/share/classes/com/sun/media/sound/AiffFileWriter.java ! src/share/classes/com/sun/media/sound/AuFileWriter.java ! src/share/classes/com/sun/media/sound/SunFileWriter.java ! src/share/classes/com/sun/media/sound/WaveFileWriter.java + test/javax/sound/sampled/FileWriter/WriterCloseInput.java Changeset: d4e3c1f2177a Author: amenkov Date: 2011-03-03 15:41 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d4e3c1f2177a 6938426: Concurrency bug in ALAW encoder causes random bursts of static/noise in output. Reviewed-by: stayer ! src/share/classes/com/sun/media/sound/AlawCodec.java + test/javax/sound/sampled/FileWriter/AlawEncoderSync.java Changeset: d3df100509ad Author: amenkov Date: 2011-03-03 15:45 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d3df100509ad 6801206: SoundTestSuite: test050 fails Reviewed-by: stayer ! src/share/classes/com/sun/media/sound/DirectAudioDevice.java + test/javax/sound/sampled/Clip/ClipSetPos.java Changeset: 4e732aba71bf Author: amenkov Date: 2011-03-03 15:57 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4e732aba71bf 6660470: RealTimeSequencer incorrectly opens (implicitly) synthesizer Reviewed-by: stayer ! src/share/classes/com/sun/media/sound/RealTimeSequencer.java ! src/share/classes/javax/sound/midi/MidiSystem.java + test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java Changeset: 67d4b2e2e5b1 Author: amenkov Date: 2011-03-03 16:40 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/67d4b2e2e5b1 6835393: MidiSystem fails to correctly read Sequence with SMPTE division Reviewed-by: stayer ! src/share/classes/com/sun/media/sound/StandardMidiFileReader.java + test/javax/sound/midi/File/SMPTESequence.java Changeset: 52bdb4237d5e Author: rupashka Date: 2011-03-03 17:47 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/52bdb4237d5e 6796710: Html content in JEditorPane is overlapping on swing components while resizing the application. Reviewed-by: alexp ! src/share/classes/javax/swing/text/html/CSSBorder.java + test/javax/swing/regtesthelpers/Util.java + test/javax/swing/text/CSSBorder/6796710/bug6796710.java Changeset: 7dfcf271b73b Author: alexp Date: 2011-03-03 18:23 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7dfcf271b73b 6653511: JComponent.safelyGetGraphics() may sometimes return null Reviewed-by: rupashka ! src/share/classes/javax/swing/JComponent.java Changeset: e4ca9353150a Author: alexp Date: 2011-03-03 18:27 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e4ca9353150a Merge Changeset: dc34da6a3fa1 Author: rupashka Date: 2011-03-05 18:27 +0300 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/dc34da6a3fa1 6760148: Certain fonts are not correctly soft wrapped when using JTextComponent.print() Reviewed-by: peterz ! src/share/classes/javax/swing/text/Utilities.java ! src/share/classes/javax/swing/text/WrappedPlainView.java Changeset: ca0f223b4be7 Author: lana Date: 2011-03-05 20:54 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ca0f223b4be7 Merge - make/sun/jkernel/FILES_c_windows.gmk - make/sun/jkernel/FILES_java.gmk - make/sun/jkernel/Makefile - src/share/classes/java/dyn/NoAccessException.java - src/share/classes/java/dyn/Switcher.java - src/share/classes/java/io/TempFileHelper.java - src/share/classes/java/nio/file/FileRef.java - src/share/classes/java/nio/file/attribute/Attributes.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java ! src/share/classes/javax/swing/JComponent.java - src/share/classes/sun/jkernel/BackgroundDownloader.java - src/share/classes/sun/jkernel/Bundle.java - src/share/classes/sun/jkernel/BundleCheck.java - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java - src/share/classes/sun/jkernel/DigestOutputStream.java - src/share/classes/sun/jkernel/DownloadManager.java - src/share/classes/sun/jkernel/KernelError.java - src/share/classes/sun/jkernel/Mutex.java - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java - src/share/classes/sun/jkernel/StandaloneMessageDigest.java - src/share/classes/sun/jkernel/StandaloneSHA.java - src/share/demo/zipfs - src/windows/native/sun/jkernel/DownloadDialog.cpp - src/windows/native/sun/jkernel/DownloadDialog.h - src/windows/native/sun/jkernel/DownloadHelper.cpp - src/windows/native/sun/jkernel/DownloadHelper.h - src/windows/native/sun/jkernel/graphics/bullet.bmp - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp - src/windows/native/sun/jkernel/graphics/java-icon.ico - src/windows/native/sun/jkernel/graphics/masthead.bmp - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp - src/windows/native/sun/jkernel/kernel.cpp - src/windows/native/sun/jkernel/kernel.def - src/windows/native/sun/jkernel/kernel.h - src/windows/native/sun/jkernel/kernel.rc - src/windows/native/sun/jkernel/kernel_de.rc - src/windows/native/sun/jkernel/kernel_en.rc - src/windows/native/sun/jkernel/kernel_es.rc - src/windows/native/sun/jkernel/kernel_fr.rc - src/windows/native/sun/jkernel/kernel_it.rc - src/windows/native/sun/jkernel/kernel_ja.rc - src/windows/native/sun/jkernel/kernel_ko.rc - src/windows/native/sun/jkernel/kernel_pt_BR.rc - src/windows/native/sun/jkernel/kernel_sv.rc - src/windows/native/sun/jkernel/kernel_zh.rc - src/windows/native/sun/jkernel/kernel_zh_TW.rc - src/windows/native/sun/jkernel/resource.h - src/windows/native/sun/jkernel/stdafx.cpp - src/windows/native/sun/jkernel/stdafx.h - src/windows/native/sun/jkernel/version.rc - test/java/lang/Thread/StopBeforeStart.java - test/java/nio/file/Files/ContentType.java - test/java/nio/file/Files/CreateFileTree.java - test/java/nio/file/Files/ForceLoad.java - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector - test/java/nio/file/Files/MaxDepth.java - test/java/nio/file/Files/PrintFileTree.java - test/java/nio/file/Files/SimpleFileTypeDetector.java - test/java/nio/file/Files/SkipSiblings.java - test/java/nio/file/Files/TerminateWalk.java - test/java/nio/file/Files/WalkWithSecurity.java - test/java/nio/file/Files/denyAll.policy - test/java/nio/file/Files/grantAll.policy - test/java/nio/file/Files/grantTopOnly.policy - test/java/nio/file/Files/walk_file_tree.sh - test/java/nio/file/Path/CheckPermissions.java - test/java/nio/file/Path/CopyAndMove.java - test/java/nio/file/Path/DeleteOnClose.java - test/java/nio/file/Path/FileAttributes.java - test/java/nio/file/Path/InterruptCopy.java - test/java/nio/file/Path/Links.java - test/java/nio/file/Path/PassThroughFileSystem.java - test/java/nio/file/Path/SBC.java - test/java/nio/file/Path/TemporaryFiles.java - test/java/nio/file/Path/delete_on_close.sh - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java Changeset: e3a69b9be2b5 Author: lana Date: 2011-03-07 14:46 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e3a69b9be2b5 Merge Changeset: 0b6d82c838d4 Author: lana Date: 2011-03-07 14:48 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0b6d82c838d4 Merge - src/share/classes/sun/misc/BootClassLoaderHook.java - src/share/classes/sun/misc/JavaSecurityCodeSignerAccess.java - test/sun/misc/BootClassLoaderHook/TestHook.java Changeset: c0bf0f19897a Author: lana Date: 2011-03-10 19:38 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c0bf0f19897a Merge Changeset: c975c4fbca20 Author: lana Date: 2011-03-10 20:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c975c4fbca20 Merge ! make/common/Release.gmk - src/share/classes/sun/misc/BootClassLoaderHook.java - src/share/classes/sun/misc/JavaSecurityCodeSignerAccess.java - test/sun/misc/BootClassLoaderHook/TestHook.java Changeset: b1215d1f015b Author: ohair Date: 2011-03-15 15:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b1215d1f015b Merge - make/common/Modules.gmk ! make/common/Release.gmk - make/java/nio/mxbean/Makefile - make/modules/Makefile - make/modules/bootmodule.roots - make/modules/jdk7.depconfig - make/modules/modules.config - make/modules/modules.group - make/modules/optional.depconfig - make/modules/tools/Makefile - make/modules/tools/build.xml - make/modules/tools/nbproject/project.properties - make/modules/tools/nbproject/project.xml - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java - make/modules/tools/src/com/sun/classanalyzer/Klass.java - make/modules/tools/src/com/sun/classanalyzer/Module.java - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java ! make/sun/awt/Makefile Changeset: f82a1434bf63 Author: dholmes Date: 2011-03-15 19:52 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f82a1434bf63 7027897: Build support for client-VM only configurations Summary: Support builds for which only the client VM is required and/or available Reviewed-by: ohair, andrew ! make/common/Defs.gmk ! make/common/shared/Sanity.gmk ! make/java/jvm/Makefile ! make/java/redist/Makefile Changeset: d7034302bc24 Author: dholmes Date: 2011-03-15 20:00 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d7034302bc24 Merge ! make/common/Defs.gmk - make/common/Modules.gmk ! make/common/shared/Sanity.gmk ! make/java/jli/Makefile ! make/java/jvm/Makefile - make/java/nio/mxbean/Makefile ! make/java/redist/Makefile - make/modules/Makefile - make/modules/bootmodule.roots - make/modules/jdk7.depconfig - make/modules/modules.config - make/modules/modules.group - make/modules/optional.depconfig - make/modules/tools/Makefile - make/modules/tools/build.xml - make/modules/tools/nbproject/project.properties - make/modules/tools/nbproject/project.xml - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java - make/modules/tools/src/com/sun/classanalyzer/Klass.java - make/modules/tools/src/com/sun/classanalyzer/Module.java - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java Changeset: 3a22998bc3c7 Author: dholmes Date: 2011-03-16 05:29 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3a22998bc3c7 Merge From David.Holmes at oracle.com Wed Mar 16 09:47:21 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 16 Mar 2011 19:47:21 +1000 Subject: hg: jdk7/tl/jdk: 56 new changesets In-Reply-To: <20110316094242.32B4A471C8@hg.openjdk.java.net> References: <20110316094242.32B4A471C8@hg.openjdk.java.net> Message-ID: <4D808729.3090704@oracle.com> Just a heads up that this changeset includes a pre-integration with changes from jdk7/build/jdk. Those changes needed to be merged with my changset so that the integrators wouldn't have to handle a larger merge down the track. The changes would have been pulled down later this week. David david.holmes at oracle.com said the following on 03/16/11 19:33: > Changeset: eb54e565c491 > Author: ohair > Date: 2011-02-26 09:45 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/eb54e565c491 > > 7016175: HTML generated from new JavaDoc has tags added from makefile > Reviewed-by: jjg > > ! make/common/shared/Defs-javadoc.gmk > ! make/docs/Makefile > > Changeset: 391a9ef69036 > Author: ohair > Date: 2011-02-26 10:12 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/391a9ef69036 > > Merge > > > Changeset: e88c8381eaca > Author: ohair > Date: 2011-02-26 12:11 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e88c8381eaca > > 7022237: Fix use of \" in the new "release" file at the top of the install, windows issues > Reviewed-by: ohrstrom > > ! make/common/Release.gmk > > Changeset: 123dd69407f9 > Author: ohair > Date: 2011-02-26 12:42 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/123dd69407f9 > > Merge > > > Changeset: ed1d4691da29 > Author: ohrstrom > Date: 2011-02-28 10:56 +0100 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ed1d4691da29 > > 7021753: Add a build times report > Summary: Report the build times at end of a jdkroot build. > Reviewed-by: ohair > > ! make/common/shared/Defs-utils.gmk > > Changeset: f32f0ae3d873 > Author: ohair > Date: 2011-03-02 12:09 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f32f0ae3d873 > > Merge > > > Changeset: 869cba583dd4 > Author: ohair > Date: 2011-03-02 13:18 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/869cba583dd4 > > 7020815: REBASE should not be required for windows jdk repo builds - can't build with VS 2010 Express > Reviewed-by: prr > > ! make/common/shared/Defs-utils.gmk > ! make/common/shared/Sanity.gmk > > Changeset: e5cd10425e7e > Author: ohair > Date: 2011-03-03 07:02 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e5cd10425e7e > > Merge > > - src/share/classes/java/dyn/NoAccessException.java > - src/share/classes/java/dyn/Switcher.java > - test/java/lang/Thread/StopBeforeStart.java > > Changeset: c588355b5bb7 > Author: ohair > Date: 2011-03-03 15:30 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c588355b5bb7 > > Merge > > > Changeset: 7931291bc5d3 > Author: herrick > Date: 2011-03-01 17:09 -0500 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7931291bc5d3 > > 7021567: need to create jnlp javadoc for 64 bit bundles. > Summary: need to create jnlp javadoc for 64 bit bundles. > Reviewed-by: igor, ohair > > ! make/common/Release.gmk > > Changeset: c53711f82bfb > Author: igor > Date: 2011-03-08 14:26 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c53711f82bfb > > Merge > > - test/java/lang/Thread/StopBeforeStart.java > > Changeset: 5e5f68a01d12 > Author: ohair > Date: 2011-03-08 16:05 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5e5f68a01d12 > > Merge > > ! make/common/Release.gmk > > Changeset: 6aeed99af874 > Author: mchung > Date: 2011-03-09 23:11 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/6aeed99af874 > > 7025631: Remove the modules build support from jdk 7 > Reviewed-by: alanb, ohair > > ! make/Makefile > ! make/com/sun/crypto/provider/Makefile > ! make/com/sun/java/pack/Makefile > ! make/com/sun/java/pack/prop/Makefile > ! make/com/sun/jndi/cosnaming/Makefile > ! make/com/sun/jndi/dns/Makefile > ! make/com/sun/jndi/ldap/Makefile > ! make/com/sun/jndi/rmi/registry/Makefile > ! make/com/sun/nio/sctp/Makefile > ! make/com/sun/org/apache/xml/Makefile > ! make/com/sun/rowset/Makefile > ! make/com/sun/script/Makefile > ! make/com/sun/security/auth/module/Makefile > ! make/com/sun/servicetag/Makefile > ! make/com/sun/tools/attach/Makefile > ! make/common/Defs.gmk > ! make/common/Demo.gmk > ! make/common/Library.gmk > ! make/common/Program.gmk > ! make/common/Release.gmk > ! make/common/Sanity.gmk > ! make/common/Subdirs.gmk > ! make/common/shared/Sanity.gmk > ! make/java/awt/Makefile > ! make/java/fdlibm/Makefile > ! make/java/instrument/Makefile > ! make/java/java/Makefile > ! make/java/java_crw_demo/Makefile > ! make/java/java_hprof_demo/Makefile > ! make/java/jli/Makefile > ! make/java/jvm/Makefile > ! make/java/logging/Makefile > ! make/java/main/java/Makefile > ! make/java/main/javaw/Makefile > ! make/java/management/Makefile > ! make/java/net/Makefile > ! make/java/nio/Makefile > ! make/java/npt/Makefile > ! make/java/redist/Makefile > ! make/java/redist/fonts/Makefile > ! make/java/redist/sajdi/Makefile > ! make/java/security/Makefile > ! make/java/sql/Makefile > ! make/java/text/base/Makefile > ! make/java/verify/Makefile > ! make/java/zip/Makefile > ! make/javax/crypto/Makefile > ! make/javax/imageio/Makefile > ! make/javax/print/Makefile > ! make/javax/sound/Makefile > ! make/javax/sound/jsoundalsa/Makefile > ! make/javax/sound/jsoundds/Makefile > ! make/javax/sql/Makefile > ! make/javax/swing/Makefile > ! make/javax/swing/plaf/Makefile > ! make/jpda/back/Makefile > ! make/jpda/transport/Makefile > ! make/jpda/transport/shmem/Makefile > ! make/jpda/transport/socket/Makefile > ! make/jpda/tty/Makefile > ! make/launchers/Makefile > ! make/mkdemo/jvmti/Makefile > ! make/mkdemo/management/Makefile > ! make/mksample/dtrace/Makefile > ! make/mksample/jmx/jmx-scandir/Makefile > ! make/mksample/nbproject/Makefile > ! make/mksample/nio/file/Makefile > ! make/mksample/nio/multicast/Makefile > ! make/mksample/nio/server/Makefile > ! make/mksample/scripting/scriptpad/Makefile > ! make/mksample/webservices/EbayClient/Makefile > ! make/mksample/webservices/EbayServer/Makefile > ! make/sun/applet/Makefile > ! make/sun/awt/Makefile > ! make/sun/cmm/Makefile > ! make/sun/cmm/kcms/Makefile > ! make/sun/cmm/lcms/Makefile > ! make/sun/dcpr/Makefile > ! make/sun/font/Makefile > ! make/sun/font/t2k/Makefile > ! make/sun/headless/Makefile > ! make/sun/image/generic/Makefile > ! make/sun/image/vis/Makefile > ! make/sun/jar/Makefile > ! make/sun/javazic/Makefile > ! make/sun/jawt/Makefile > ! make/sun/jconsole/Makefile > ! make/sun/jdbc/Makefile > ! make/sun/jdga/Makefile > ! make/sun/jpeg/Makefile > ! make/sun/launcher/Makefile > ! make/sun/management/Makefile > ! make/sun/native2ascii/Makefile > ! make/sun/net/others/Makefile > ! make/sun/net/spi/nameservice/dns/Makefile > ! make/sun/nio/cs/Makefile > ! make/sun/org/mozilla/javascript/Makefile > ! make/sun/pisces/Makefile > ! make/sun/rmi/cgi/Makefile > ! make/sun/rmi/oldtools/Makefile > ! make/sun/rmi/registry/Makefile > ! make/sun/rmi/rmi/Makefile > ! make/sun/rmi/rmic/Makefile > ! make/sun/rmi/rmid/Makefile > ! make/sun/security/ec/Makefile > ! make/sun/security/jgss/wrapper/Makefile > ! make/sun/security/krb5/Makefile > ! make/sun/security/mscapi/Makefile > ! make/sun/security/pkcs11/Makefile > ! make/sun/security/smartcardio/Makefile > ! make/sun/security/tools/Makefile > ! make/sun/serialver/Makefile > ! make/sun/splashscreen/Makefile > ! make/sun/text/Makefile > ! make/sun/tools/Makefile > ! make/sun/tracing/dtrace/Makefile > ! make/sun/xawt/Makefile > > Changeset: 1657b854c956 > Author: mchung > Date: 2011-03-09 23:59 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1657b854c956 > > 7026228: Remove make/modules and make/common/Modules.gmk > Reviewed-by: alanb, ohair > > - make/common/Modules.gmk > - make/java/nio/mxbean/Makefile > - make/modules/Makefile > - make/modules/bootmodule.roots > - make/modules/jdk7.depconfig > - make/modules/modules.config > - make/modules/modules.group > - make/modules/optional.depconfig > - make/modules/tools/Makefile > - make/modules/tools/build.xml > - make/modules/tools/nbproject/project.properties > - make/modules/tools/nbproject/project.xml > - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java > - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java > - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java > - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java > - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java > - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java > - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java > - make/modules/tools/src/com/sun/classanalyzer/Klass.java > - make/modules/tools/src/com/sun/classanalyzer/Module.java > - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java > - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java > - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java > - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java > > Changeset: c28f5ac2d5f8 > Author: ohair > Date: 2011-03-10 14:48 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c28f5ac2d5f8 > > 7025412: make381 issues with quotes in jdk/make/docs/Makefile and other places > Reviewed-by: mchung, herrick > > ! make/common/shared/Defs-javadoc.gmk > ! make/common/shared/Sanity.gmk > ! make/docs/Makefile > ! make/javax/crypto/Defs-jce.gmk > > Changeset: 38be400c2608 > Author: asaha > Date: 2011-03-09 16:44 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/38be400c2608 > > 6908562: JFB Custom Revision Version Build/Makefile changes > Reviewed-by: ohair, ksrini, katleman > > ! make/common/Release.gmk > ! make/common/shared/Defs.gmk > > Changeset: fc680f496eaf > Author: asaha > Date: 2011-03-14 12:01 -0700 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fc680f496eaf > > Merge > > - make/common/Modules.gmk > ! make/common/Release.gmk > - make/java/nio/mxbean/Makefile > - make/modules/Makefile > - make/modules/bootmodule.roots > - make/modules/jdk7.depconfig > - make/modules/modules.config > - make/modules/modules.group > - make/modules/optional.depconfig > - make/modules/tools/Makefile > - make/modules/tools/build.xml > - make/modules/tools/nbproject/project.properties > - make/modules/tools/nbproject/project.xml > - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java > - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java > - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java > - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java > - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java > - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java > - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java > - make/modules/tools/src/com/sun/classanalyzer/Klass.java > - make/modules/tools/src/com/sun/classanalyzer/Module.java > - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java > - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java > - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java > - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java > > Changeset: e947a98ea3c1 > Author: cl > Date: 2011-03-10 17:11 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e947a98ea3c1 > > Added tag jdk7-b133 for changeset 5e5f68a01d12 > > ! .hgtags > > Changeset: 864b669d54d8 > Author: lana > Date: 2011-02-21 19:43 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/864b669d54d8 > > Merge > > - make/sun/jkernel/FILES_c_windows.gmk > - make/sun/jkernel/FILES_java.gmk > - make/sun/jkernel/Makefile > - src/share/classes/java/io/TempFileHelper.java > - src/share/classes/java/nio/file/FileRef.java > - src/share/classes/java/nio/file/attribute/Attributes.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java > - src/share/classes/sun/jkernel/BackgroundDownloader.java > - src/share/classes/sun/jkernel/Bundle.java > - src/share/classes/sun/jkernel/BundleCheck.java > - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java > - src/share/classes/sun/jkernel/DigestOutputStream.java > - src/share/classes/sun/jkernel/DownloadManager.java > - src/share/classes/sun/jkernel/KernelError.java > - src/share/classes/sun/jkernel/Mutex.java > - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java > - src/share/classes/sun/jkernel/StandaloneMessageDigest.java > - src/share/classes/sun/jkernel/StandaloneSHA.java > - src/share/demo/zipfs > - src/windows/native/sun/jkernel/DownloadDialog.cpp > - src/windows/native/sun/jkernel/DownloadDialog.h > - src/windows/native/sun/jkernel/DownloadHelper.cpp > - src/windows/native/sun/jkernel/DownloadHelper.h > - src/windows/native/sun/jkernel/graphics/bullet.bmp > - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp > - src/windows/native/sun/jkernel/graphics/java-icon.ico > - src/windows/native/sun/jkernel/graphics/masthead.bmp > - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp > - src/windows/native/sun/jkernel/kernel.cpp > - src/windows/native/sun/jkernel/kernel.def > - src/windows/native/sun/jkernel/kernel.h > - src/windows/native/sun/jkernel/kernel.rc > - src/windows/native/sun/jkernel/kernel_de.rc > - src/windows/native/sun/jkernel/kernel_en.rc > - src/windows/native/sun/jkernel/kernel_es.rc > - src/windows/native/sun/jkernel/kernel_fr.rc > - src/windows/native/sun/jkernel/kernel_it.rc > - src/windows/native/sun/jkernel/kernel_ja.rc > - src/windows/native/sun/jkernel/kernel_ko.rc > - src/windows/native/sun/jkernel/kernel_pt_BR.rc > - src/windows/native/sun/jkernel/kernel_sv.rc > - src/windows/native/sun/jkernel/kernel_zh.rc > - src/windows/native/sun/jkernel/kernel_zh_TW.rc > - src/windows/native/sun/jkernel/resource.h > - src/windows/native/sun/jkernel/stdafx.cpp > - src/windows/native/sun/jkernel/stdafx.h > - src/windows/native/sun/jkernel/version.rc > - test/java/nio/file/Files/ContentType.java > - test/java/nio/file/Files/CreateFileTree.java > - test/java/nio/file/Files/ForceLoad.java > - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector > - test/java/nio/file/Files/MaxDepth.java > - test/java/nio/file/Files/PrintFileTree.java > - test/java/nio/file/Files/SimpleFileTypeDetector.java > - test/java/nio/file/Files/SkipSiblings.java > - test/java/nio/file/Files/TerminateWalk.java > - test/java/nio/file/Files/WalkWithSecurity.java > - test/java/nio/file/Files/denyAll.policy > - test/java/nio/file/Files/grantAll.policy > - test/java/nio/file/Files/grantTopOnly.policy > - test/java/nio/file/Files/walk_file_tree.sh > - test/java/nio/file/Path/CheckPermissions.java > - test/java/nio/file/Path/CopyAndMove.java > - test/java/nio/file/Path/DeleteOnClose.java > - test/java/nio/file/Path/FileAttributes.java > - test/java/nio/file/Path/InterruptCopy.java > - test/java/nio/file/Path/Links.java > - test/java/nio/file/Path/PassThroughFileSystem.java > - test/java/nio/file/Path/SBC.java > - test/java/nio/file/Path/TemporaryFiles.java > - test/java/nio/file/Path/delete_on_close.sh > - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java > > Changeset: 196d6e802721 > Author: prr > Date: 2011-02-28 10:25 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/196d6e802721 > > 7004728: [parfait] potential memory leaks in XRender code > Reviewed-by: bae, ceisserer > > ! src/solaris/native/sun/java2d/x11/XRBackendNative.c > > Changeset: bbbf427a9007 > Author: ceisserer > Date: 2011-03-01 14:49 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/bbbf427a9007 > > 6974985: Jave2Demo threw exceptions when xrender enabled in OEL5.5 > Reviewed-by: prr > > ! make/sun/awt/mapfile-mawt-vers > ! make/sun/xawt/mapfile-vers > ! src/solaris/classes/sun/java2d/xr/XRSurfaceData.java > ! src/solaris/native/sun/java2d/x11/X11SurfaceData.c > ! src/solaris/native/sun/java2d/x11/XRSurfaceData.c > > Changeset: 01dcb496946e > Author: ceisserer > Date: 2011-03-03 16:06 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/01dcb496946e > > 7023589: Xrender : NullPointerException in sun.font.XRGlyphCache.freeGlyphs running Java 2D demo > Reviewed-by: prr > > ! src/share/classes/sun/font/StrikeCache.java > ! src/solaris/classes/sun/font/XRGlyphCache.java > > Changeset: f82f0af7de5b > Author: prr > Date: 2011-03-04 15:54 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f82f0af7de5b > > 7023591: Xrender: java2D font demo - text highlighting tab content is black > Reviewed-by: flar > > ! src/share/classes/sun/java2d/pipe/AAShapePipe.java > > Changeset: 1356371db8c9 > Author: lana > Date: 2011-03-06 23:37 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1356371db8c9 > > Merge > > - src/share/classes/java/dyn/NoAccessException.java > - src/share/classes/java/dyn/Switcher.java > - test/java/lang/Thread/StopBeforeStart.java > > Changeset: df0de56682b7 > Author: dcherepanov > Date: 2011-02-24 13:01 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/df0de56682b7 > > 6996708: The event on the tray icon does not trigger and there is no message printed. > Reviewed-by: art, ant > > ! src/windows/native/sun/windows/awt_TrayIcon.cpp > > Changeset: 75d8c1200df8 > Author: dcherepanov > Date: 2011-02-25 13:58 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/75d8c1200df8 > > 7020522: Need to reapply the fix for 6664512 > Reviewed-by: art, mchung > > ! src/share/classes/sun/util/logging/PlatformLogger.java > > Changeset: c27520009762 > Author: dcherepanov > Date: 2011-02-25 15:33 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c27520009762 > > 7009114: GTK FileDialog lies about it's Bounds > Reviewed-by: art, anthony > > ! make/sun/xawt/mapfile-vers > ! src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java > ! src/solaris/native/sun/awt/gtk2_interface.c > ! src/solaris/native/sun/awt/gtk2_interface.h > ! src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c > ! src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.h > > Changeset: de0f2f8563eb > Author: lana > Date: 2011-02-26 23:46 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/de0f2f8563eb > > Merge > > - make/sun/jkernel/FILES_c_windows.gmk > - make/sun/jkernel/FILES_java.gmk > - make/sun/jkernel/Makefile > - src/share/classes/java/io/TempFileHelper.java > - src/share/classes/java/nio/file/FileRef.java > - src/share/classes/java/nio/file/attribute/Attributes.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java > - src/share/classes/sun/jkernel/BackgroundDownloader.java > - src/share/classes/sun/jkernel/Bundle.java > - src/share/classes/sun/jkernel/BundleCheck.java > - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java > - src/share/classes/sun/jkernel/DigestOutputStream.java > - src/share/classes/sun/jkernel/DownloadManager.java > - src/share/classes/sun/jkernel/KernelError.java > - src/share/classes/sun/jkernel/Mutex.java > - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java > - src/share/classes/sun/jkernel/StandaloneMessageDigest.java > - src/share/classes/sun/jkernel/StandaloneSHA.java > - src/share/demo/zipfs > - src/windows/native/sun/jkernel/DownloadDialog.cpp > - src/windows/native/sun/jkernel/DownloadDialog.h > - src/windows/native/sun/jkernel/DownloadHelper.cpp > - src/windows/native/sun/jkernel/DownloadHelper.h > - src/windows/native/sun/jkernel/graphics/bullet.bmp > - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp > - src/windows/native/sun/jkernel/graphics/java-icon.ico > - src/windows/native/sun/jkernel/graphics/masthead.bmp > - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp > - src/windows/native/sun/jkernel/kernel.cpp > - src/windows/native/sun/jkernel/kernel.def > - src/windows/native/sun/jkernel/kernel.h > - src/windows/native/sun/jkernel/kernel.rc > - src/windows/native/sun/jkernel/kernel_de.rc > - src/windows/native/sun/jkernel/kernel_en.rc > - src/windows/native/sun/jkernel/kernel_es.rc > - src/windows/native/sun/jkernel/kernel_fr.rc > - src/windows/native/sun/jkernel/kernel_it.rc > - src/windows/native/sun/jkernel/kernel_ja.rc > - src/windows/native/sun/jkernel/kernel_ko.rc > - src/windows/native/sun/jkernel/kernel_pt_BR.rc > - src/windows/native/sun/jkernel/kernel_sv.rc > - src/windows/native/sun/jkernel/kernel_zh.rc > - src/windows/native/sun/jkernel/kernel_zh_TW.rc > - src/windows/native/sun/jkernel/resource.h > - src/windows/native/sun/jkernel/stdafx.cpp > - src/windows/native/sun/jkernel/stdafx.h > - src/windows/native/sun/jkernel/version.rc > - test/java/nio/file/Files/ContentType.java > - test/java/nio/file/Files/CreateFileTree.java > - test/java/nio/file/Files/ForceLoad.java > - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector > - test/java/nio/file/Files/MaxDepth.java > - test/java/nio/file/Files/PrintFileTree.java > - test/java/nio/file/Files/SimpleFileTypeDetector.java > - test/java/nio/file/Files/SkipSiblings.java > - test/java/nio/file/Files/TerminateWalk.java > - test/java/nio/file/Files/WalkWithSecurity.java > - test/java/nio/file/Files/denyAll.policy > - test/java/nio/file/Files/grantAll.policy > - test/java/nio/file/Files/grantTopOnly.policy > - test/java/nio/file/Files/walk_file_tree.sh > - test/java/nio/file/Path/CheckPermissions.java > - test/java/nio/file/Path/CopyAndMove.java > - test/java/nio/file/Path/DeleteOnClose.java > - test/java/nio/file/Path/FileAttributes.java > - test/java/nio/file/Path/InterruptCopy.java > - test/java/nio/file/Path/Links.java > - test/java/nio/file/Path/PassThroughFileSystem.java > - test/java/nio/file/Path/SBC.java > - test/java/nio/file/Path/TemporaryFiles.java > - test/java/nio/file/Path/delete_on_close.sh > - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java > > Changeset: 024d040af4a3 > Author: anthony > Date: 2011-03-01 13:49 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/024d040af4a3 > > 7022488: The security warning may disappear unexpectedly > Summary: Initialize the fullScreenExclusiveModeState flag in the AwtWindow constructor > Reviewed-by: art, dcherepanov > > ! src/windows/native/sun/windows/awt_Window.cpp > > Changeset: b5e609488bc8 > Author: dcherepanov > Date: 2011-03-01 15:24 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b5e609488bc8 > > 6826397: PIT : Frame System Menu is not seen for when ALT + Space Bar is pressed in jdk7 b55 build. > Reviewed-by: art, ant > > ! src/windows/native/sun/windows/awt_Frame.cpp > ! src/windows/native/sun/windows/awt_Frame.h > > Changeset: 8cd20d3e5448 > Author: lana > Date: 2011-03-06 20:32 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8cd20d3e5448 > > Merge > > - src/share/classes/java/dyn/NoAccessException.java > - src/share/classes/java/dyn/Switcher.java > - test/java/lang/Thread/StopBeforeStart.java > > Changeset: 333bd91466bd > Author: lana > Date: 2011-03-07 14:44 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/333bd91466bd > > Merge > > ! make/sun/xawt/mapfile-vers > > Changeset: f8fdf9bca159 > Author: okutsu > Date: 2011-02-22 14:51 +0900 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f8fdf9bca159 > > 7010379: fontconfig update for RHEL 6 > Reviewed-by: peytoia > > ! make/sun/awt/Makefile > > Changeset: 5957bd3cfdc3 > Author: okutsu > Date: 2011-02-23 14:09 +0900 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5957bd3cfdc3 > > 6623219: Font.canDisplayUpTo does not work with supplementary characters > Reviewed-by: prr, peytoia > > ! src/share/classes/java/awt/Font.java > + test/java/awt/FontClass/SurrogateTest/SupplementaryCanDisplayUpToTest.java > > Changeset: 30d112b3b6f2 > Author: okutsu > Date: 2011-02-23 16:50 +0900 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/30d112b3b6f2 > > 6955047: (tz) javadoc for TimeZone.getDisplayName(boolean daylight, int style, Locale locale) is not clear > 7021680: (tz) daylight savings time should be daylight saving time > Reviewed-by: peytoia > > ! src/share/classes/java/util/Calendar.java > ! src/share/classes/java/util/GregorianCalendar.java > ! src/share/classes/java/util/TimeZone.java > > Changeset: ff611d9474cb > Author: okutsu > Date: 2011-02-24 15:09 +0900 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ff611d9474cb > > 7021989: Missing observesDaylightTime override in ZoneInfo > Reviewed-by: peytoia > > ! src/share/classes/sun/util/calendar/ZoneInfo.java > > Changeset: 01c752a48b51 > Author: okutsu > Date: 2011-02-24 16:29 +0900 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/01c752a48b51 > > 6772689: java.sql.Date.valueOf("2042-10-xx").toString() wrong in some time zones > Reviewed-by: peytoia > > ! src/share/classes/sun/util/calendar/ZoneInfo.java > + test/java/util/TimeZone/Bug6772689.java > > Changeset: e390ce4509c6 > Author: alexp > Date: 2011-02-28 18:20 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e390ce4509c6 > > 6826074: JScrollPane does not revalidate the component hierarchy after scrolling > Reviewed-by: anthony > > ! src/share/classes/javax/swing/DefaultDesktopManager.java > ! src/share/classes/javax/swing/JViewport.java > > Changeset: 1ef5b85d41f2 > Author: amenkov > Date: 2011-02-28 18:36 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1ef5b85d41f2 > > 7013521: AudioSystem.write for AIFF files closes source audio stream > Reviewed-by: dav > > ! src/share/classes/com/sun/media/sound/AiffFileWriter.java > ! src/share/classes/com/sun/media/sound/AuFileWriter.java > ! src/share/classes/com/sun/media/sound/SunFileWriter.java > ! src/share/classes/com/sun/media/sound/WaveFileWriter.java > + test/javax/sound/sampled/FileWriter/WriterCloseInput.java > > Changeset: d4e3c1f2177a > Author: amenkov > Date: 2011-03-03 15:41 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d4e3c1f2177a > > 6938426: Concurrency bug in ALAW encoder causes random bursts of static/noise in output. > Reviewed-by: stayer > > ! src/share/classes/com/sun/media/sound/AlawCodec.java > + test/javax/sound/sampled/FileWriter/AlawEncoderSync.java > > Changeset: d3df100509ad > Author: amenkov > Date: 2011-03-03 15:45 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d3df100509ad > > 6801206: SoundTestSuite: test050 fails > Reviewed-by: stayer > > ! src/share/classes/com/sun/media/sound/DirectAudioDevice.java > + test/javax/sound/sampled/Clip/ClipSetPos.java > > Changeset: 4e732aba71bf > Author: amenkov > Date: 2011-03-03 15:57 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4e732aba71bf > > 6660470: RealTimeSequencer incorrectly opens (implicitly) synthesizer > Reviewed-by: stayer > > ! src/share/classes/com/sun/media/sound/RealTimeSequencer.java > ! src/share/classes/javax/sound/midi/MidiSystem.java > + test/javax/sound/midi/Sequencer/SequencerImplicitSynthOpen.java > > Changeset: 67d4b2e2e5b1 > Author: amenkov > Date: 2011-03-03 16:40 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/67d4b2e2e5b1 > > 6835393: MidiSystem fails to correctly read Sequence with SMPTE division > Reviewed-by: stayer > > ! src/share/classes/com/sun/media/sound/StandardMidiFileReader.java > + test/javax/sound/midi/File/SMPTESequence.java > > Changeset: 52bdb4237d5e > Author: rupashka > Date: 2011-03-03 17:47 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/52bdb4237d5e > > 6796710: Html content in JEditorPane is overlapping on swing components while resizing the application. > Reviewed-by: alexp > > ! src/share/classes/javax/swing/text/html/CSSBorder.java > + test/javax/swing/regtesthelpers/Util.java > + test/javax/swing/text/CSSBorder/6796710/bug6796710.java > > Changeset: 7dfcf271b73b > Author: alexp > Date: 2011-03-03 18:23 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7dfcf271b73b > > 6653511: JComponent.safelyGetGraphics() may sometimes return null > Reviewed-by: rupashka > > ! src/share/classes/javax/swing/JComponent.java > > Changeset: e4ca9353150a > Author: alexp > Date: 2011-03-03 18:27 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e4ca9353150a > > Merge > > > Changeset: dc34da6a3fa1 > Author: rupashka > Date: 2011-03-05 18:27 +0300 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/dc34da6a3fa1 > > 6760148: Certain fonts are not correctly soft wrapped when using JTextComponent.print() > Reviewed-by: peterz > > ! src/share/classes/javax/swing/text/Utilities.java > ! src/share/classes/javax/swing/text/WrappedPlainView.java > > Changeset: ca0f223b4be7 > Author: lana > Date: 2011-03-05 20:54 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ca0f223b4be7 > > Merge > > - make/sun/jkernel/FILES_c_windows.gmk > - make/sun/jkernel/FILES_java.gmk > - make/sun/jkernel/Makefile > - src/share/classes/java/dyn/NoAccessException.java > - src/share/classes/java/dyn/Switcher.java > - src/share/classes/java/io/TempFileHelper.java > - src/share/classes/java/nio/file/FileRef.java > - src/share/classes/java/nio/file/attribute/Attributes.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributeView.java > - src/share/classes/java/nio/file/attribute/FileStoreSpaceAttributes.java > ! src/share/classes/javax/swing/JComponent.java > - src/share/classes/sun/jkernel/BackgroundDownloader.java > - src/share/classes/sun/jkernel/Bundle.java > - src/share/classes/sun/jkernel/BundleCheck.java > - src/share/classes/sun/jkernel/ByteArrayToFromHexDigits.java > - src/share/classes/sun/jkernel/DigestOutputStream.java > - src/share/classes/sun/jkernel/DownloadManager.java > - src/share/classes/sun/jkernel/KernelError.java > - src/share/classes/sun/jkernel/Mutex.java > - src/share/classes/sun/jkernel/StandaloneByteArrayAccess.java > - src/share/classes/sun/jkernel/StandaloneMessageDigest.java > - src/share/classes/sun/jkernel/StandaloneSHA.java > - src/share/demo/zipfs > - src/windows/native/sun/jkernel/DownloadDialog.cpp > - src/windows/native/sun/jkernel/DownloadDialog.h > - src/windows/native/sun/jkernel/DownloadHelper.cpp > - src/windows/native/sun/jkernel/DownloadHelper.h > - src/windows/native/sun/jkernel/graphics/bullet.bmp > - src/windows/native/sun/jkernel/graphics/cautionshield32.bmp > - src/windows/native/sun/jkernel/graphics/java-icon.ico > - src/windows/native/sun/jkernel/graphics/masthead.bmp > - src/windows/native/sun/jkernel/graphics/warningmasthead.bmp > - src/windows/native/sun/jkernel/kernel.cpp > - src/windows/native/sun/jkernel/kernel.def > - src/windows/native/sun/jkernel/kernel.h > - src/windows/native/sun/jkernel/kernel.rc > - src/windows/native/sun/jkernel/kernel_de.rc > - src/windows/native/sun/jkernel/kernel_en.rc > - src/windows/native/sun/jkernel/kernel_es.rc > - src/windows/native/sun/jkernel/kernel_fr.rc > - src/windows/native/sun/jkernel/kernel_it.rc > - src/windows/native/sun/jkernel/kernel_ja.rc > - src/windows/native/sun/jkernel/kernel_ko.rc > - src/windows/native/sun/jkernel/kernel_pt_BR.rc > - src/windows/native/sun/jkernel/kernel_sv.rc > - src/windows/native/sun/jkernel/kernel_zh.rc > - src/windows/native/sun/jkernel/kernel_zh_TW.rc > - src/windows/native/sun/jkernel/resource.h > - src/windows/native/sun/jkernel/stdafx.cpp > - src/windows/native/sun/jkernel/stdafx.h > - src/windows/native/sun/jkernel/version.rc > - test/java/lang/Thread/StopBeforeStart.java > - test/java/nio/file/Files/ContentType.java > - test/java/nio/file/Files/CreateFileTree.java > - test/java/nio/file/Files/ForceLoad.java > - test/java/nio/file/Files/META-INF/services/java.nio.file.spi.FileTypeDetector > - test/java/nio/file/Files/MaxDepth.java > - test/java/nio/file/Files/PrintFileTree.java > - test/java/nio/file/Files/SimpleFileTypeDetector.java > - test/java/nio/file/Files/SkipSiblings.java > - test/java/nio/file/Files/TerminateWalk.java > - test/java/nio/file/Files/WalkWithSecurity.java > - test/java/nio/file/Files/denyAll.policy > - test/java/nio/file/Files/grantAll.policy > - test/java/nio/file/Files/grantTopOnly.policy > - test/java/nio/file/Files/walk_file_tree.sh > - test/java/nio/file/Path/CheckPermissions.java > - test/java/nio/file/Path/CopyAndMove.java > - test/java/nio/file/Path/DeleteOnClose.java > - test/java/nio/file/Path/FileAttributes.java > - test/java/nio/file/Path/InterruptCopy.java > - test/java/nio/file/Path/Links.java > - test/java/nio/file/Path/PassThroughFileSystem.java > - test/java/nio/file/Path/SBC.java > - test/java/nio/file/Path/TemporaryFiles.java > - test/java/nio/file/Path/delete_on_close.sh > - test/java/nio/file/attribute/FileStoreAttributeView/Basic.java > > Changeset: e3a69b9be2b5 > Author: lana > Date: 2011-03-07 14:46 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e3a69b9be2b5 > > Merge > > > Changeset: 0b6d82c838d4 > Author: lana > Date: 2011-03-07 14:48 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0b6d82c838d4 > > Merge > > - src/share/classes/sun/misc/BootClassLoaderHook.java > - src/share/classes/sun/misc/JavaSecurityCodeSignerAccess.java > - test/sun/misc/BootClassLoaderHook/TestHook.java > > Changeset: c0bf0f19897a > Author: lana > Date: 2011-03-10 19:38 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c0bf0f19897a > > Merge > > > Changeset: c975c4fbca20 > Author: lana > Date: 2011-03-10 20:49 -0800 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c975c4fbca20 > > Merge > > ! make/common/Release.gmk > - src/share/classes/sun/misc/BootClassLoaderHook.java > - src/share/classes/sun/misc/JavaSecurityCodeSignerAccess.java > - test/sun/misc/BootClassLoaderHook/TestHook.java > > Changeset: b1215d1f015b > Author: ohair > Date: 2011-03-15 15:32 -0700 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b1215d1f015b > > Merge > > - make/common/Modules.gmk > ! make/common/Release.gmk > - make/java/nio/mxbean/Makefile > - make/modules/Makefile > - make/modules/bootmodule.roots > - make/modules/jdk7.depconfig > - make/modules/modules.config > - make/modules/modules.group > - make/modules/optional.depconfig > - make/modules/tools/Makefile > - make/modules/tools/build.xml > - make/modules/tools/nbproject/project.properties > - make/modules/tools/nbproject/project.xml > - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java > - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java > - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java > - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java > - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java > - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java > - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java > - make/modules/tools/src/com/sun/classanalyzer/Klass.java > - make/modules/tools/src/com/sun/classanalyzer/Module.java > - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java > - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java > - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java > - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java > ! make/sun/awt/Makefile > > Changeset: f82a1434bf63 > Author: dholmes > Date: 2011-03-15 19:52 -0400 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f82a1434bf63 > > 7027897: Build support for client-VM only configurations > Summary: Support builds for which only the client VM is required and/or available > Reviewed-by: ohair, andrew > > ! make/common/Defs.gmk > ! make/common/shared/Sanity.gmk > ! make/java/jvm/Makefile > ! make/java/redist/Makefile > > Changeset: d7034302bc24 > Author: dholmes > Date: 2011-03-15 20:00 -0400 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d7034302bc24 > > Merge > > ! make/common/Defs.gmk > - make/common/Modules.gmk > ! make/common/shared/Sanity.gmk > ! make/java/jli/Makefile > ! make/java/jvm/Makefile > - make/java/nio/mxbean/Makefile > ! make/java/redist/Makefile > - make/modules/Makefile > - make/modules/bootmodule.roots > - make/modules/jdk7.depconfig > - make/modules/modules.config > - make/modules/modules.group > - make/modules/optional.depconfig > - make/modules/tools/Makefile > - make/modules/tools/build.xml > - make/modules/tools/nbproject/project.properties > - make/modules/tools/nbproject/project.xml > - make/modules/tools/src/com/sun/classanalyzer/AnnotatedDependency.java > - make/modules/tools/src/com/sun/classanalyzer/AnnotationParser.java > - make/modules/tools/src/com/sun/classanalyzer/BootAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/CheckDeps.java > - make/modules/tools/src/com/sun/classanalyzer/ClassAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ClassFileParser.java > - make/modules/tools/src/com/sun/classanalyzer/ClassPath.java > - make/modules/tools/src/com/sun/classanalyzer/CodeAttributeParser.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolAnalyzer.java > - make/modules/tools/src/com/sun/classanalyzer/ConstantPoolParser.java > - make/modules/tools/src/com/sun/classanalyzer/DependencyConfig.java > - make/modules/tools/src/com/sun/classanalyzer/Klass.java > - make/modules/tools/src/com/sun/classanalyzer/Module.java > - make/modules/tools/src/com/sun/classanalyzer/ModuleConfig.java > - make/modules/tools/src/com/sun/classanalyzer/ResolutionInfo.java > - make/modules/tools/src/com/sun/classanalyzer/ResourceFile.java > - make/modules/tools/src/com/sun/classanalyzer/ShowDeps.java > > Changeset: 3a22998bc3c7 > Author: dholmes > Date: 2011-03-16 05:29 -0400 > URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3a22998bc3c7 > > Merge > > From maurizio.cimadamore at oracle.com Wed Mar 16 11:13:43 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Wed, 16 Mar 2011 11:13:43 +0000 Subject: hg: jdk7/tl/langtools: 6558548: The compiler needs to be aligned with clarified specification of throws Message-ID: <20110316111347.6C8DF471CC@hg.openjdk.java.net> Changeset: 5b29f2a85085 Author: mcimadamore Date: 2011-03-16 11:12 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/5b29f2a85085 6558548: The compiler needs to be aligned with clarified specification of throws Summary: Javac should issue unconditional warnings when 'dead' catch clauses are detected Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/code/Source.java ! src/share/classes/com/sun/tools/javac/comp/Flow.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties + test/tools/javac/6558548/T6558548.java + test/tools/javac/6558548/T6558548_6.out + test/tools/javac/6558548/T6558548_latest.out + test/tools/javac/diags/examples/UnreachableCatch.java + test/tools/javac/diags/examples/UnreachableCatch1.java From spoole at linux.vnet.ibm.com Wed Mar 16 16:31:18 2011 From: spoole at linux.vnet.ibm.com (Steve Poole) Date: Wed, 16 Mar 2011 16:31:18 +0000 Subject: Review Request -- 5045147 : When TreeMap is empty explicitly check for null keys in put() [updated] In-Reply-To: References: , , <21E89C92-9EFA-4093-A6A4-46CF74DD09DC@oracle.com>, <4D7BF02D.4040707@oracle.com>, <3A84876B-A0E7-493C-A75F-64D2CC9AC86D@oracle.com>, <4D7F3317.3050907@linux.vnet.ibm.com>, <1E0A3D33-5020-4A2F-A97C-04126EE9239B@oracle.com> Message-ID: <4D80E5D6.3000104@linux.vnet.ibm.com> On 15/03/11 17:05, Jason Mehrens wrote: > Hi Steve, > > I was one of the people that provided feedback on Mike's patch. In my > case, it was a mishap of reply to sender vs. reply to all. I don't > have the original email but, the result are visible in the test case > that Mike wrote. My main concern with the old patch that if you use a > raw type (think legacy code) you can poison a TreeMap/TreeSet with > non-null object that cannot be compared. I remembered reviewing that > code back in JSR166 maintenance review. I can't take credit for it > since the review section of the bug report does a great job of > explaining the evolution of the correct patch. > http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045147 > > Jason Jason and Mike - thank you for posting this information. I appreciate the quick responses. > > > Subject: Re: Review Request -- 5045147 : When TreeMap is empty > explicitly check for null keys in put() [updated] > > From: mike.duigou at oracle.com > > Date: Tue, 15 Mar 2011 09:34:00 -0700 > > To: spoole at linux.vnet.ibm.com > > CC: core-libs-dev at openjdk.java.net > > > > > > On Mar 15 2011, at 02:36 , Steve Poole wrote: > > > > > On 14/03/11 21:02, Mike Duigou wrote: > > >> I've gotten feedback regarding this issue and I've updated the > webrev to use the commented out compare(key, key) test rather than the > previously committed solution. I hadn't looked at the commented out > code too carefully and had assumed it was pseudo-code rather than an > actual solution. It's an improvement over the original solution and > reads, to me and apparently others, a lot simpler. > > >> > > > Hi - can you post the feedback to the mailing list? > > > > Hi Steve; > > > > Sorry, I can't repost them. I'd have preferred that the feedback > went to the list but for whatever reasons the two respondents chose to > send the feedback privately and I won't repost their private emails. > (They are certainly welcome to do so if they feel it matters). Perhaps > it was just a case of "Reply to Sender" vs "Reply to All". I don't > know. To summarize the messages though, "Just use the commented out > code for 504517. It's better than the old patch." > > > > Mike > > > > >> http://cr.openjdk.java.net/~mduigou/5045147/1/webrev/ > > >> > > >> Also now included is a jtreg unit test. > > >> > > >> Mike > > > > > From kumar.x.srinivasan at oracle.com Wed Mar 16 18:23:41 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Wed, 16 Mar 2011 18:23:41 +0000 Subject: hg: jdk7/tl/langtools: 7026359: (langtools) fix big jar test Message-ID: <20110316182343.6B262471DF@hg.openjdk.java.net> Changeset: f2f04935ef3f Author: ksrini Date: 2011-03-16 09:41 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/f2f04935ef3f 7026359: (langtools) fix big jar test Reviewed-by: jjg ! test/tools/javac/file/zip/T6836682.java From xueming.shen at oracle.com Wed Mar 16 19:15:29 2011 From: xueming.shen at oracle.com (xueming.shen at oracle.com) Date: Wed, 16 Mar 2011 19:15:29 +0000 Subject: hg: jdk7/tl/jdk: 6803681: RFE: Need new codeset converter for IBM Cp1364 Message-ID: <20110316191555.3B4F2471E2@hg.openjdk.java.net> Changeset: 05911dc54a67 Author: sherman Date: 2011-03-16 12:16 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/05911dc54a67 6803681: RFE: Need new codeset converter for IBM Cp1364 Summary: forward port the Cp1364 Reviewed-by: alanb ! make/sun/nio/cs/FILES_java.gmk + make/tools/CharsetMapping/IBM1364.c2b + make/tools/CharsetMapping/IBM1364.map ! make/tools/CharsetMapping/dbcs ! src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java + test/sun/nio/cs/TestIBM1364.java From david.holmes at oracle.com Wed Mar 16 22:56:01 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Wed, 16 Mar 2011 22:56:01 +0000 Subject: hg: jdk7/tl/jdk: 7027910: Add basic cross-compilation support and add ARM/PPC to the known architectures in the open code Message-ID: <20110316225625.61D26471EC@hg.openjdk.java.net> Changeset: 54d8193f177b Author: dholmes Date: 2011-03-16 18:54 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/54d8193f177b 7027910: Add basic cross-compilation support and add ARM/PPC to the known architectures in the open code Summary: Cross-compilation support Reviewed-by: ohair, andrew ! make/common/Defs-linux.gmk ! make/common/Defs.gmk ! make/common/Program.gmk ! make/common/shared/Defs-linux.gmk ! make/common/shared/Defs-solaris.gmk ! make/common/shared/Defs-utils.gmk ! make/common/shared/Defs-versions.gmk ! make/common/shared/Platform.gmk ! make/common/shared/Sanity-Settings.gmk ! make/common/shared/Sanity.gmk ! make/java/instrument/Makefile ! make/java/nio/Makefile ! make/javax/sound/SoundDefs.gmk ! make/sun/jdbc/Makefile ! make/tools/Makefile ! src/share/native/com/sun/media/sound/SoundDefs.h ! src/share/native/java/lang/fdlibm/include/fdlibm.h From jonathan.gibbons at oracle.com Thu Mar 17 00:22:57 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 17 Mar 2011 00:22:57 +0000 Subject: hg: jdk7/tl/langtools: 6930508: Passing nested class names on javac command line interfere with subsequent name -> class lookup Message-ID: <20110317002301.6AB34471F1@hg.openjdk.java.net> Changeset: a2399c8db703 Author: jjg Date: 2011-03-16 17:21 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/a2399c8db703 6930508: Passing nested class names on javac command line interfere with subsequent name -> class lookup Reviewed-by: darcy ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java ! test/tools/javac/processing/model/element/TestAnonClassNames.java + test/tools/javac/processing/options/testCommandLineClasses/Test.java + test/tools/javac/processing/options/testCommandLineClasses/p/NestedExamples.java From i30817 at gmail.com Thu Mar 17 04:39:36 2011 From: i30817 at gmail.com (Paulo Levi) Date: Thu, 17 Mar 2011 04:39:36 +0000 Subject: Now that lambdas are in, is it likely that System.arraycopy will get a lambda version? Message-ID: Would that ruin the efficiency of the construct? I'm mainly thinking of the cases where you have to copy a byte array into two different others. From i30817 at gmail.com Thu Mar 17 04:50:50 2011 From: i30817 at gmail.com (Paulo Levi) Date: Thu, 17 Mar 2011 04:50:50 +0000 Subject: Now that lambdas are in, is it likely that System.arraycopy will get a lambda version? In-Reply-To: References: Message-ID: Actually, doing maps and folds over arrays would be pretty cool too. From lance.andersen at oracle.com Thu Mar 17 15:38:14 2011 From: lance.andersen at oracle.com (lance.andersen at oracle.com) Date: Thu, 17 Mar 2011 15:38:14 +0000 Subject: hg: jdk7/tl/jdk: 7026898: DriverManager to now use CopyOnWriteArrayList Message-ID: <20110317153840.B5F6D4721B@hg.openjdk.java.net> Changeset: df9991dc1f0d Author: lancea Date: 2011-03-17 11:37 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/df9991dc1f0d 7026898: DriverManager to now use CopyOnWriteArrayList Reviewed-by: alanb, briangoetz ! src/share/classes/java/sql/DriverManager.java From xuelei.fan at oracle.com Thu Mar 17 15:56:25 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Thu, 17 Mar 2011 15:56:25 +0000 Subject: hg: jdk7/tl/jdk: 7028422: regression: SKID miss-matching Message-ID: <20110317155634.F3EBA4721D@hg.openjdk.java.net> Changeset: 320bdab4cb2a Author: xuelei Date: 2011-03-17 08:55 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/320bdab4cb2a 7028422: regression: SKID miss-matching Summary: Do not override the previous setting for initial selection. Reviewed-by: mullan ! src/share/classes/sun/security/provider/certpath/AdaptableX509CertSelector.java From xueming.shen at oracle.com Thu Mar 17 18:40:30 2011 From: xueming.shen at oracle.com (xueming.shen at oracle.com) Date: Thu, 17 Mar 2011 18:40:30 +0000 Subject: hg: jdk7/tl/jdk: 6796662: (fmt spec) Formatter spec on BigDecimal output should not reference Float a Message-ID: <20110317184040.1402A47224@hg.openjdk.java.net> Changeset: 3eb51bf7e859 Author: sherman Date: 2011-03-17 11:42 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3eb51bf7e859 6796662: (fmt spec) Formatter spec on BigDecimal output should not reference Float a Summary: updated the spec doc Reviewed-by: alanb ! src/share/classes/java/util/Formatter.java From mike.duigou at oracle.com Thu Mar 17 20:14:54 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Thu, 17 Mar 2011 20:14:54 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110317201513.B44DA47228@hg.openjdk.java.net> Changeset: a8569f14121d Author: mduigou Date: 2011-03-17 13:13 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a8569f14121d 7028133: Specify serialVersionUID for RegularEnumSet and JumboEnumSet Reviewed-by: alanb, mduigou Contributed-by: Neil Richards ! src/share/classes/java/util/JumboEnumSet.java ! src/share/classes/java/util/RegularEnumSet.java Changeset: 3ad10ea6df89 Author: mduigou Date: 2011-03-17 13:14 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3ad10ea6df89 Merge From brian.goetz at oracle.com Thu Mar 17 21:05:12 2011 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 17 Mar 2011 17:05:12 -0400 Subject: Now that lambdas are in, is it likely that System.arraycopy will get a lambda version? In-Reply-To: References: Message-ID: <4D827788.8070509@oracle.com> For some definition of "in", much work remains to deliver the functionality. That said, this is the right place to propose ideas of APIs that are sensible candidates for using lambdas. Could you sketch out what you had in mind? On 3/17/2011 12:39 AM, Paulo Levi wrote: > Would that ruin the efficiency of the construct? > > I'm mainly thinking of the cases where you have to copy a byte array into > two different others. From brian.goetz at oracle.com Thu Mar 17 21:06:05 2011 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 17 Mar 2011 17:06:05 -0400 Subject: Now that lambdas are in, is it likely that System.arraycopy will get a lambda version? In-Reply-To: References: Message-ID: <4D8277BD.6060804@oracle.com> It is an open question whether we want to support extension methods on array types, and on the list for the EG to discuss. On 3/17/2011 12:50 AM, Paulo Levi wrote: > Actually, doing maps and folds over arrays would be pretty cool too. From mike.duigou at oracle.com Thu Mar 17 21:43:31 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Thu, 17 Mar 2011 21:43:31 +0000 Subject: hg: jdk7/tl/jdk: 5045147: Prevent insertion of null Key into empty TreeMap (and null element into TreeSet) when no Comparator is used. Prevent insertion of key of incorrect type into empty TreeMap and incorrect type element into TreeSet and incorrect type when Comparator is used. Message-ID: <20110317214340.9465F4722E@hg.openjdk.java.net> Changeset: bf37edb38fbb Author: mduigou Date: 2011-03-17 14:42 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/bf37edb38fbb 5045147: Prevent insertion of null Key into empty TreeMap (and null element into TreeSet) when no Comparator is used. Prevent insertion of key of incorrect type into empty TreeMap and incorrect type element into TreeSet and incorrect type when Comparator is used. Reviewed-by: alanb, dl, mduigou ! src/share/classes/java/util/TreeMap.java + test/java/util/TreeMap/cr5045147.java From mike.duigou at oracle.com Thu Mar 17 22:07:58 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Thu, 17 Mar 2011 15:07:58 -0700 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() Message-ID: Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. Speedups from this change are uniformly 2x or better. The proposed improvement and patch was originated by John Rose. Thanks, Mike From mike.duigou at oracle.com Thu Mar 17 23:04:54 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Thu, 17 Mar 2011 16:04:54 -0700 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() In-Reply-To: References: Message-ID: Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ Mike On Mar 17 2011, at 15:07 , Mike Duigou wrote: > Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. > > Speedups from this change are uniformly 2x or better. > > The proposed improvement and patch was originated by John Rose. > > Thanks, > > Mike From brian.goetz at oracle.com Thu Mar 17 23:26:06 2011 From: brian.goetz at oracle.com (Brian Goetz) Date: Thu, 17 Mar 2011 19:26:06 -0400 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() In-Reply-To: References: Message-ID: <4D82988E.1050408@oracle.com> You might consider storing the cached item in checkAccess() in a ThreadLocal instead of a static. Not only would this eliminate the volatile accesses, but it reduces the chance of a "miss" in this one-element cache, since it will then be impervious to interleavings where other threads might use reflection. (The purpose of the cache is to speed up the case when some code is grinding through all the members of a Class; it is unlikely that there would be many hits in this cache across threads anyway.) Obviously this is a tradeoff of memory utilization for reduced synchronization traffic + higher cache hit rate + more predictable reflection performance under concurrent load. You can eliminate the second read-volatile by having acquireMethodAccessor return the MA instead of re-reading the volatile. On 3/17/2011 7:04 PM, Mike Duigou wrote: > Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ > > Mike > > On Mar 17 2011, at 15:07 , Mike Duigou wrote: > >> Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. >> >> Speedups from this change are uniformly 2x or better. >> >> The proposed improvement and patch was originated by John Rose. >> >> Thanks, >> >> Mike > From David.Holmes at oracle.com Thu Mar 17 23:43:53 2011 From: David.Holmes at oracle.com (David Holmes) Date: Fri, 18 Mar 2011 09:43:53 +1000 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() In-Reply-To: References: Message-ID: <4D829CB9.3010307@oracle.com> Hi Mike, "needless critical section" is a bit of a vague way to describe what is fundamentally a change to the caching strategy :) From a synchronization perspective I concur that the new strategy is valid, but I can't comment on whether the right access check is actually being performed. In AccessibleObject.java, a minor nit, but place this comment: + // (Test cache[1] first since range check for [1] + // subsumes range check for [0].) before the array access rather than after it. Cheers, David Mike Duigou said the following on 03/18/11 09:04: > Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ > > Mike > > On Mar 17 2011, at 15:07 , Mike Duigou wrote: > >> Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. >> >> Speedups from this change are uniformly 2x or better. >> >> The proposed improvement and patch was originated by John Rose. >> >> Thanks, >> >> Mike > From stuart.marks at oracle.com Fri Mar 18 01:49:20 2011 From: stuart.marks at oracle.com (stuart.marks at oracle.com) Date: Fri, 18 Mar 2011 01:49:20 +0000 Subject: hg: jdk7/tl/jdk: 7022382: convert pack200 library code to use try-with-resources Message-ID: <20110318014935.CC1734724A@hg.openjdk.java.net> Changeset: 192bbf6cd5de Author: smarks Date: 2011-03-17 18:50 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/192bbf6cd5de 7022382: convert pack200 library code to use try-with-resources Reviewed-by: ksrini ! src/share/classes/com/sun/java/util/jar/pack/BandStructure.java ! src/share/classes/com/sun/java/util/jar/pack/Driver.java ! src/share/classes/com/sun/java/util/jar/pack/NativeUnpack.java ! src/share/classes/com/sun/java/util/jar/pack/PackageReader.java ! src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java ! src/share/classes/com/sun/java/util/jar/pack/PropMap.java ! src/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java ! src/share/classes/com/sun/java/util/jar/pack/Utils.java From daniel.daugherty at oracle.com Fri Mar 18 14:18:25 2011 From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com) Date: Fri, 18 Mar 2011 14:18:25 +0000 Subject: hg: jdk7/tl/jdk: 7028668: 3/4 improve diagnosibility and robustness of sun.tools.attach.WindowsVirtualMachine.openProcess() Message-ID: <20110318141850.AAAE94727D@hg.openjdk.java.net> Changeset: a76262ab5ea6 Author: dcubed Date: 2011-03-18 07:17 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a76262ab5ea6 7028668: 3/4 improve diagnosibility and robustness of sun.tools.attach.WindowsVirtualMachine.openProcess() Summary: Add more info to OpenProcess default detail error message. Try a different technique when a Java process is attaching to itself. Reviewed-by: zgu, ohair, alanb ! src/windows/native/sun/tools/attach/WindowsVirtualMachine.c From assembling.signals at yandex.ru Fri Mar 18 17:01:17 2011 From: assembling.signals at yandex.ru (assembling signals) Date: Fri, 18 Mar 2011 18:01:17 +0100 Subject: Diamond operator no longer working... ? Message-ID: <678971300467677@web118.yandex.ru> Hello, community! I noticed a new error since b134: "Cannot use '<>' with anonymous inner classes". The code uses diamond syntax and was error-free before b134. (Please see reproducible example at the end.) Can someone explain: is this error even intended? If so, why this is necessary? If not, is it possible to revert to old behavior? (BTW: Latest Netbeans even allow to refactor anon-inner-classes to use diamond syntax.) Best regards, Ivan G Shevchenko = = = = = = = = = = EXAMPLE CODE: = = = = = = = = = = import java.util.*; public final class DiamondTestJdkBuild134 { public static void main(String... args) { // no error List l = new LinkedList<>(); // error: cannot infer type arguments for Iterator; // reason: cannot use '<>' with anonymous inner classes Iterator i = new Iterator<>() { @Override public boolean hasNext() { return false; } @Override public String next() { return null; } @Override public void remove() { throw new UnsupportedOperationException(); } }; } } From joe.darcy at oracle.com Fri Mar 18 19:08:06 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Fri, 18 Mar 2011 12:08:06 -0700 Subject: Diamond operator no longer working... ? In-Reply-To: <678971300467677@web118.yandex.ru> References: <678971300467677@web118.yandex.ru> Message-ID: <4D83AD96.5060209@oracle.com> On 3/18/2011 10:01 AM, assembling signals wrote: > Hello, community! > > I noticed a new error since b134: "Cannot use '<>' with anonymous inner classes". > The code uses diamond syntax and was error-free before b134. > (Please see reproducible example at the end.) > > Can someone explain: is this error even intended? > If so, why this is necessary? If not, is it possible to revert to old behavior? > > (BTW: Latest Netbeans even allow to refactor anon-inner-classes to use diamond syntax.) > > Best regards, > Ivan G Shevchenko > > > As described in the recently published Project Coin documentation for the developer preview [1], using diamond with anonymous inner class is specifically disallowed: > It is a compile-time error if a class instance creation expression > declares an anonymous class but uses "<>" in place of a class type > argument list. It is noted in the document that > (Note that javac in the JDK 7 developer preview erroneously accepts > diamond combined with non-generic classes and accepts some uses of > diamond with anonymous inner classes. These bugs will be corrected in > future builds.) The future has arrived in b134 :-) The discussion section of the feature has a brief rationale for this change: > Using diamond with anonymous inner classes is /not/ supported since > doing so in general would require extensions to the class file > signature attribute to represent non-denotable types, a de facto JVM > change. The public review draft of JSR 334 will have a more in-depth discussion. Cheers, -Joe [1] http://cr.openjdk.java.net/~darcy/ProjectCoin/ProjectCoin-Documentation-v0.83.html From lana.steuck at oracle.com Fri Mar 18 21:18:36 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:18:36 +0000 Subject: hg: jdk7/tl: 7 new changesets Message-ID: <20110318211837.212114728E@hg.openjdk.java.net> Changeset: a1c8b847b753 Author: ohrstrom Date: 2011-02-28 10:56 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/rev/a1c8b847b753 7021753: Add a build times report Summary: Report the build times at end of a jdkroot build. Reviewed-by: ohair ! Makefile ! make/Defs-internal.gmk ! make/corba-rules.gmk ! make/deploy-rules.gmk ! make/hotspot-rules.gmk ! make/install-rules.gmk ! make/jaxp-rules.gmk ! make/jaxws-rules.gmk ! make/jdk-rules.gmk ! make/langtools-rules.gmk ! make/sponsors-rules.gmk Changeset: 47ad81d343e8 Author: ohair Date: 2011-03-01 11:54 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/47ad81d343e8 7023111: Add webrev script to make/scripts Reviewed-by: darcy + make/scripts/webrev.ksh Changeset: 258b21c7f4af Author: ohair Date: 2011-03-01 11:54 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/258b21c7f4af Merge Changeset: 27384dd2d8ed Author: ohair Date: 2011-03-03 15:29 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/27384dd2d8ed Merge Changeset: c6f380693342 Author: ohair Date: 2011-03-09 16:26 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/c6f380693342 7026167: Broken fastdebug only build Reviewed-by: cl ! Makefile Changeset: ddc2fcb3682f Author: cl Date: 2011-03-10 17:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/rev/ddc2fcb3682f Added tag jdk7-b133 for changeset c6f380693342 ! .hgtags Changeset: 168d9382ebab Author: schien Date: 2011-03-17 14:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/rev/168d9382ebab Added tag jdk7-b134 for changeset ddc2fcb3682f ! .hgtags From lana.steuck at oracle.com Fri Mar 18 21:18:42 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:18:42 +0000 Subject: hg: jdk7/tl/jaxp: 6 new changesets Message-ID: <20110318211842.A5F5A4728F@hg.openjdk.java.net> Changeset: 2473f7027ac5 Author: cl Date: 2011-03-10 17:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/2473f7027ac5 Added tag jdk7-b133 for changeset 8e1148c7911b ! .hgtags Changeset: 02d4672e8c05 Author: lana Date: 2011-03-10 20:37 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/02d4672e8c05 Merge Changeset: e8be6b716643 Author: ohair Date: 2011-03-10 13:21 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/e8be6b716643 7025412: make381 issues with quotes in jdk/make/docs/Makefile and other places Reviewed-by: mchung ! make/Makefile Changeset: 1259c6d09d09 Author: mfang Date: 2011-03-14 12:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/1259c6d09d09 Merge Changeset: d56b326ae054 Author: ohair Date: 2011-03-15 15:31 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/d56b326ae054 Merge Changeset: 4aa9916693dc Author: schien Date: 2011-03-17 14:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/4aa9916693dc Added tag jdk7-b134 for changeset d56b326ae054 ! .hgtags From lana.steuck at oracle.com Fri Mar 18 21:18:40 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:18:40 +0000 Subject: hg: jdk7/tl/corba: 2 new changesets Message-ID: <20110318211843.06B3347290@hg.openjdk.java.net> Changeset: 918003855fa0 Author: cl Date: 2011-03-10 17:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/918003855fa0 Added tag jdk7-b133 for changeset 671fe2e623ff ! .hgtags Changeset: e0b72ae5dc5e Author: schien Date: 2011-03-17 14:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/corba/rev/e0b72ae5dc5e Added tag jdk7-b134 for changeset 918003855fa0 ! .hgtags From lana.steuck at oracle.com Fri Mar 18 21:18:44 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:18:44 +0000 Subject: hg: jdk7/tl/jaxws: 4 new changesets Message-ID: <20110318211844.F3FFF47291@hg.openjdk.java.net> Changeset: 8393aae2eb24 Author: cl Date: 2011-03-10 17:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/8393aae2eb24 Added tag jdk7-b133 for changeset 359d0c8c00a0 ! .hgtags Changeset: ba12732b1453 Author: ohair Date: 2011-03-10 13:22 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/ba12732b1453 7025412: make381 issues with quotes in jdk/make/docs/Makefile and other places Reviewed-by: mchung ! make/Makefile Changeset: 545de8303fec Author: mfang Date: 2011-03-14 12:33 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/545de8303fec Merge Changeset: d5fc61f18043 Author: schien Date: 2011-03-17 14:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/d5fc61f18043 Added tag jdk7-b134 for changeset 545de8303fec ! .hgtags From lana.steuck at oracle.com Fri Mar 18 21:19:02 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:19:02 +0000 Subject: hg: jdk7/tl/langtools: 7 new changesets Message-ID: <20110318211917.A99AC47292@hg.openjdk.java.net> Changeset: 0d056b7b93de Author: cl Date: 2011-03-10 17:11 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/0d056b7b93de Added tag jdk7-b133 for changeset e77e98f936e8 ! .hgtags Changeset: d7dfa105f159 Author: lana Date: 2011-03-10 20:51 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/d7dfa105f159 Merge - test/tools/javac/T6900037.java - test/tools/javac/T6900037.out - test/tools/javac/diags/examples/DiamondInvalidArg.java - test/tools/javac/diags/examples/DiamondInvalidArgs.java - test/tools/javac/generics/diamond/neg/Neg12.java - test/tools/javac/generics/diamond/neg/Neg12.out - test/tools/javac/multicatch/Neg05.java - test/tools/javac/multicatch/Neg05.out Changeset: 0f19e1e98b42 Author: mfang Date: 2011-03-08 23:43 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/0f19e1e98b42 7025324: NLS: t13y fix for 7022005 [ja,zh_CN] javadoc, part of navigation bar in generated html are not translated Reviewed-by: yhuang, ogino, jennyh ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties Changeset: 654336cabc5a Author: mfang Date: 2011-03-13 14:41 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/654336cabc5a Merge Changeset: 3d7acdbb72ca Author: ohair Date: 2011-03-15 15:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/3d7acdbb72ca Merge Changeset: 9d0a61ac567b Author: schien Date: 2011-03-17 14:33 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/9d0a61ac567b Added tag jdk7-b134 for changeset 3d7acdbb72ca ! .hgtags Changeset: e286ec0df754 Author: lana Date: 2011-03-18 11:00 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/e286ec0df754 Merge ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties From lana.steuck at oracle.com Fri Mar 18 21:18:58 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:18:58 +0000 Subject: hg: jdk7/tl/hotspot: 31 new changesets Message-ID: <20110318211959.4FBAC47293@hg.openjdk.java.net> Changeset: 70b50ac7e2af Author: cl Date: 2011-03-10 17:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/70b50ac7e2af Added tag jdk7-b133 for changeset 1b3a350709e4 ! .hgtags Changeset: f91db74a6810 Author: kamg Date: 2011-02-26 13:33 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f91db74a6810 7017640: Fix for 6766644 deadlocks on some NSK tests when running with -Xcomp Summary: Dynamic-code generated events should be deferred and processed by service thread Reviewed-by: dsamersoff, dcubed ! src/share/vm/prims/jvmtiExport.cpp ! src/share/vm/prims/jvmtiExport.hpp ! src/share/vm/prims/jvmtiImpl.cpp ! src/share/vm/prims/jvmtiImpl.hpp Changeset: da091bb67459 Author: sla Date: 2011-02-28 14:19 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/da091bb67459 7022037: Pause when exiting if debugger is attached on windows Reviewed-by: dsamersoff, kamg, hosterda ! src/os/linux/vm/os_linux.cpp ! src/os/posix/vm/os_posix.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/arguments.hpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.hpp ! src/share/vm/runtime/thread.cpp ! src/share/vm/utilities/vmError.cpp Changeset: c1a6154012c8 Author: kamg Date: 2011-02-28 16:01 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/c1a6154012c8 7020118: Alter frame assignability to allow for exception handler coverage of invokespecial Summary: Add special rule to allow assignment of frames with uninit flags set. Reviewed-by: never, coleenp ! src/share/vm/classfile/stackMapFrame.cpp ! src/share/vm/classfile/stackMapFrame.hpp ! src/share/vm/classfile/verificationType.hpp Changeset: 23ae54207126 Author: rottenha Date: 2011-02-28 15:35 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/23ae54207126 Merge ! src/os/solaris/vm/os_solaris.cpp ! src/share/vm/runtime/globals.hpp ! src/share/vm/runtime/java.cpp ! src/share/vm/runtime/os.hpp Changeset: cef8c988e7b8 Author: rottenha Date: 2011-02-28 22:35 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/cef8c988e7b8 Merge Changeset: 5584e20db481 Author: sla Date: 2011-03-02 09:41 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/5584e20db481 7023323: Build failure on VS2003: IsDebuggerPresent not found Summary: #define _WIN32_WINNT 0x500 Reviewed-by: ohrstrom, hosterda, coleenp ! src/os/windows/vm/os_windows.cpp Changeset: 4a9604cd7c5f Author: kamg Date: 2011-03-02 08:18 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/4a9604cd7c5f 6878713: Verifier heap corruption, relating to backward jsrs Summary: Added overflow detection in arena Amalloc methods Reviewed-by: coleenp, phh ! src/share/vm/memory/allocation.cpp ! src/share/vm/memory/allocation.hpp ! src/share/vm/utilities/globalDefinitions_gcc.hpp ! src/share/vm/utilities/globalDefinitions_sparcWorks.hpp ! src/share/vm/utilities/globalDefinitions_visCPP.hpp + test/runtime/6878713/Test6878713.sh + test/runtime/6878713/testcase.jar Changeset: 99bd05619fa4 Author: zgu Date: 2011-03-02 09:16 -0500 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/99bd05619fa4 7017110: Add /SAFESEH to links on windows 32bit to verify safe exceptions Summary: Ensure safe exception handler table is generated on Win32 binaries when compile with VS2010 Reviewed-by: acorn, coleenp, dcubed, sla, ohair ! make/windows/makefiles/compile.make ! make/windows/makefiles/launcher.make Changeset: a3c0ec0428a2 Author: zgu Date: 2011-03-02 16:21 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a3c0ec0428a2 Merge Changeset: 8c0d0510d36f Author: dcubed Date: 2011-03-03 09:31 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/8c0d0510d36f Merge Changeset: 4e0069ff33df Author: johnc Date: 2011-02-28 09:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/4e0069ff33df 7022200: G1: optimized build broken Summary: Make the G1 specific version of is_in_closed_subset() available in all builds. Reviewed-by: tonyp, jcoomes ! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp ! src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp Changeset: 11303bede852 Author: jcoomes Date: 2011-03-03 21:02 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/11303bede852 Merge Changeset: d89a22843c62 Author: iveresov Date: 2011-02-22 15:25 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/d89a22843c62 7020521: arraycopy stubs place prebarriers incorrectly Summary: Rearranged the pre-barrier placement in arraycopy stubs so that they are properly called in case of chained calls. Also refactored the code a little bit so that it looks uniform across the platforms and is more readable. Reviewed-by: never, kvn ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/x86/vm/stubGenerator_x86_32.cpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp Changeset: d5a078cf7f39 Author: iveresov Date: 2011-02-22 18:13 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/d5a078cf7f39 Merge Changeset: ba5d119730dd Author: kvn Date: 2011-02-23 12:28 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/ba5d119730dd Merge Changeset: d411927672ed Author: never Date: 2011-02-23 19:09 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/d411927672ed 7012072: CompileTheWorld causes incorrect class initialization Reviewed-by: kvn, twisti ! src/share/vm/prims/unsafe.cpp Changeset: 5a41a201d08c Author: kvn Date: 2011-02-24 10:28 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/5a41a201d08c 6812217: Base memory of MergeMem node violates assert during killing expanded AllocateArray node Summary: The assert in MergeMemNode::memory_at() misses the case when address is TOP. Reviewed-by: never ! src/share/vm/opto/memnode.cpp Changeset: 6f3746e69a78 Author: never Date: 2011-02-24 11:09 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/6f3746e69a78 7021603: crash in fill_sync_handler with ExtendedDTrace probes Reviewed-by: iveresov ! src/share/vm/c1/c1_GraphBuilder.cpp Changeset: 8190d4b75e09 Author: never Date: 2011-02-24 14:49 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/8190d4b75e09 Merge Changeset: 41d4973cf100 Author: kvn Date: 2011-02-26 12:10 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/41d4973cf100 6942326: x86 code in string_indexof() could read beyond reserved heap space Summary: copy small (<8) strings on stack if str+16 crosses a page boundary and load from stack into XMM. Back up pointer when loading string's tail. Reviewed-by: never ! src/cpu/x86/vm/assembler_x86.cpp ! src/cpu/x86/vm/assembler_x86.hpp ! src/cpu/x86/vm/x86_32.ad ! src/cpu/x86/vm/x86_64.ad ! src/share/vm/opto/library_call.cpp ! src/share/vm/opto/memnode.cpp + test/compiler/6942326/Test.java Changeset: 1b4e6a5d98e0 Author: twisti Date: 2011-02-28 06:07 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/1b4e6a5d98e0 7012914: JSR 292 MethodHandlesTest C1: frame::verify_return_pc(return_address) failed: must be a return pc Reviewed-by: never, bdelsart ! src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp ! src/cpu/sparc/vm/c1_Runtime1_sparc.cpp ! src/cpu/sparc/vm/methodHandles_sparc.cpp ! src/cpu/x86/vm/c1_LIRAssembler_x86.cpp ! src/cpu/x86/vm/c1_Runtime1_x86.cpp ! src/cpu/x86/vm/methodHandles_x86.cpp ! src/cpu/x86/vm/stubGenerator_x86_32.cpp ! src/share/vm/c1/c1_Runtime1.cpp ! src/share/vm/c1/c1_Runtime1.hpp ! src/share/vm/code/nmethod.cpp ! src/share/vm/code/nmethod.hpp ! src/share/vm/runtime/sharedRuntime.cpp ! src/share/vm/utilities/macros.hpp Changeset: 50c0f22d6d0e Author: never Date: 2011-02-28 17:12 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/50c0f22d6d0e 7023229: extraneous include of precompiled.hpp in hsdis.c Reviewed-by: never, jrose Contributed-by: volker.simonis at gmail.com ! src/share/tools/hsdis/hsdis-demo.c ! src/share/tools/hsdis/hsdis.c Changeset: bc6b27fb3568 Author: never Date: 2011-03-01 10:27 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/bc6b27fb3568 6725983: Assertion "method->method_holder())->is_not_initialized(),"method holder must be initialized" Reviewed-by: kvn, iveresov ! src/share/vm/classfile/classLoader.cpp ! src/share/vm/runtime/globals.hpp Changeset: 0ac769a57c64 Author: iveresov Date: 2011-03-01 14:56 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/0ac769a57c64 6627983: G1: Bad oop deference during marking Summary: Bulk zeroing reduction didn't work with G1, because arraycopy would call pre-barriers on uninitialized oops. The solution is to have version of arraycopy stubs that don't have pre-barriers. Also refactored arraycopy stubs generation on SPARC to be more readable and reduced the number of stubs necessary in some cases. Reviewed-by: jrose, kvn, never ! src/cpu/sparc/vm/stubGenerator_sparc.cpp ! src/cpu/x86/vm/stubGenerator_x86_32.cpp ! src/cpu/x86/vm/stubGenerator_x86_64.cpp ! src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.hpp ! src/share/vm/memory/barrierSet.cpp ! src/share/vm/memory/barrierSet.hpp ! src/share/vm/opto/library_call.cpp ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/stubRoutines.cpp ! src/share/vm/runtime/stubRoutines.hpp Changeset: 8c9c9ee30d71 Author: kvn Date: 2011-03-03 23:31 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/8c9c9ee30d71 Merge ! src/share/vm/runtime/arguments.cpp ! src/share/vm/runtime/globals.hpp Changeset: 3e2b59ab2d07 Author: trims Date: 2011-03-04 14:06 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/3e2b59ab2d07 Merge Changeset: 3c76374706ea Author: trims Date: 2011-03-04 14:06 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/3c76374706ea 7024814: Bump the HS21 build number to 04 Summary: Update the HS21 build number to 04 Reviewed-by: jcoomes ! make/hotspot_version Changeset: 447e6faab4a8 Author: trims Date: 2011-03-11 11:18 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/447e6faab4a8 Merge Changeset: 2707f76d15e3 Author: schien Date: 2011-03-17 14:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/2707f76d15e3 Added tag jdk7-b134 for changeset 447e6faab4a8 ! .hgtags Changeset: fc1b183bfc0a Author: trims Date: 2011-03-17 17:25 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fc1b183bfc0a Added tag hs21-b04 for changeset 3c76374706ea ! .hgtags From lana.steuck at oracle.com Fri Mar 18 21:19:20 2011 From: lana.steuck at oracle.com (lana.steuck at oracle.com) Date: Fri, 18 Mar 2011 21:19:20 +0000 Subject: hg: jdk7/tl/jdk: 7 new changesets Message-ID: <20110318212031.4163D47294@hg.openjdk.java.net> Changeset: 3de1fed4b9ec Author: ohair Date: 2011-03-15 15:21 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3de1fed4b9ec 6710813: SwingSet2 source display tabs do not work since JDK 7 b20 6685150: make/mkdemo/jpda/Makefile creates jpda.jar and src.zip instead of examples.jar Reviewed-by: prr ! make/common/Demo.gmk ! make/mkdemo/jfc/SwingSet2/Makefile ! make/mkdemo/jpda/Makefile Changeset: f5ecfc9e274c Author: ohair Date: 2011-03-15 23:46 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f5ecfc9e274c Merge - src/share/classes/sun/misc/BootClassLoaderHook.java - src/share/classes/sun/misc/JavaSecurityCodeSignerAccess.java - test/sun/misc/BootClassLoaderHook/TestHook.java Changeset: d6c6d9566126 Author: katleman Date: 2011-03-16 09:30 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d6c6d9566126 6973319: incorrect spec version in jdk 7 rt.jar manifest Reviewed-by: ohair ! make/tools/manifest.mf Changeset: 76a2ea69f47f Author: katleman Date: 2011-03-16 09:42 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/76a2ea69f47f 7022473: JDK7 still runs /etc/prtconf to find memory size Reviewed-by: ohair ! make/common/shared/Platform.gmk Changeset: 554adcfb615e Author: ohair Date: 2011-03-16 15:01 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/554adcfb615e 7027923: Disable VS2003 use in preparation for all VS2003 make logic removal Reviewed-by: prr ! make/common/shared/Compiler-msvc.gmk Changeset: 0653cab602f2 Author: schien Date: 2011-03-17 14:33 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0653cab602f2 Added tag jdk7-b134 for changeset 554adcfb615e ! .hgtags Changeset: 4085d44dc7df Author: lana Date: 2011-03-18 10:59 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4085d44dc7df Merge ! make/common/shared/Platform.gmk From forax at univ-mlv.fr Fri Mar 18 22:39:59 2011 From: forax at univ-mlv.fr (=?ISO-8859-1?Q?R=E9mi_Forax?=) Date: Fri, 18 Mar 2011 23:39:59 +0100 Subject: Diamond operator no longer working... ? In-Reply-To: <678971300467677@web118.yandex.ru> References: <678971300467677@web118.yandex.ru> Message-ID: <4D83DF3F.1000205@univ-mlv.fr> On 03/18/2011 06:01 PM, assembling signals wrote: > Hello, community! Hello Ivan, > I noticed a new error since b134: "Cannot use '<>' with anonymous inner classes". > The code uses diamond syntax and was error-free before b134. > (Please see reproducible example at the end.) > > Can someone explain: is this error even intended? Yes. see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7020044 > If so, why this is necessary? Quote from JSR334 (coin) EDR: Using diamond with anonymous inner classes is /not/ supported since doing so would require extensions to the class file signature attribute, a de facto JVM change. > If not, is it possible to revert to old behavior? No > (BTW: Latest Netbeans even allow to refactor anon-inner-classes to use diamond syntax.) > > Best regards, > Ivan G Shevchenko R?mi From kumar.x.srinivasan at oracle.com Sun Mar 20 15:42:15 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Sun, 20 Mar 2011 15:42:15 +0000 Subject: hg: jdk7/tl/jdk: 7026184: (launcher) Regression: class with unicode name can't be launched by java. Message-ID: <20110320154245.1C0E047310@hg.openjdk.java.net> Changeset: 90f84ecff75c Author: ksrini Date: 2011-03-20 08:41 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/90f84ecff75c 7026184: (launcher) Regression: class with unicode name can't be launched by java. Reviewed-by: mchung, sherman ! src/share/bin/java.c ! src/share/classes/sun/launcher/LauncherHelper.java From alan.bateman at oracle.com Sun Mar 20 19:48:11 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Sun, 20 Mar 2011 19:48:11 +0000 Subject: hg: jdk7/tl/jdk: 3 new changesets Message-ID: <20110320194841.269B44731A@hg.openjdk.java.net> Changeset: 0fdc4553f79f Author: alanb Date: 2011-03-18 19:46 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/0fdc4553f79f 7028468: (fs) FileSystems.getDefault() fails when kernel micro version contains/ends non-numeric characters Reviewed-by: forax, chegar ! src/solaris/classes/sun/nio/fs/LinuxFileSystem.java Changeset: 8d53286f1fe7 Author: alanb Date: 2011-03-19 14:21 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8d53286f1fe7 7017446: (fs) Updates to file system API (3/2011) Reviewed-by: sherman ! src/share/classes/java/nio/file/Files.java ! src/share/classes/java/nio/file/Path.java ! src/share/classes/java/nio/file/WatchKey.java ! src/share/classes/java/nio/file/attribute/FileTime.java ! src/share/classes/java/nio/file/spi/FileSystemProvider.java ! src/share/classes/sun/nio/fs/AbstractAclFileAttributeView.java ! src/share/classes/sun/nio/fs/AbstractBasicFileAttributeView.java ! src/share/classes/sun/nio/fs/AbstractFileSystemProvider.java ! src/share/classes/sun/nio/fs/AbstractUserDefinedFileAttributeView.java ! src/share/classes/sun/nio/fs/AbstractWatchKey.java ! src/share/classes/sun/nio/fs/FileOwnerAttributeViewImpl.java ! src/share/classes/sun/nio/fs/Util.java ! src/share/sample/nio/file/WatchDir.java ! src/solaris/classes/sun/nio/fs/LinuxDosFileAttributeView.java ! src/solaris/classes/sun/nio/fs/UnixFileAttributeViews.java ! src/solaris/classes/sun/nio/fs/UnixPath.java ! src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java ! src/windows/classes/sun/nio/fs/WindowsPath.java ! test/java/nio/file/Files/FileAttributes.java ! test/java/nio/file/WatchService/Basic.java ! test/java/nio/file/attribute/UserDefinedFileAttributeView/Basic.java Changeset: be5a4198c468 Author: alanb Date: 2011-03-20 19:39 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/be5a4198c468 Merge From mike.duigou at oracle.com Mon Mar 21 18:49:59 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Mon, 21 Mar 2011 18:49:59 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110321185018.6AD934734C@hg.openjdk.java.net> Changeset: e74e7991ba1d Author: mduigou Date: 2011-03-21 11:31 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e74e7991ba1d 7029491: fix broken test file committed with CR 5045147. Summary: an incorrect file was committed with CR 5045147. This commit corrects that error and also applies minor review suggestions. Reviewed-by: alanb ! test/java/util/TreeMap/EmptyMapAndNulls.java < test/java/util/TreeMap/cr5045147.java Changeset: 1d0039aea814 Author: mduigou Date: 2011-03-21 11:49 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1d0039aea814 Merge From mike.duigou at oracle.com Mon Mar 21 23:29:22 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Mon, 21 Mar 2011 16:29:22 -0700 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() In-Reply-To: <4D82988E.1050408@oracle.com> References: <4D82988E.1050408@oracle.com> Message-ID: I've updated the patch to avoid the second read-volatile by having the acquire* methods return a result. Method already used that approach. I am less certain about tackling additional improvements to the caching in this patch. In part because I suspect that the usage patterns for Method.invoke(), Constructor.newInstance() and Field.get*() are different and I don't have any metrics which I can reference to say which is the appropriate strategy for each. My suspicion is the usage pattern for Field differs significantly from Constructor and Method which are likely more similar. If anyone can contribute usage pattern experiences or practical insights into how these are then we can come up with appropriate solutions. The update webrev : http://cr.openjdk.java.net/~mduigou/6565585/1/webrev/ Mike On Mar 17 2011, at 16:26 , Brian Goetz wrote: > You might consider storing the cached item in checkAccess() in a ThreadLocal instead of a static. Not only would this eliminate the volatile accesses, but it reduces the chance of a "miss" in this one-element cache, since it will then be impervious to interleavings where other threads might use reflection. (The purpose of the cache is to speed up the case when some code is grinding through all the members of a Class; it is unlikely that there would be many hits in this cache across threads anyway.) Obviously this is a tradeoff of memory utilization for reduced synchronization traffic + higher cache hit rate + more predictable reflection performance under concurrent load. > > You can eliminate the second read-volatile by having acquireMethodAccessor return the MA instead of re-reading the volatile. > > On 3/17/2011 7:04 PM, Mike Duigou wrote: >> Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ >> >> Mike >> >> On Mar 17 2011, at 15:07 , Mike Duigou wrote: >> >>> Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. >>> >>> Speedups from this change are uniformly 2x or better. >>> >>> The proposed improvement and patch was originated by John Rose. >>> >>> Thanks, >>> >>> Mike >> From xuelei.fan at oracle.com Tue Mar 22 05:02:52 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Tue, 22 Mar 2011 05:02:52 +0000 Subject: hg: jdk7/tl/jdk: 7027797: take care of ECDH_anon/DH_anon server key exchange for TLS 1.2 Message-ID: <20110322050318.A32FA4736A@hg.openjdk.java.net> Changeset: ef5bbbe0dd75 Author: xuelei Date: 2011-03-21 22:02 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ef5bbbe0dd75 7027797: take care of ECDH_anon/DH_anon server key exchange for TLS 1.2 Summary: the signature of server key exanage message could be null Reviewed-by: vinnie ! src/share/classes/sun/security/ssl/HandshakeMessage.java ! test/sun/security/ec/TestEC.java ! test/sun/security/pkcs11/fips/CipherTest.java ! test/sun/security/pkcs11/sslecc/CipherTest.java ! test/sun/security/ssl/sanity/interop/CipherTest.java ! test/sun/security/ssl/sanity/interop/ClientJSSEServerJSSE.java From Alan.Bateman at oracle.com Tue Mar 22 09:38:12 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 22 Mar 2011 09:38:12 +0000 Subject: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() In-Reply-To: References: <4D82988E.1050408@oracle.com> Message-ID: <4D886E04.1030002@oracle.com> Mike Duigou wrote: > I've updated the patch to avoid the second read-volatile by having the acquire* methods return a result. Method already used that approach. > > I am less certain about tackling additional improvements to the caching in this patch. In part because I suspect that the usage patterns for Method.invoke(), Constructor.newInstance() and Field.get*() are different and I don't have any metrics which I can reference to say which is the appropriate strategy for each. My suspicion is the usage pattern for Field differs significantly from Constructor and Method which are likely more similar. If anyone can contribute usage pattern experiences or practical insights into how these are then we can come up with appropriate solutions. > > The update webrev : http://cr.openjdk.java.net/~mduigou/6565585/1/webrev/ > > Mike > I think the changes look good and are low risk. Given that jdk7 is nearly done then it may be best to just push what you have and create another bug to track other suggestions, including Brian's idea to use a thread local cache. -Alan From kelly.ohair at oracle.com Tue Mar 22 18:09:37 2011 From: kelly.ohair at oracle.com (kelly.ohair at oracle.com) Date: Tue, 22 Mar 2011 18:09:37 +0000 Subject: hg: jdk7/tl/jdk: 6737397: Should support running JCK test suite with test/Makefile and JPRT Message-ID: <20110322180947.3AF0547399@hg.openjdk.java.net> Changeset: 870f7c3f0b61 Author: ohair Date: 2011-03-22 11:08 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/870f7c3f0b61 6737397: Should support running JCK test suite with test/Makefile and JPRT Reviewed-by: alanb ! make/jprt.properties ! test/Makefile ! test/ProblemList.txt From kelly.ohair at oracle.com Tue Mar 22 18:12:26 2011 From: kelly.ohair at oracle.com (kelly.ohair at oracle.com) Date: Tue, 22 Mar 2011 18:12:26 +0000 Subject: hg: jdk7/tl: 6737397: Should support running JCK test suite with test/Makefile and JPRT Message-ID: <20110322181226.3A0794739A@hg.openjdk.java.net> Changeset: 970c0898ded2 Author: ohair Date: 2011-03-22 11:07 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/rev/970c0898ded2 6737397: Should support running JCK test suite with test/Makefile and JPRT Reviewed-by: alanb ! make/jprt.properties ! test/Makefile From gkorland at gmail.com Tue Mar 22 19:42:14 2011 From: gkorland at gmail.com (Guy Korland) Date: Tue, 22 Mar 2011 21:42:14 +0200 Subject: core-libs-dev Digest, Vol 47, Issue 35 In-Reply-To: References: Message-ID: It seems like a great improvement that can help many frameworks. Is there any plan to port the fix to JDK6? Thanks, Guy ________________________________________________________________________________ Date: Mon, 21 Mar 2011 16:29:22 -0700 From: Mike Duigou Subject: Re: Review Request -- CR6565585: Performance improvements to Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() To: Brian Goetz Cc: core-libs-dev at openjdk.java.net Message-ID: Content-Type: text/plain; charset=us-ascii I've updated the patch to avoid the second read-volatile by having the acquire* methods return a result. Method already used that approach. I am less certain about tackling additional improvements to the caching in this patch. In part because I suspect that the usage patterns for Method.invoke(), Constructor.newInstance() and Field.get*() are different and I don't have any metrics which I can reference to say which is the appropriate strategy for each. My suspicion is the usage pattern for Field differs significantly from Constructor and Method which are likely more similar. If anyone can contribute usage pattern experiences or practical insights into how these are then we can come up with appropriate solutions. The update webrev : http://cr.openjdk.java.net/~mduigou/6565585/1/webrev/ Mike On Mar 17 2011, at 16:26 , Brian Goetz wrote: > You might consider storing the cached item in checkAccess() in a ThreadLocal instead of a static. Not only would this eliminate the volatile accesses, but it reduces the chance of a "miss" in this one-element cache, since it will then be impervious to interleavings where other threads might use reflection. (The purpose of the cache is to speed up the case when some code is grinding through all the members of a Class; it is unlikely that there would be many hits in this cache across threads anyway.) Obviously this is a tradeoff of memory utilization for reduced synchronization traffic + higher cache hit rate + more predictable reflection performance under concurrent load. > > You can eliminate the second read-volatile by having acquireMethodAccessor return the MA instead of re-reading the volatile. > > On 3/17/2011 7:04 PM, Mike Duigou wrote: >> Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ >> >> Mike >> >> On Mar 17 2011, at 15:07 , Mike Duigou wrote: >> >>> Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. >>> >>> Speedups from this change are uniformly 2x or better. >>> >>> The proposed improvement and patch was originated by John Rose. >>> >>> Thanks, >>> >>> Mike >> From mike.duigou at oracle.com Tue Mar 22 20:12:20 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Tue, 22 Mar 2011 13:12:20 -0700 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc Message-ID: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> Hello all; I have made a couple of styling improvements to the JavaDoc for SortedMap; principally conversion of an inline list to use the HTML
    tag. The remainder of the changes are updates to the standard javadoc tags. http://cr.openjdk.java.net/~mduigou/7029997/0/webrev/ Thanks, Mike From mike.duigou at oracle.com Tue Mar 22 20:26:43 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Tue, 22 Mar 2011 13:26:43 -0700 Subject: core-libs-dev Digest, Vol 47, Issue 35 In-Reply-To: References: Message-ID: I am not aware of any current plans to backport this improvement to JDK6. For performance related patches the normal backporting path is for their the patch to be ported by the Oracle Java performance team or by the Java for Business team to fulfill a licensee support request. Development efforts are focused on Java 7 and future releases. If you are a JFB licensee and believe this fix is important to your application performance then I would encourage you to make a support request. Per my comments with the second review webrev I'm also curious about the specific cases where you think this patch would be particularly useful. Also, any insights you can share about the usage characteristics you are familiar with for Method.invoke(), Constructor.newInstance() and Field.get*() that might suggest appropriate additional improvements. Thanks, Mike On Mar 22 2011, at 12:42 , Guy Korland wrote: > It seems like a great improvement that can help many frameworks. > Is there any plan to port the fix to JDK6? > > Thanks, > Guy > > ________________________________________________________________________________ > Date: Mon, 21 Mar 2011 16:29:22 -0700 > From: Mike Duigou > Subject: Re: Review Request -- CR6565585: Performance improvements to > Method.invoke(), Contrstuctor.newInstance() and > Field.getFieldAccessor() > To: Brian Goetz > Cc: core-libs-dev at openjdk.java.net > Message-ID: > Content-Type: text/plain; charset=us-ascii > > I've updated the patch to avoid the second read-volatile by having the acquire* methods return a result. Method already used that approach. > > I am less certain about tackling additional improvements to the caching in this patch. In part because I suspect that the usage patterns for Method.invoke(), Constructor.newInstance() and Field.get*() are different and I don't have any metrics which I can reference to say which is the appropriate strategy for each. My suspicion is the usage pattern for Field differs significantly from Constructor and Method which are likely more similar. If anyone can contribute usage pattern experiences or practical insights into how these are then we can come up with appropriate solutions. > > The update webrev : http://cr.openjdk.java.net/~mduigou/6565585/1/webrev/ > > Mike > > On Mar 17 2011, at 16:26 , Brian Goetz wrote: > > > You might consider storing the cached item in checkAccess() in a ThreadLocal instead of a static. Not only would this eliminate the volatile accesses, but it reduces the chance of a "miss" in this one-element cache, since it will then be impervious to interleavings where other threads might use reflection. (The purpose of the cache is to speed up the case when some code is grinding through all the members of a Class; it is unlikely that there would be many hits in this cache across threads anyway.) Obviously this is a tradeoff of memory utilization for reduced synchronization traffic + higher cache hit rate + more predictable reflection performance under concurrent load. > > > > You can eliminate the second read-volatile by having acquireMethodAccessor return the MA instead of re-reading the volatile. > > > > On 3/17/2011 7:04 PM, Mike Duigou wrote: > >> Sorry folks--the webrev url: http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ > >> > >> Mike > >> > >> On Mar 17 2011, at 15:07 , Mike Duigou wrote: > >> > >>> Method.invoke(), Contrstuctor.newInstance() and Field.getFieldAccessor() all have a needless critical section, causing large slowdowns. This patch a replaces the synchronizations by volatile references. Finally, the changes remove a doubled reference to another volatile variable. This also simplifies the generated code by commoning up the corresponding load instruction used in the fast execution path. > >>> > >>> Speedups from this change are uniformly 2x or better. > >>> > >>> The proposed improvement and patch was originated by John Rose. > >>> > >>> Thanks, > >>> > >>> Mike > >> > From joe.darcy at oracle.com Tue Mar 22 20:30:18 2011 From: joe.darcy at oracle.com (Joe Darcy) Date: Tue, 22 Mar 2011 13:30:18 -0700 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc In-Reply-To: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> References: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> Message-ID: <4D8906DA.8000802@oracle.com> Looks good; approved, -Joe On 3/22/2011 1:12 PM, Mike Duigou wrote: > Hello all; > > I have made a couple of styling improvements to the JavaDoc for SortedMap; principally conversion of an inline list to use the HTML
      tag. The remainder of the changes are updates to the standard javadoc tags. > > http://cr.openjdk.java.net/~mduigou/7029997/0/webrev/ > > Thanks, > > Mike > > From gkorland at gmail.com Tue Mar 22 20:47:21 2011 From: gkorland at gmail.com (Guy Korland) Date: Tue, 22 Mar 2011 22:47:21 +0200 Subject: core-libs-dev Digest, Vol 47, Issue 35 In-Reply-To: References: Message-ID: For the method.invoke most of the usage I see is in RPC (RMI and etc.) and a very common case of annotation based AOP (which is very common when using frameworks like Spring). Guy On Tue, Mar 22, 2011 at 10:26 PM, Mike Duigou wrote: > I am not aware of any current plans to backport this improvement to JDK6. > For performance related patches the normal backporting path is for their the > patch to be ported by the Oracle Java performance team or by the Java for > Business team to fulfill a licensee support request. Development efforts are > focused on Java 7 and future releases. If you are a JFB licensee and believe > this fix is important to your application performance then I would encourage > you to make a support request. > > Per my comments with the second review webrev I'm also curious about the > specific cases where you think this patch would be particularly useful. > Also, any insights you can share about the usage characteristics you are > familiar with for Method.invoke(), Constructor.newInstance() and > Field.get*() that might suggest appropriate additional improvements. > > Thanks, > > Mike > > On Mar 22 2011, at 12:42 , Guy Korland wrote: > > > It seems like a great improvement that can help many frameworks. > > Is there any plan to port the fix to JDK6? > > > > Thanks, > > Guy > > > > > ________________________________________________________________________________ > > Date: Mon, 21 Mar 2011 16:29:22 -0700 > > From: Mike Duigou > > Subject: Re: Review Request -- CR6565585: Performance improvements to > > Method.invoke(), Contrstuctor.newInstance() and > > Field.getFieldAccessor() > > To: Brian Goetz > > Cc: core-libs-dev at openjdk.java.net > > Message-ID: > > Content-Type: text/plain; charset=us-ascii > > > > I've updated the patch to avoid the second read-volatile by having the > acquire* methods return a result. Method already used that approach. > > > > I am less certain about tackling additional improvements to the caching > in this patch. In part because I suspect that the usage patterns for > Method.invoke(), Constructor.newInstance() and Field.get*() are different > and I don't have any metrics which I can reference to say which is the > appropriate strategy for each. My suspicion is the usage pattern for Field > differs significantly from Constructor and Method which are likely more > similar. If anyone can contribute usage pattern experiences or practical > insights into how these are then we can come up with appropriate solutions. > > > > The update webrev : > http://cr.openjdk.java.net/~mduigou/6565585/1/webrev/ > > > > Mike > > > > On Mar 17 2011, at 16:26 , Brian Goetz wrote: > > > > > You might consider storing the cached item in checkAccess() in a > ThreadLocal instead of a static. Not only would this eliminate the volatile > accesses, but it reduces the chance of a "miss" in this one-element cache, > since it will then be impervious to interleavings where other threads might > use reflection. (The purpose of the cache is to speed up the case when some > code is grinding through all the members of a Class; it is unlikely that > there would be many hits in this cache across threads anyway.) Obviously > this is a tradeoff of memory utilization for reduced synchronization traffic > + higher cache hit rate + more predictable reflection performance under > concurrent load. > > > > > > You can eliminate the second read-volatile by having > acquireMethodAccessor return the MA instead of re-reading the volatile. > > > > > > On 3/17/2011 7:04 PM, Mike Duigou wrote: > > >> Sorry folks--the webrev url: > http://cr.openjdk.java.net/~mduigou/6565585/0/webrev/ > > >> > > >> Mike > > >> > > >> On Mar 17 2011, at 15:07 , Mike Duigou wrote: > > >> > > >>> Method.invoke(), Contrstuctor.newInstance() and > Field.getFieldAccessor() all have a needless critical section, causing large > slowdowns. This patch a replaces the synchronizations by volatile > references. Finally, the changes remove a doubled reference to another > volatile variable. This also simplifies the generated code by commoning up > the corresponding load instruction used in the fast execution path. > > >>> > > >>> Speedups from this change are uniformly 2x or better. > > >>> > > >>> The proposed improvement and patch was originated by John Rose. > > >>> > > >>> Thanks, > > >>> > > >>> Mike > > >> > > > > From david.holmes at oracle.com Tue Mar 22 22:57:47 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Tue, 22 Mar 2011 22:57:47 +0000 Subject: hg: jdk7/tl/jdk: 7025066: Build systems changes to support SE Embedded Integration Message-ID: <20110322225756.EA2E4473A7@hg.openjdk.java.net> Changeset: fe232d7e4ff1 Author: dholmes Date: 2011-03-22 18:56 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/fe232d7e4ff1 7025066: Build systems changes to support SE Embedded Integration Summary: Define Embedded specific files and include them in the main files. Allow finer control over some build options. Reviewed-by: ohair, bobv, collins + make/common/Defs-embedded.gmk ! make/common/Defs.gmk ! make/common/Library.gmk + make/common/Release-embedded.gmk ! make/common/Release.gmk ! make/common/shared/Sanity-Settings.gmk ! make/java/zip/Makefile ! make/sun/nio/cs/Makefile ! src/share/classes/sun/misc/Version.java.template From chris.hegarty at oracle.com Tue Mar 22 23:12:55 2011 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Tue, 22 Mar 2011 23:12:55 +0000 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc In-Reply-To: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> References: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> Message-ID: <4D892CF7.5010907@oracle.com> The changes look good. I have two minor comment: 1) "ranges.Such" typo, missing space after dot 2) "Though nothing enforces this recommendation as interfaces cannot declare constructors". I'd tend to move this statement to before the list, and maybe put it in parantheses after constructors. Also my personal preference is to stay with "there is no way to" rather than "nothing". That would look like:

      All general-purpose sorted map implementation classes should provide four "standard" constructors (though there is no way to enforce this ...): This is just my personal preference. I'm ok with your changes as is. -Chris. On 03/22/11 08:12 PM, Mike Duigou wrote: > Hello all; > > I have made a couple of styling improvements to the JavaDoc for SortedMap; principally conversion of an inline list to use the HTML

        tag. The remainder of the changes are updates to the standard javadoc tags. > > http://cr.openjdk.java.net/~mduigou/7029997/0/webrev/ > > Thanks, > > Mike > > From mike.duigou at oracle.com Tue Mar 22 23:33:03 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Tue, 22 Mar 2011 16:33:03 -0700 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc In-Reply-To: <4D892CF7.5010907@oracle.com> References: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> <4D892CF7.5010907@oracle.com> Message-ID: <252EE932-691D-4123-AD49-4CBCDD067DEB@oracle.com> Thanks for the feedback. On Mar 22 2011, at 16:12 , Chris Hegarty wrote: > The changes look good. > > I have two minor comment: > > 1) "ranges.Such" typo, missing space after dot corrected. > > 2) "Though nothing enforces this recommendation as interfaces cannot > declare constructors". I'd tend to move this statement to before > the list, and maybe put it in parantheses after constructors. > Also my personal preference is to stay with "there is no way to" > rather than "nothing". That would look like: > >

        All general-purpose sorted map implementation classes should > provide four "standard" constructors (though there is no way to > enforce this ...): > > This is just my personal preference. I'm ok with your changes as is. How about this version : *

        All general-purpose sorted map implementation classes should provide four * "standard" constructors. It is not possible to enforce this recommendation * though as required constructors cannot be specified by interfaces. The * expected "standard" constructors for all sorted map implementations are: *

          > -Chris. > > On 03/22/11 08:12 PM, Mike Duigou wrote: >> Hello all; >> >> I have made a couple of styling improvements to the JavaDoc for SortedMap; principally conversion of an inline list to use the HTML
            tag. The remainder of the changes are updates to the standard javadoc tags. >> >> http://cr.openjdk.java.net/~mduigou/7029997/0/webrev/ >> >> Thanks, >> >> Mike >> >> From joe.darcy at oracle.com Wed Mar 23 01:27:10 2011 From: joe.darcy at oracle.com (Joe Darcy) Date: Tue, 22 Mar 2011 18:27:10 -0700 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc In-Reply-To: <252EE932-691D-4123-AD49-4CBCDD067DEB@oracle.com> References: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> <4D892CF7.5010907@oracle.com> <252EE932-691D-4123-AD49-4CBCDD067DEB@oracle.com> Message-ID: <4D894C6E.80403@oracle.com> On 3/22/2011 4:33 PM, Mike Duigou wrote: [snip] >> 2) "Though nothing enforces this recommendation as interfaces cannot >> declare constructors". I'd tend to move this statement to before >> the list, and maybe put it in parantheses after constructors. >> Also my personal preference is to stay with "there is no way to" >> rather than "nothing". That would look like: >> >>

            All general-purpose sorted map implementation classes should >> provide four "standard" constructors (though there is no way to >> enforce this ...): >> >> This is just my personal preference. I'm ok with your changes as is. > How about this version : > > *

            All general-purpose sorted map implementation classes should provide four > * "standard" constructors. It is not possible to enforce this recommendation > * though as required constructors cannot be specified by interfaces. The > * expected "standard" constructors for all sorted map implementations are: > *

              > FWIW, while the requirement for a particular suite of constructors isn't enforceable via the type system, it is the sort of extra-linguistic check that could be written as a annotation processor and provided during a compile to enforce the constraint. -Joe From bhavesh.patel at sun.com Wed Mar 23 01:34:24 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Wed, 23 Mar 2011 01:34:24 +0000 Subject: hg: jdk7/tl/langtools: 7025314: NLS: translatability violation on standard.properties Message-ID: <20110323013426.44C65473BC@hg.openjdk.java.net> Changeset: 148d3dc4e1e1 Author: bpatel Date: 2011-03-22 18:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/148d3dc4e1e1 7025314: NLS: translatability violation on standard.properties Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties ! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css ! test/com/sun/javadoc/testJavascript/TestJavascript.java ! test/com/sun/javadoc/testNavagation/TestNavagation.java ! test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java From chris.hegarty at oracle.com Wed Mar 23 08:45:04 2011 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Wed, 23 Mar 2011 08:45:04 +0000 Subject: Review Request : 7029997 : Restyling of SortedMap Javadoc In-Reply-To: <252EE932-691D-4123-AD49-4CBCDD067DEB@oracle.com> References: <15BF2DD2-38DA-4097-B1DA-428030C6C2F4@oracle.com> <4D892CF7.5010907@oracle.com> <252EE932-691D-4123-AD49-4CBCDD067DEB@oracle.com> Message-ID: <4D89B310.4010707@oracle.com> On 03/22/11 11:33 PM, Mike Duigou wrote: > ...... > How about this version : > > *

              All general-purpose sorted map implementation classes should provide four > * "standard" constructors. It is not possible to enforce this recommendation > * though as required constructors cannot be specified by interfaces. The > * expected "standard" constructors for all sorted map implementations are: > *

                This updated version looks much better to me. Thanks, -Chris. > > >> -Chris. >> >> On 03/22/11 08:12 PM, Mike Duigou wrote: >>> Hello all; >>> >>> I have made a couple of styling improvements to the JavaDoc for SortedMap; principally conversion of an inline list to use the HTML
                  tag. The remainder of the changes are updates to the standard javadoc tags. >>> >>> http://cr.openjdk.java.net/~mduigou/7029997/0/webrev/ >>> >>> Thanks, >>> >>> Mike >>> >>> > From lvjing at linux.vnet.ibm.com Wed Mar 23 09:20:54 2011 From: lvjing at linux.vnet.ibm.com (Jing LV) Date: Wed, 23 Mar 2011 17:20:54 +0800 Subject: A method with return type size_t returns negative value Message-ID: <4D89BB76.5060900@linux.vnet.ibm.com> Hello, I found a problem in windows/native/java/io/io_util_md.c, method handleRead(). The return type of the method is size_t, which is defined as unsigned int. However we see the method would return negative values while it meets some error. This may be a problem as the API comsumer and later developer may have misunderstand it. I suggest modify it to ssize_t (or SSIZE_T as it is on windows). Any comments? -- Best Regards, Jimmy, Jing LV From Alan.Bateman at oracle.com Wed Mar 23 10:23:37 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 23 Mar 2011 10:23:37 +0000 Subject: A method with return type size_t returns negative value In-Reply-To: <4D89BB76.5060900@linux.vnet.ibm.com> References: <4D89BB76.5060900@linux.vnet.ibm.com> Message-ID: <4D89CA29.7040302@oracle.com> Jing LV wrote: > Hello, > > I found a problem in windows/native/java/io/io_util_md.c, method > handleRead(). The return type of the method is size_t, which is defined > as unsigned int. However we see the method would return negative values > while it meets some error. This may be a problem as the API comsumer and > later developer may have misunderstand it. I suggest modify it to > ssize_t (or SSIZE_T as it is on windows). > Any comments? > > I suspect this just haven't been noticed before. I checked the pre-OpenJDK history and these handle* functions have been returning size_t since the code was changed from using C runtime functions to win32 functions (in 2003). I don't think we have any resulting bugs but it should be cleaned up so I'll create a bug to track it. I see there are a few other places that have the same issue. -Alan. From weijun.wang at oracle.com Wed Mar 23 10:28:19 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Wed, 23 Mar 2011 10:28:19 +0000 Subject: hg: jdk7/tl/jdk: 7028490: better suggestion for jarsigner when TSA is not accessible Message-ID: <20110323102849.0819F473D5@hg.openjdk.java.net> Changeset: c43811a602a8 Author: weijun Date: 2011-03-23 18:26 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c43811a602a8 7028490: better suggestion for jarsigner when TSA is not accessible Reviewed-by: mullan ! src/share/classes/sun/security/tools/JarSigner.java ! src/share/classes/sun/security/tools/JarSignerResources.java From bhavesh.patel at sun.com Wed Mar 23 21:42:07 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Wed, 23 Mar 2011 21:42:07 +0000 Subject: hg: jdk7/tl/langtools: 7010342: End tag for element P is not open for few html files generated using new javadoc Message-ID: <20110323214210.D2FB1473EC@hg.openjdk.java.net> Changeset: 72bdd232e0ea Author: bpatel Date: 2011-03-23 14:40 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/72bdd232e0ea 7010342: End tag for element P is not open for few html files generated using new javadoc Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java ! src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java ! src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java ! src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css + test/com/sun/javadoc/testSubTitle/TestSubTitle.java + test/com/sun/javadoc/testSubTitle/pkg/C.java + test/com/sun/javadoc/testSubTitle/pkg/package.html From neil.richards at ngmr.net Wed Mar 23 21:46:26 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Wed, 23 Mar 2011 14:46:26 -0700 Subject: Suspected regression: fix for 6735255 causes delay in GC of ZipFile InputStreams, increase in heap demand Message-ID: <1300916786.4515.107.camel@chalkhill> Hi, I've noticed that the fix introduced to address bug 6735255 [1] [2] had an unfortunate side-effect. That fix stores references to the InputStream objects returned from ZipFile.getInputStream(ZipEntry) in a HashSet (within ZipFile), so that the close() method may be called upon those objects when ZipFile.close() is called. It does this to conform to the existing API description, and to avoid a native memory leak which would occur if the InputStream is GC'd without its close() being called. However, by holding these InputStreams in a set within their ZipFile object, their lifecycle is now prolonged until the ZipFile object either has its close() method called, or is finalized (prior to GC). I've found scenarios (in user code) were ZipFile objects are held onto for a long time (eg. the entire lifetime of the process), but where InputStream objects from that ZipFile (for individual entries in the zip file) are obtained, used, then abandoned on a large number of occasions. (An example here might be a user-defined, long-lasting class loader, which might retain a ZipFile instance for each jar file in its search path, but which will create transitory input streams to read out particular files from those (large) jar files). I see that the InputStream objects returned from ZipFile.getInputStream(ZipEntry) tend to hold references to a couple of sizeable byte arrays, one 512 bytes in size, the other 1002 bytes. So by prolonging the life span of these objects, the fix for 6735255 can inadvertently cause a significant increase in the demand/usage on the heap (in practice, running into many Mb's). (This is not so if the user code is good-mannered enough to explicitly always call close() on the InputStreams in question. However, experience shows that user code cannot be relied upon to behave so benignly). I believe this introduced problem can be addressed by: 1. Holding references to the InputStreams in the 'streams' Set within ZipFile via WeakReferences, so they may be GC'd as soon as they are no longer externally (strongly) referenced. 2. Adding finalization logic to the InputStream implementation classes, which ensures their close() method is called prior to GC. 3. Prevent Inflater objects from being returned to the pool (in the ZipFile object) if close() has been called from finalize(). To that end, please find below an 'hg export' of a proposed change which implements these aspects, together with a testcase to demonstrate the problem/fix. Any comments / suggestions on this gratefully received, Thanks, Neil [1] http://bugs.sun.com/view_bug.do?bug_id=6735255 [2] http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/49478a651a28 -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU # HG changeset patch # User Neil Richards , # Date 1300289208 0 # Branch zip-heap # Node ID 34642c56c6febfd845c6c4ffd0344c3257f0b848 # Parent 554adcfb615e63e62af530b1c10fcf7813a75b26 Summary: Allow unreferenced ZipFile InputStreams to be finalized, GC'd Contributed-by: diff -r 554adcfb615e -r 34642c56c6fe src/share/classes/java/util/zip/ZipFile.java --- a/src/share/classes/java/util/zip/ZipFile.java Wed Mar 16 15:01:07 2011 -0700 +++ b/src/share/classes/java/util/zip/ZipFile.java Wed Mar 16 15:26:48 2011 +0000 @@ -30,11 +30,14 @@ import java.io.IOException; import java.io.EOFException; import java.io.File; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; import java.nio.charset.Charset; import java.util.Vector; import java.util.Enumeration; import java.util.Set; import java.util.HashSet; +import java.util.Iterator; import java.util.NoSuchElementException; import java.security.AccessController; import sun.security.action.GetPropertyAction; @@ -315,7 +318,16 @@ private static native void freeEntry(long jzfile, long jzentry); // the outstanding inputstreams that need to be closed. - private Set streams = new HashSet<>(); + private final Set> streams = new HashSet<>(); + private final ReferenceQueue staleStreamQueue = + new ReferenceQueue<>(); + + private void clearStaleStreams() { + Object staleStream; + while (null != (staleStream = staleStreamQueue.poll())) { + streams.remove(staleStream); + } + } /** * Returns an input stream for reading the contents of the specified @@ -339,6 +351,7 @@ ZipFileInputStream in = null; synchronized (this) { ensureOpen(); + clearStaleStreams(); if (!zc.isUTF8() && (entry.flag & EFS) != 0) { jzentry = getEntry(jzfile, zc.getBytesUTF8(entry.name), false); } else { @@ -351,51 +364,19 @@ switch (getEntryMethod(jzentry)) { case STORED: - streams.add(in); + streams.add( + new WeakReference(in, staleStreamQueue)); return in; case DEFLATED: - final ZipFileInputStream zfin = in; // MORE: Compute good size for inflater stream: long size = getEntrySize(jzentry) + 2; // Inflater likes a bit of slack if (size > 65536) size = 8192; if (size <= 0) size = 4096; - InputStream is = new InflaterInputStream(zfin, getInflater(), (int)size) { - private boolean isClosed = false; - - public void close() throws IOException { - if (!isClosed) { - super.close(); - releaseInflater(inf); - isClosed = true; - } - } - // Override fill() method to provide an extra "dummy" byte - // at the end of the input stream. This is required when - // using the "nowrap" Inflater option. - protected void fill() throws IOException { - if (eof) { - throw new EOFException( - "Unexpected end of ZLIB input stream"); - } - len = this.in.read(buf, 0, buf.length); - if (len == -1) { - buf[0] = 0; - len = 1; - eof = true; - } - inf.setInput(buf, 0, len); - } - private boolean eof; - - public int available() throws IOException { - if (isClosed) - return 0; - long avail = zfin.size() - inf.getBytesWritten(); - return avail > (long) Integer.MAX_VALUE ? - Integer.MAX_VALUE : (int) avail; - } - }; - streams.add(is); + InputStream is = + new ZipFileInflaterInputStream(in, getInflater(), + (int)size); + streams.add( + new WeakReference(is, staleStreamQueue)); return is; default: throw new ZipException("invalid compression method"); @@ -403,6 +384,58 @@ } } + private class ZipFileInflaterInputStream extends InflaterInputStream { + private boolean isClosed = false; + private boolean eof = false; + private final ZipFileInputStream zfin; + private boolean inFinalizer = false; + + ZipFileInflaterInputStream(ZipFileInputStream zfin, Inflater inf, + int size) { + super(zfin, inf, size); + this.zfin = zfin; + } + + public void close() throws IOException { + synchronized (ZipFile.this) { + if (!isClosed) { + super.close(); + if (false == inFinalizer) + releaseInflater(inf); + isClosed = true; + } + } + } + // Override fill() method to provide an extra "dummy" byte + // at the end of the input stream. This is required when + // using the "nowrap" Inflater option. + protected void fill() throws IOException { + if (eof) { + throw new EOFException("Unexpected end of ZLIB input stream"); + } + len = in.read(buf, 0, buf.length); + if (len == -1) { + buf[0] = 0; + len = 1; + eof = true; + } + inf.setInput(buf, 0, len); + } + + public int available() throws IOException { + if (isClosed) + return 0; + long avail = zfin.size() - inf.getBytesWritten(); + return (avail > (long) Integer.MAX_VALUE ? + Integer.MAX_VALUE : (int) avail); + } + + protected void finalize() throws IOException { + inFinalizer = true; + close(); + } + } + /* * Gets an inflater from the list of available inflaters or allocates * a new one. @@ -543,11 +576,14 @@ synchronized (this) { closeRequested = true; - if (streams.size() !=0) { - Set copy = streams; - streams = new HashSet<>(); - for (InputStream is: copy) + Iterator> streamsIterator = + streams.iterator(); + while (streamsIterator.hasNext()) { + InputStream is = streamsIterator.next().get(); + if (null != is) { is.close(); + } + streamsIterator.remove(); } if (jzfile != 0) { @@ -684,9 +720,12 @@ freeEntry(ZipFile.this.jzfile, jzentry); jzentry = 0; } - streams.remove(this); } } + + protected void finalize() { + close(); + } } diff -r 554adcfb615e -r 34642c56c6fe test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java Wed Mar 16 15:26:48 2011 +0000 @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug %BUG% + * @summary Allow stale InputStreams from ZipFiles to be GC'd + * @author Neil Richards , + */ +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Random; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +public class ClearStaleZipFileInputStreams { + private static final int ZIP_ENTRY_NUM = 5; + + private static final byte[][] data; + + static { + data = new byte[ZIP_ENTRY_NUM][]; + Random r = new Random(); + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + data[i] = new byte[1000]; + r.nextBytes(data[i]); + } + } + + private static File createTestFile(int compression) throws Exception { + File tempZipFile = + File.createTempFile("test-data" + compression, ".zip"); + tempZipFile.deleteOnExit(); + + ZipOutputStream zos = + new ZipOutputStream(new FileOutputStream(tempZipFile)); + zos.setLevel(compression); + + try { + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + String text = "Entry" + i; + ZipEntry entry = new ZipEntry(text); + zos.putNextEntry(entry); + try { + zos.write(data[i], 0, data[i].length); + } finally { + zos.closeEntry(); + } + } + } finally { + zos.close(); + } + + return tempZipFile; + } + + private static void startGcInducingThread(final int sleepMillis) { + final Thread gcInducingThread = new Thread() { + public void run() { + while (true) { + System.gc(); + try { + Thread.sleep(sleepMillis); + } catch (InterruptedException e) { } + } + } + }; + + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + } + + public static void main(String[] args) throws Exception { + startGcInducingThread(500); + runTest(ZipOutputStream.DEFLATED); + runTest(ZipOutputStream.STORED); + } + + private static void runTest(int compression) throws Exception { + ReferenceQueue rq = new ReferenceQueue<>(); + + System.out.println("Testing with a zip file with compression level = " + + compression); + File f = createTestFile(compression); + try { + ZipFile zf = new ZipFile(f); + try { + Set refSet = createTransientInputStreams(zf, rq); + + System.out.println("Waiting for 'stale' input streams from ZipFile to be GC'd ..."); + System.out.println("(The test will hang on failure)"); + while (false == refSet.isEmpty()) { + refSet.remove(rq.remove()); + } + System.out.println("Test PASSED."); + System.out.println(); + } finally { + zf.close(); + } + } finally { + f.close(); + } + } + + private static Set createTransientInputStreams(ZipFile zf, + ReferenceQueue rq) throws Exception { + Enumeration zfe = zf.entries(); + Set refSet = new HashSet<>(); + + while (zfe.hasMoreElements()) { + InputStream is = zf.getInputStream(zfe.nextElement()); + refSet.add(new WeakReference(is, rq)); + } + + return refSet; + } +} From mike.duigou at oracle.com Wed Mar 23 22:07:02 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Wed, 23 Mar 2011 22:07:02 +0000 Subject: hg: jdk7/tl/jdk: 7029997: Restyling of SortedMap Javadoc Message-ID: <20110323220726.34086473EE@hg.openjdk.java.net> Changeset: b58572df94f1 Author: mduigou Date: 2011-03-23 15:01 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b58572df94f1 7029997: Restyling of SortedMap Javadoc Reviewed-by: darcy, chegar ! src/share/classes/java/util/SortedMap.java From mike.duigou at oracle.com Wed Mar 23 22:32:34 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Wed, 23 Mar 2011 15:32:34 -0700 Subject: Review Request : 7030442 : Add missing @param to Collections.reverseOrder() Message-ID: Hi All; More documentation nits for review. :-) (and more of these to come as we push closer to Java 7 code freeze) This one adds the missing @param cmp tag for Collections.reverseOrder. The description text is adapted from the general method javadoc. http://cr.openjdk.java.net/~mduigou/7030442/0/webrev/ There is one phrase I would like to change but thus far have not--replacing in the method javadoc the use of the phrase "on a collection of objects" with "for objects" since Comparable doesn't directly interact with collections. Opinions? Thanks, Mike From joe.darcy at oracle.com Wed Mar 23 22:44:30 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Wed, 23 Mar 2011 15:44:30 -0700 Subject: Review Request : 7030442 : Add missing @param to Collections.reverseOrder() In-Reply-To: References: Message-ID: <4D8A77CE.5090103@oracle.com> On 3/23/2011 3:32 PM, Mike Duigou wrote: > Hi All; > > More documentation nits for review. :-) (and more of these to come as we push closer to Java 7 code freeze) > > This one adds the missing @param cmp tag for Collections.reverseOrder. The description text is adapted from the general method javadoc. > > http://cr.openjdk.java.net/~mduigou/7030442/0/webrev/ > > There is one phrase I would like to change but thus far have not--replacing in the method javadoc the use of the phrase "on a collection of objects" with "for objects" since Comparable doesn't directly interact with collections. Opinions? > > Thanks, > > Mike Hello. A few minor comments. In + * @return A comparator that imposes the reverse of the natural * ordering on a collection of objects that implement The "" tag was not replaced with "". For + * @param cmp a comparator who's ordering is to be reversed by the returned + * comparator {@code null} if a comparator which imposes the reverse of the + * natural ordering for {@code Comparable} objects is desired. I don't think it is necessary to try to specify the null behavior in this amount of details in an @param tag. -Joe From neil.richards at ngmr.net Thu Mar 24 00:51:34 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Wed, 23 Mar 2011 17:51:34 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() Message-ID: <1300927894.11817.45.camel@chalkhill> As previously trailed [1], please find below a suggested change to address the problem reported in bug 6312706 [2], together with testcases to demonstrate the veracity of the change. The change causes the entry set iterators for java.util.EnumMap and java.util.IdentityHashMap to return distinct Map.Entry objects for each call to next(). As detailed in the bug report, by doing this, the entry set, its iterator, and the returned Entry objects behave in the manner in which one would expect them to, without weird unexpected edge conditions. To mitigate the overhead of producing new objects for each Entry returned, I've also expanded the implementation of EnumMap's equals(), hashCode() and writeObject(), such that they avoid using its entry set to traverse through the entries, and added suitable tests to demonstrate these expanded forms still behave properly. I've also added a testcase to demonstrate that the problem being fixed here does not occur in java.util.concurrent.ConcurrentHashMap . (It was suggested in the bug report that the problem also occurred there, so I thought it worthwhile to include the testcase to demonstrate that it doesn't). As always, and comments / advice / suggestions gratefully received, Thanks, Neil [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-January/005763.html [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6312706 -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU # HG changeset patch # User Neil Richards , # Date 1298984147 0 # Branch j6312706 # Node ID 98616c2a19c4884bfadbc1dba032cb60fbcfe275 # Parent 554adcfb615e63e62af530b1c10fcf7813a75b26 6312706: Map entrySet iterators should return different entries on each call to next() Summary: Return distinct entry objects from entrySet iterators of EnumMap, IdentityHashMap Contributed-by: diff -r 554adcfb615e -r 98616c2a19c4 src/share/classes/java/util/EnumMap.java --- a/src/share/classes/java/util/EnumMap.java Wed Mar 16 15:01:07 2011 -0700 +++ b/src/share/classes/java/util/EnumMap.java Tue Mar 01 12:55:47 2011 +0000 @@ -106,7 +106,11 @@ /** * Distinguished non-null value for representing null values. */ - private static final Object NULL = new Object(); + private static final Object NULL = new Object() { + public int hashCode() { + return 0; + } + }; private Object maskNull(Object value) { return (value == null ? NULL : value); @@ -464,6 +468,7 @@ public Iterator> iterator() { return new EntryIterator(); } + public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; @@ -552,70 +557,82 @@ } } - /** - * Since we don't use Entry objects, we use the Iterator itself as entry. - */ - private class EntryIterator extends EnumMapIterator> - implements Map.Entry - { + private class EntryIterator extends EnumMapIterator> { + private Entry lastReturnedEntry = null; + public Map.Entry next() { if (!hasNext()) throw new NoSuchElementException(); - lastReturnedIndex = index++; - return this; + lastReturnedEntry = new Entry(index++); + return lastReturnedEntry; } - public K getKey() { - checkLastReturnedIndexForEntryUse(); - return keyUniverse[lastReturnedIndex]; + public void remove() { + lastReturnedIndex = + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; } + + private class Entry implements Map.Entry { + private int index; - public V getValue() { - checkLastReturnedIndexForEntryUse(); - return unmaskNull(vals[lastReturnedIndex]); - } + private Entry(int index) { + this.index = index; + } - public V setValue(V value) { - checkLastReturnedIndexForEntryUse(); - V oldValue = unmaskNull(vals[lastReturnedIndex]); - vals[lastReturnedIndex] = maskNull(value); - return oldValue; - } + public K getKey() { + checkIndexForEntryUse(); + return keyUniverse[index]; + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return o == this; + public V getValue() { + checkIndexForEntryUse(); + return unmaskNull(vals[index]); + } - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - V ourValue = unmaskNull(vals[lastReturnedIndex]); - Object hisValue = e.getValue(); - return e.getKey() == keyUniverse[lastReturnedIndex] && - (ourValue == hisValue || - (ourValue != null && ourValue.equals(hisValue))); - } + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = unmaskNull(vals[index]); + vals[index] = maskNull(value); + return oldValue; + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public boolean equals(Object o) { + if (index < 0) + return o == this; - Object value = vals[lastReturnedIndex]; - return keyUniverse[lastReturnedIndex].hashCode() - ^ (value == NULL ? 0 : value.hashCode()); - } + if (!(o instanceof Map.Entry)) + return false; - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + Map.Entry e = (Map.Entry)o; + V ourValue = unmaskNull(vals[index]); + Object hisValue = e.getValue(); + return (e.getKey() == keyUniverse[index] && + (ourValue == hisValue || + (ourValue != null && ourValue.equals(hisValue)))); + } - return keyUniverse[lastReturnedIndex] + "=" - + unmaskNull(vals[lastReturnedIndex]); - } + public int hashCode() { + if (index < 0) + return super.hashCode(); - private void checkLastReturnedIndexForEntryUse() { - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + return entryHashCode(index); + } + + public String toString() { + if (index < 0) + return super.toString(); + + return keyUniverse[index] + "=" + + unmaskNull(vals[index]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } @@ -631,10 +648,35 @@ * @return true if the specified object is equal to this map */ public boolean equals(Object o) { - if (!(o instanceof EnumMap)) - return super.equals(o); + if (this == o) + return true; + if (o instanceof EnumMap) + return equals((EnumMap)o); + if (!(o instanceof Map)) + return false; + + Map m = (Map)o; + if (size != m.size()) + return false; - EnumMap em = (EnumMap)o; + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + K key = keyUniverse[i]; + V value = unmaskNull(vals[i]); + if (null == value) { + if (!((null == m.get(key)) && m.containsKey(key))) + return false; + } else { + if (!value.equals(m.get(key))) + return false; + } + } + } + + return true; + } + + private boolean equals(EnumMap em) { if (em.keyType != keyType) return size == 0 && em.size == 0; @@ -650,6 +692,26 @@ } /** + * Returns the hash code value for this map. The hash code of a map is + * defined to be the sum of the hash codes of each entry in the map. + */ + public int hashCode() { + int h = 0; + + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + h += entryHashCode(i); + } + } + + return h; + } + + private int entryHashCode(int index) { + return (keyUniverse[index].hashCode() ^ vals[index].hashCode()); + } + + /** * Returns a shallow copy of this enum map. (The values themselves * are not cloned. * @@ -705,9 +767,13 @@ s.writeInt(size); // Write out keys and values (alternating) - for (Map.Entry e : entrySet()) { - s.writeObject(e.getKey()); - s.writeObject(e.getValue()); + int entriesToBeWritten = size; + for (int i = 0; entriesToBeWritten > 0; i++) { + if (null != vals[i]) { + s.writeObject(keyUniverse[i]); + s.writeObject(unmaskNull(vals[i])); + entriesToBeWritten--; + } } } diff -r 554adcfb615e -r 98616c2a19c4 src/share/classes/java/util/IdentityHashMap.java --- a/src/share/classes/java/util/IdentityHashMap.java Wed Mar 16 15:01:07 2011 -0700 +++ b/src/share/classes/java/util/IdentityHashMap.java Tue Mar 01 12:55:47 2011 +0000 @@ -829,71 +829,82 @@ } } - /** - * Since we don't use Entry objects, we use the Iterator - * itself as an entry. - */ private class EntryIterator extends IdentityHashMapIterator> - implements Map.Entry { + private Entry lastReturnedEntry = null; + public Map.Entry next() { - nextIndex(); - return this; + lastReturnedEntry = new Entry(nextIndex()); + return lastReturnedEntry; } - public K getKey() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + public void remove() { + lastReturnedIndex = + ((0 == lastReturnedIndex) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; + } + + private class Entry implements Map.Entry { + private int index; - return (K) unmaskNull(traversalTable[lastReturnedIndex]); - } + private Entry(int index) { + this.index = index; + } - public V getValue() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + public K getKey() { + checkIndexForEntryUse(); + return (K) unmaskNull(traversalTable[index]); + } - return (V) traversalTable[lastReturnedIndex+1]; - } + public V getValue() { + checkIndexForEntryUse(); + return (V) traversalTable[index+1]; + } - public V setValue(V value) { - // It would be mean-spirited to proceed here if remove() called - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); - V oldValue = (V) traversalTable[lastReturnedIndex+1]; - traversalTable[lastReturnedIndex+1] = value; - // if shadowing, force into main table - if (traversalTable != IdentityHashMap.this.table) - put((K) traversalTable[lastReturnedIndex], value); - return oldValue; - } + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = (V) traversalTable[index+1]; + traversalTable[index+1] = value; + // if shadowing, force into main table + if (traversalTable != IdentityHashMap.this.table) + put((K) traversalTable[index], value); + return oldValue; + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return super.equals(o); + public boolean equals(Object o) { + if (index < 0) + return super.equals(o); - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - return e.getKey() == getKey() && - e.getValue() == getValue(); - } + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry)o; + return (e.getKey() == unmaskNull(traversalTable[index]) && + e.getValue() == traversalTable[index+1]); + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public int hashCode() { + if (lastReturnedIndex < 0) + return super.hashCode(); - return System.identityHashCode(getKey()) ^ - System.identityHashCode(getValue()); - } + return (System.identityHashCode(unmaskNull(traversalTable[index])) ^ + System.identityHashCode(traversalTable[index+1])); + } - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + public String toString() { + if (index < 0) + return super.toString(); - return getKey() + "=" + getValue(); + return (unmaskNull(traversalTable[index]) + "=" + + traversalTable[index+1]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/DistinctEntrySetElements.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/EnumMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.EnumMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Set> entrySet = enumMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards , + */ + +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Iterator> entrySetIterator = + enumMap.entrySet().iterator(); + Map.Entry entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/SimpleSerialization.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/EnumMap/SimpleSerialization.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary A serialized EnumMap can be successfully de-serialized. + * @author Neil Richards , + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.EnumMap; + +public class SimpleSerialization { + private enum TestEnum { e00, e01, e02, e03, e04, e05, e06, e07 } + public static void main(final String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + enumMap.put(TestEnum.e01, TestEnum.e01.name()); + enumMap.put(TestEnum.e04, TestEnum.e04.name()); + enumMap.put(TestEnum.e05, TestEnum.e05.name()); + + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + final ObjectOutputStream oos = new ObjectOutputStream(baos); + + oos.writeObject(enumMap); + oos.close(); + + final byte[] data = baos.toByteArray(); + final ByteArrayInputStream bais = new ByteArrayInputStream(data); + final ObjectInputStream ois = new ObjectInputStream(bais); + + final Object deserializedObject = ois.readObject(); + ois.close(); + + if (false == enumMap.equals(deserializedObject)) { + throw new RuntimeException(getFailureText(enumMap, deserializedObject)); + } + } + + private static String getFailureText(final Object orig, final Object copy) { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + + pw.println("Test FAILED: Deserialized object is not equal to the original object"); + pw.print("\tOriginal: "); + printObject(pw, orig).println(); + pw.print("\tCopy: "); + printObject(pw, copy).println(); + + pw.close(); + return sw.toString(); + } + + private static PrintWriter printObject(final PrintWriter pw, final Object o) { + pw.printf("%s@%08x", o.getClass().getName(), System.identityHashCode(o)); + return pw; + } +} diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/IdentityHashMap/DistinctEntrySetElements.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.IdentityHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final IdentityHashMap identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Set> entrySet = identityHashMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + // NB: These comparisons are valid in this case because none of the + // keys put into 'identityHashMap' above are equal to any other. + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards , + */ + +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + public static void main(String[] args) throws Exception { + final IdentityHashMap identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Iterator> entrySetIterator = + identityHashMap.entrySet().iterator(); + Map.Entry entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.concurrent.ConcurrentHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final ConcurrentHashMap concurrentHashMap = + new ConcurrentHashMap<>(); + + concurrentHashMap.put("One", "Un"); + concurrentHashMap.put("Two", "Deux"); + concurrentHashMap.put("Three", "Trois"); + + Set> entrySet = concurrentHashMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} From xuelei.fan at oracle.com Thu Mar 24 03:08:26 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Thu, 24 Mar 2011 03:08:26 +0000 Subject: hg: jdk7/tl/jdk: 7029848: KeyStoreBuilderParameters((Builder)null) does not throw NullPointerException Message-ID: <20110324030852.26A3A47404@hg.openjdk.java.net> Changeset: 3fee1c67bd10 Author: xuelei Date: 2011-03-23 20:07 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3fee1c67bd10 7029848: KeyStoreBuilderParameters((Builder)null) does not throw NullPointerException Summary: throws NPE for null Builder Reviewed-by: weijun ! src/share/classes/javax/net/ssl/KeyStoreBuilderParameters.java From xuelei.fan at oracle.com Thu Mar 24 03:26:23 2011 From: xuelei.fan at oracle.com (xuelei.fan at oracle.com) Date: Thu, 24 Mar 2011 03:26:23 +0000 Subject: hg: jdk7/tl/jdk: 7030523: regression: imporper checking of paramater Message-ID: <20110324032632.BD0C047405@hg.openjdk.java.net> Changeset: b921112e39d3 Author: xuelei Date: 2011-03-23 20:25 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b921112e39d3 7030523: regression: imporper checking of paramater Reviewed-by: weijun ! src/share/classes/javax/net/ssl/KeyStoreBuilderParameters.java From lvjing at linux.vnet.ibm.com Thu Mar 24 07:33:24 2011 From: lvjing at linux.vnet.ibm.com (Jing LV) Date: Thu, 24 Mar 2011 15:33:24 +0800 Subject: A method with return type size_t returns negative value In-Reply-To: <4D89CA29.7040302@oracle.com> References: <4D89BB76.5060900@linux.vnet.ibm.com> <4D89CA29.7040302@oracle.com> Message-ID: <4D8AF3C4.7020005@linux.vnet.ibm.com> ? 2011-3-23 18:23, Alan Bateman ??: > Jing LV wrote: >> Hello, >> >> I found a problem in windows/native/java/io/io_util_md.c, method >> handleRead(). The return type of the method is size_t, which is defined >> as unsigned int. However we see the method would return negative values >> while it meets some error. This may be a problem as the API comsumer and >> later developer may have misunderstand it. I suggest modify it to >> ssize_t (or SSIZE_T as it is on windows). >> Any comments? >> > I suspect this just haven't been noticed before. I checked the > pre-OpenJDK history and these handle* functions have been returning > size_t since the code was changed from using C runtime functions to > win32 functions (in 2003). I don't think we have any resulting bugs > but it should be cleaned up so I'll create a bug to track it. I see > there are a few other places that have the same issue. > > -Alan. Thanks Alan. Would you please tell me the bug number? -- Best Regards, Jimmy, Jing LV From littlee at linux.vnet.ibm.com Thu Mar 24 07:59:53 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Thu, 24 Mar 2011 15:59:53 +0800 Subject: Where should the accessibility problems goes to? Message-ID: <4D8AF9F9.1070208@linux.vnet.ibm.com> Hi guys, We have some problems about the accessibility things. Where should these problems go to? this mailing list? Thanks. From weijun.wang at oracle.com Thu Mar 24 08:17:04 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Thu, 24 Mar 2011 08:17:04 +0000 Subject: hg: jdk7/tl/jdk: 7030174: Jarsigner should accept TSACert with an HTTPS id-ad-timeStamping SIA Message-ID: <20110324081714.1BF8147415@hg.openjdk.java.net> Changeset: 65e7fddf517f Author: weijun Date: 2011-03-24 16:16 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/65e7fddf517f 7030174: Jarsigner should accept TSACert with an HTTPS id-ad-timeStamping SIA Reviewed-by: xuelei ! src/share/classes/sun/security/tools/TimestampedSigner.java From littlee at linux.vnet.ibm.com Thu Mar 24 08:27:26 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Thu, 24 Mar 2011 16:27:26 +0800 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8AFE01.9010104@oracle.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8AFE01.9010104@oracle.com> Message-ID: <4D8B006E.7080506@linux.vnet.ibm.com> On 03/24/2011 04:17 PM, Roger Yeung wrote: > On 3/24/11 12:59 AM, Charles Lee wrote: >> Hi guys, >> >> We have some problems about the accessibility things. Where should >> these problems go to? this mailing list? >> >> Thanks. > Is this regarding the new AB2.0.2 ( http://jdk6.java.net/6uNea.html )? > > Please report is at > http://bugreport.sun.com > > and select "Java Access Bridge for Windows" for Product/Category. > > Thanks, > Roger Y. > > Thanks Roger. But not it. The accessibility things is about to improve the behaviour of what application shows. For example, focus of a JLabel, mnemonic keys, etc. AB2.0.2 is the latest java6 release, right? What is "Java Access Bridge"? From Alan.Bateman at oracle.com Thu Mar 24 08:35:32 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Thu, 24 Mar 2011 08:35:32 +0000 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8AF9F9.1070208@linux.vnet.ibm.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> Message-ID: <4D8B0254.1060906@oracle.com> Charles Lee wrote: > Hi guys, > > We have some problems about the accessibility things. Where should > these problems go to? this mailing list? > > Thanks. Do you mean accessibility issues with Swing components (in which case swing-dev), or something else? -Alan. From littlee at linux.vnet.ibm.com Thu Mar 24 08:40:38 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Thu, 24 Mar 2011 16:40:38 +0800 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8B0254.1060906@oracle.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8B0254.1060906@oracle.com> Message-ID: <4D8B0386.2010001@linux.vnet.ibm.com> On 03/24/2011 04:35 PM, Alan Bateman wrote: > Charles Lee wrote: >> Hi guys, >> >> We have some problems about the accessibility things. Where should >> these problems go to? this mailing list? >> >> Thanks. > Do you mean accessibility issues with Swing components (in which case > swing-dev), or something else? > > -Alan. Yes. Swing mostly. Thanks Alan. From Alan.Bateman at oracle.com Thu Mar 24 12:34:51 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Thu, 24 Mar 2011 12:34:51 +0000 Subject: A method with return type size_t returns negative value In-Reply-To: <4D8AF3C4.7020005@linux.vnet.ibm.com> References: <4D89BB76.5060900@linux.vnet.ibm.com> <4D89CA29.7040302@oracle.com> <4D8AF3C4.7020005@linux.vnet.ibm.com> Message-ID: <4D8B3A6B.8040005@oracle.com> Jing LV wrote: > : > Thanks Alan. Would you please tell me the bug number? The bug now tracking this is: 7030624: size_t usages in src/windows/native/java/io/io_util_md.c need to be re-visited -Alan. From roger.yeung at oracle.com Thu Mar 24 08:17:05 2011 From: roger.yeung at oracle.com (Roger Yeung) Date: Thu, 24 Mar 2011 01:17:05 -0700 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8AF9F9.1070208@linux.vnet.ibm.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> Message-ID: <4D8AFE01.9010104@oracle.com> On 3/24/11 12:59 AM, Charles Lee wrote: > Hi guys, > > We have some problems about the accessibility things. Where should > these problems go to? this mailing list? > > Thanks. Is this regarding the new AB2.0.2 ( http://jdk6.java.net/6uNea.html )? Please report is at http://bugreport.sun.com and select "Java Access Bridge for Windows" for Product/Category. Thanks, Roger Y. From jim.holmlund at sun.com Thu Mar 24 18:42:58 2011 From: jim.holmlund at sun.com (jim.holmlund at sun.com) Date: Thu, 24 Mar 2011 18:42:58 +0000 Subject: hg: jdk7/tl/jdk: 7029823: (ann) test/java/lang/annotation/package-info.java no longer compiles Message-ID: <20110324184308.37E4347438@hg.openjdk.java.net> Changeset: 632a96f5752d Author: jjh Date: 2011-03-24 11:40 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/632a96f5752d 7029823: (ann) test/java/lang/annotation/package-info.java no longer compiles Summary: Use @Deprecated instead of @java.lang.annotation.Documented Reviewed-by: jjg, smarks ! test/java/lang/annotation/PackageMain.java ! test/java/lang/annotation/package-info.java From roger.yeung at oracle.com Thu Mar 24 18:53:22 2011 From: roger.yeung at oracle.com (Roger Yeung) Date: Thu, 24 Mar 2011 11:53:22 -0700 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8B006E.7080506@linux.vnet.ibm.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8AFE01.9010104@oracle.com> <4D8B006E.7080506@linux.vnet.ibm.com> Message-ID: <4D8B9322.8000705@oracle.com> On 3/24/11 1:27 AM, Charles Lee wrote: > On 03/24/2011 04:17 PM, Roger Yeung wrote: >> On 3/24/11 12:59 AM, Charles Lee wrote: >>> Hi guys, >>> >>> We have some problems about the accessibility things. Where should >>> these problems go to? this mailing list? >>> >>> Thanks. >> Is this regarding the new AB2.0.2 ( http://jdk6.java.net/6uNea.html )? >> >> Please report is at >> http://bugreport.sun.com >> >> and select "Java Access Bridge for Windows" for Product/Category. >> >> Thanks, >> Roger Y. >> >> > Thanks Roger. But not it. > > The accessibility things is about to improve the behaviour of what > application shows. For example, focus of a JLabel, mnemonic keys, etc. For JLabel and mnemonic keys, I'd say "Java Platform Standard Edition (JDK/JRE) for Product/Category, and "Package javax.swing.* - UI components for JFC" for Subcategory. http://bugreport.sun.com > > AB2.0.2 is the latest java6 release, right? No, Access Bridge is an optional component for Java SE. It is not Java 6. Please see description for details: http://jdk6.java.net/6uNea.html > What is "Java Access Bridge"? See also: http://java.sun.com/products/jfc/tsc/articles/accessibility/#bridge -- RY From neil.richards at ngmr.net Thu Mar 24 20:54:31 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Thu, 24 Mar 2011 13:54:31 -0700 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: References: <4D775A58.6010708@oracle.com> Message-ID: <1301000071.25581.16.camel@chalkhill> Hi all, Can I encourage further review / comment on my suggested fix (and testcase) for this problem [1] [2], please ? For reference, I include the 'hg export' for the latest version of the change below, Any feedback gratefully received, Thanks, Neil PS: I see the bug details [2] are not currently externally visible, but don't know of a good reason for this. Could this be reviewed, please? [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006144.html [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6597112 -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU # HG changeset patch # User Neil Richards , # Date 1298369045 0 # Branch j6597112 # Node ID 0c22e02a9016bd340e2182e96a10fe96cd75c8ac # Parent 6bbc7a4734952ae7604578f270e1566639fa8752 6597112: referential integrity loophole during remote object export Summary: Eliminate weak ref GC window during RMI export Contributed-by: diff --git a/src/share/classes/sun/rmi/server/UnicastServerRef.java b/src/share/classes/sun/rmi/server/UnicastServerRef.java --- a/src/share/classes/sun/rmi/server/UnicastServerRef.java +++ b/src/share/classes/sun/rmi/server/UnicastServerRef.java @@ -204,7 +204,11 @@ Target target = new Target(impl, this, stub, ref.getObjID(), permanent); - ref.exportObject(target); + try { + ref.exportObject(target); + } finally { + target.unpinImpl(); + } hashToMethod_Map = hashToMethod_Maps.get(implClass); return stub; } diff --git a/src/share/classes/sun/rmi/transport/Target.java b/src/share/classes/sun/rmi/transport/Target.java --- a/src/share/classes/sun/rmi/transport/Target.java +++ b/src/share/classes/sun/rmi/transport/Target.java @@ -77,11 +77,11 @@ * Construct a Target for a remote object "impl" with * a specific object id. * - * If "permanent" is true, then the impl is pinned permanently - * (the impl will not be collected via distributed and/or local - * GC). If "on" is false, than the impl is subject to - * collection. Permanent objects do not keep a server from - * exiting. + * Upon return, the impl is pinned, thus not initially eligible + * for collection via distributed and/or local GC). + * If "permanent" is false, the impl subsequently may be made subject to + * collection by calling {@link #unpinImpl()}. + * Permanent or pinned objects do not keep a server from exiting. */ public Target(Remote impl, Dispatcher disp, Remote stub, ObjID id, boolean permanent) @@ -114,9 +114,6 @@ } this.permanent = permanent; - if (permanent) { - pinImpl(); - } } /** @@ -212,7 +209,7 @@ * can be garbage collected locally. But only if there the refSet * is empty. All of the weak/strong handling is in WeakRef */ - synchronized void unpinImpl() { + public synchronized void unpinImpl() { /* only unpin if: * a) impl is not permanent, and * b) impl is not already unpinned, and diff --git a/src/share/classes/sun/rmi/transport/WeakRef.java b/src/share/classes/sun/rmi/transport/WeakRef.java --- a/src/share/classes/sun/rmi/transport/WeakRef.java +++ b/src/share/classes/sun/rmi/transport/WeakRef.java @@ -33,7 +33,7 @@ * * This class extends the functionality of java.lang.ref.WeakReference in * several ways. The methods pin() and unpin() can be used to set - * whether the contained reference is strong or weak (it is weak upon + * whether the contained reference is strong or weak (it is strong upon * construction). The hashCode() and equals() methods are overridden so * that WeakRef objects hash and compare to each other according to the * object identity of their referents. @@ -51,18 +51,24 @@ /** * Create a new WeakRef to the given object. + * The given object is initially pinned, ie. referenced strongly. + * It may be subsequently unpinned by calling {@link #unpin()}. */ public WeakRef(Object obj) { super(obj); setHashValue(obj); // cache object's "identity" hash code + strongRef = obj; } /** * Create a new WeakRef to the given object, registered with a queue. + * The given object is initially pinned, ie. referenced strongly. + * It may be subsequently unpinned by calling {@link #unpin()}. */ public WeakRef(Object obj, ReferenceQueue q) { super(obj, q); setHashValue(obj); // cache object's "identity" hash code + strongRef = obj; } /** diff --git a/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java b/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java new file mode 100644 --- /dev/null +++ b/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6597112 + * @summary Objects should not be GC-able as they are being exported to RMI + * @author Neil Richards , + */ + +import java.rmi.Remote; +import java.rmi.server.UnicastRemoteObject; + +public class GcDuringExport { + private static final long MAX_EXPORT_ITERATIONS = 50000; + + public static void main(String[] args) throws Exception { + final Thread gcInducingThread = new Thread() { + public void run() { while (true) { + System.gc(); + try { Thread.sleep(1); } catch (InterruptedException e) { } + } + } + }; + + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + + long i = 0; + try { + while (i < MAX_EXPORT_ITERATIONS) { + i++; + UnicastRemoteObject.exportObject(new Remote() { }, 0); + } + } catch (Throwable e) { + throw new RuntimeException("Test FAILED on iteration " + i + ".", e); + } + + System.out.println("Test successfully exported " + i + " objects."); + } +} + + From David.Holmes at oracle.com Thu Mar 24 21:01:04 2011 From: David.Holmes at oracle.com (David Holmes) Date: Fri, 25 Mar 2011 07:01:04 +1000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: <1301000071.25581.16.camel@chalkhill> References: <4D775A58.6010708@oracle.com> <1301000071.25581.16.camel@chalkhill> Message-ID: <4D8BB110.7020100@oracle.com> Neil Richards said the following on 03/25/11 06:54: > PS: I see the bug details [2] are not currently externally visible, but > don't know of a good reason for this. Could this be reviewed, please? > > [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006144.html > [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6597112 There's nothing in the bug to cause it to not be visible. There are issues with the software/process that updates the bug database that are being looked into - it's affect a lot of bugs. David Holmes From jonathan.gibbons at oracle.com Thu Mar 24 23:14:41 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 24 Mar 2011 23:14:41 +0000 Subject: hg: jdk7/tl/langtools: 6597678: JavaCompiler.getStandardFileManager always uses default charset not the one that user specifies Message-ID: <20110324231444.02D5947452@hg.openjdk.java.net> Changeset: 83260b3305ac Author: jjg Date: 2011-03-24 16:14 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/83260b3305ac 6597678: JavaCompiler.getStandardFileManager always uses default charset not the one that user specifies Reviewed-by: mcimadamore ! 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/processing/JavacProcessingEnvironment.java ! src/share/classes/com/sun/tools/javac/util/JavacMessages.java + test/tools/javac/util/T6597678.java From stuart.marks at oracle.com Fri Mar 25 00:25:45 2011 From: stuart.marks at oracle.com (stuart.marks at oracle.com) Date: Fri, 25 Mar 2011 00:25:45 +0000 Subject: hg: jdk7/tl/jdk: 7029680: fix test/sun/misc/Version/Version.java build parsing Message-ID: <20110325002602.0F23247455@hg.openjdk.java.net> Changeset: f326a018fd3f Author: smarks Date: 2011-03-24 17:26 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f326a018fd3f 7029680: fix test/sun/misc/Version/Version.java build parsing Reviewed-by: ohair ! test/sun/misc/Version/Version.java From littlee at linux.vnet.ibm.com Fri Mar 25 02:54:42 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Fri, 25 Mar 2011 10:54:42 +0800 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8B9322.8000705@oracle.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8AFE01.9010104@oracle.com> <4D8B006E.7080506@linux.vnet.ibm.com> <4D8B9322.8000705@oracle.com> Message-ID: <4D8C03F2.9040001@linux.vnet.ibm.com> On 03/25/2011 02:53 AM, Roger Yeung wrote: > On 3/24/11 1:27 AM, Charles Lee wrote: >> On 03/24/2011 04:17 PM, Roger Yeung wrote: >>> On 3/24/11 12:59 AM, Charles Lee wrote: >>>> Hi guys, >>>> >>>> We have some problems about the accessibility things. Where should >>>> these problems go to? this mailing list? >>>> >>>> Thanks. >>> Is this regarding the new AB2.0.2 ( http://jdk6.java.net/6uNea.html )? >>> >>> Please report is at >>> http://bugreport.sun.com >>> >>> and select "Java Access Bridge for Windows" for Product/Category. >>> >>> Thanks, >>> Roger Y. >>> >>> >> Thanks Roger. But not it. >> >> The accessibility things is about to improve the behaviour of what >> application shows. For example, focus of a JLabel, mnemonic keys, etc. > For JLabel and mnemonic keys, I'd say "Java Platform Standard Edition > (JDK/JRE) for Product/Category, and "Package javax.swing.* - UI > components for JFC" for Subcategory. > > http://bugreport.sun.com >> >> AB2.0.2 is the latest java6 release, right? > No, Access Bridge is an optional component for Java SE. It is not Java > 6. Please see description for details: > > http://jdk6.java.net/6uNea.html > >> What is "Java Access Bridge"? > See also: > > http://java.sun.com/products/jfc/tsc/articles/accessibility/#bridge > > -- RY > Thanks roger. Please correct me if I am wrong. AB is only for windows right? if the accessibility issue will be occurred on the linux, should the problem go to swing dev? From roger.yeung at oracle.com Fri Mar 25 03:53:48 2011 From: roger.yeung at oracle.com (Roger Yeung) Date: Thu, 24 Mar 2011 20:53:48 -0700 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8C03F2.9040001@linux.vnet.ibm.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8AFE01.9010104@oracle.com> <4D8B006E.7080506@linux.vnet.ibm.com> <4D8B9322.8000705@oracle.com> <4D8C03F2.9040001@linux.vnet.ibm.com> Message-ID: <4D8C11CC.9080003@oracle.com> On 3/24/11 7:54 PM, Charles Lee wrote: > On 03/25/2011 02:53 AM, Roger Yeung wrote: >> On 3/24/11 1:27 AM, Charles Lee wrote: >>> On 03/24/2011 04:17 PM, Roger Yeung wrote: >>>> On 3/24/11 12:59 AM, Charles Lee wrote: >>>>> Hi guys, >>>>> >>>>> We have some problems about the accessibility things. Where should >>>>> these problems go to? this mailing list? >>>>> >>>>> Thanks. >>>> Is this regarding the new AB2.0.2 ( http://jdk6.java.net/6uNea.html )? >>>> >>>> Please report is at >>>> http://bugreport.sun.com >>>> >>>> and select "Java Access Bridge for Windows" for Product/Category. >>>> >>>> Thanks, >>>> Roger Y. >>>> >>>> >>> Thanks Roger. But not it. >>> >>> The accessibility things is about to improve the behaviour of what >>> application shows. For example, focus of a JLabel, mnemonic keys, etc. >> For JLabel and mnemonic keys, I'd say "Java Platform Standard Edition >> (JDK/JRE) for Product/Category, and "Package javax.swing.* - UI >> components for JFC" for Subcategory. >> >> http://bugreport.sun.com >>> >>> AB2.0.2 is the latest java6 release, right? >> No, Access Bridge is an optional component for Java SE. It is not >> Java 6. Please see description for details: >> >> http://jdk6.java.net/6uNea.html >> >>> What is "Java Access Bridge"? >> See also: >> >> http://java.sun.com/products/jfc/tsc/articles/accessibility/#bridge >> >> -- RY >> > Thanks roger. Please correct me if I am wrong. > > AB is only for windows right? if the accessibility issue will be > occurred on the linux, should the problem go to swing dev? Yes. -- RY From weijun.wang at oracle.com Fri Mar 25 03:59:12 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Fri, 25 Mar 2011 03:59:12 +0000 Subject: hg: jdk7/tl/jdk: 7023056: NPE from sun.security.util.ManifestEntryVerifier.verify during Maven build Message-ID: <20110325035922.39CAA47460@hg.openjdk.java.net> Changeset: 4a64eefbfd7a Author: weijun Date: 2011-03-25 11:58 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/4a64eefbfd7a 7023056: NPE from sun.security.util.ManifestEntryVerifier.verify during Maven build Reviewed-by: mullan ! src/share/classes/java/util/jar/JarVerifier.java ! src/share/classes/sun/security/util/ManifestEntryVerifier.java + test/java/util/jar/JarFile/MevNPE.java From littlee at linux.vnet.ibm.com Fri Mar 25 05:04:39 2011 From: littlee at linux.vnet.ibm.com (Charles Lee) Date: Fri, 25 Mar 2011 13:04:39 +0800 Subject: Where should the accessibility problems goes to? In-Reply-To: <4D8C11CC.9080003@oracle.com> References: <4D8AF9F9.1070208@linux.vnet.ibm.com> <4D8AFE01.9010104@oracle.com> <4D8B006E.7080506@linux.vnet.ibm.com> <4D8B9322.8000705@oracle.com> <4D8C03F2.9040001@linux.vnet.ibm.com> <4D8C11CC.9080003@oracle.com> Message-ID: <4D8C2267.9020109@linux.vnet.ibm.com> On 03/25/2011 11:53 AM, Roger Yeung wrote: > On 3/24/11 7:54 PM, Charles Lee wrote: >> On 03/25/2011 02:53 AM, Roger Yeung wrote: >>> On 3/24/11 1:27 AM, Charles Lee wrote: >>>> On 03/24/2011 04:17 PM, Roger Yeung wrote: >>>>> On 3/24/11 12:59 AM, Charles Lee wrote: >>>>>> Hi guys, >>>>>> >>>>>> We have some problems about the accessibility things. Where >>>>>> should these problems go to? this mailing list? >>>>>> >>>>>> Thanks. >>>>> Is this regarding the new AB2.0.2 ( >>>>> http://jdk6.java.net/6uNea.html )? >>>>> >>>>> Please report is at >>>>> http://bugreport.sun.com >>>>> >>>>> and select "Java Access Bridge for Windows" for Product/Category. >>>>> >>>>> Thanks, >>>>> Roger Y. >>>>> >>>>> >>>> Thanks Roger. But not it. >>>> >>>> The accessibility things is about to improve the behaviour of what >>>> application shows. For example, focus of a JLabel, mnemonic keys, etc. >>> For JLabel and mnemonic keys, I'd say "Java Platform Standard >>> Edition (JDK/JRE) for Product/Category, and "Package javax.swing.* - >>> UI components for JFC" for Subcategory. >>> >>> http://bugreport.sun.com >>>> >>>> AB2.0.2 is the latest java6 release, right? >>> No, Access Bridge is an optional component for Java SE. It is not >>> Java 6. Please see description for details: >>> >>> http://jdk6.java.net/6uNea.html >>> >>>> What is "Java Access Bridge"? >>> See also: >>> >>> http://java.sun.com/products/jfc/tsc/articles/accessibility/#bridge >>> >>> -- RY >>> >> Thanks roger. Please correct me if I am wrong. >> >> AB is only for windows right? if the accessibility issue will be >> occurred on the linux, should the problem go to swing dev? > Yes. > > -- RY I see. Thanks. From david.holmes at oracle.com Fri Mar 25 11:10:37 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Fri, 25 Mar 2011 11:10:37 +0000 Subject: hg: jdk7/tl/jdk: 7030063: AWT support for SE-Embedded integration Message-ID: <20110325111102.3AC7E47475@hg.openjdk.java.net> Changeset: a2793622a8d8 Author: dholmes Date: 2011-03-25 07:09 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a2793622a8d8 7030063: AWT support for SE-Embedded integration Summary: AWT support for SE-Embedded Reviewed-by: anthony, art, bobv, collins, alanb ! make/launchers/Makefile ! make/sun/Makefile ! make/sun/awt/mawt.gmk ! make/sun/jawt/Makefile ! make/sun/jpeg/Makefile ! make/sun/security/tools/Makefile ! make/sun/xawt/Makefile ! src/share/classes/java/awt/Toolkit.java + src/share/classes/sun/awt/HToolkit.java ! src/solaris/classes/sun/awt/X11/XToolkit.java ! src/solaris/classes/sun/awt/X11/XTrayIconPeer.java ! src/solaris/native/java/lang/java_props_md.c ! src/solaris/native/sun/awt/jawt.c ! src/solaris/native/sun/xawt/XToolkit.c From Alan.Bateman at oracle.com Fri Mar 25 13:19:17 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 25 Mar 2011 13:19:17 +0000 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: <1301000071.25581.16.camel@chalkhill> References: <4D775A58.6010708@oracle.com> <1301000071.25581.16.camel@chalkhill> Message-ID: <4D8C9655.3000309@oracle.com> Neil Richards wrote: > Hi all, > Can I encourage further review / comment on my suggested fix (and > testcase) for this problem [1] [2], please ? > > For reference, I include the 'hg export' for the latest version of the > change below, > I imported the change-set and re-freshed the webrev: http://cr.openjdk.java.net/~alanb/6597112/webrev/ The updated changes look okay to me. If I don't see any other comments then I'll push this early next week. > : > > PS: I see the bug details [2] are not currently externally visible > [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6597112 > > As David mentioned, there appears to be an ongoing problem with the mirroring to bugs.sun.com. I don't know the details but this bug seems to be visible now. -Alan. From Alan.Bateman at oracle.com Fri Mar 25 13:30:46 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 25 Mar 2011 13:30:46 +0000 Subject: Suspected regression: fix for 6735255 causes delay in GC of ZipFile InputStreams, increase in heap demand In-Reply-To: <1300916786.4515.107.camel@chalkhill> References: <1300916786.4515.107.camel@chalkhill> Message-ID: <4D8C9906.3020401@oracle.com> Neil Richards wrote: > Hi, > I've noticed that the fix introduced to address bug 6735255 [1] [2] had > an unfortunate side-effect. > > That fix stores references to the InputStream objects returned from > ZipFile.getInputStream(ZipEntry) in a HashSet (within ZipFile), so that > the close() method may be called upon those objects when ZipFile.close() > is called. > > It does this to conform to the existing API description, and to avoid a > native memory leak which would occur if the InputStream is GC'd without > its close() being called. > > However, by holding these InputStreams in a set within their ZipFile > object, their lifecycle is now prolonged until the ZipFile object either > has its close() method called, or is finalized (prior to GC). > > I've created 7031076 to track this and generated a webrev from the change-set that you attached: http://cr.openjdk.java.net/~alanb/7031076/webrev/ Sherman mentioned off-list that he plans to look at this. -Alan. From jonathan.gibbons at oracle.com Fri Mar 25 14:40:02 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Fri, 25 Mar 2011 14:40:02 +0000 Subject: hg: jdk7/tl/langtools: 7009599: javac build puts extraneous files into dist/lib/classes.jar Message-ID: <20110325144007.2DA8D47482@hg.openjdk.java.net> Changeset: 26ea2557214a Author: jjg Date: 2011-03-25 07:39 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/26ea2557214a 7009599: javac build puts extraneous files into dist/lib/classes.jar Reviewed-by: ohair ! make/build.xml From jonathan.gibbons at oracle.com Fri Mar 25 14:59:32 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Fri, 25 Mar 2011 14:59:32 +0000 Subject: hg: jdk7/tl/langtools: 6437138: JSR 199: Compiler doesn't diagnose crash in user code; ... Message-ID: <20110325145934.AF7D447484@hg.openjdk.java.net> Changeset: 31e5cfc5a990 Author: jjg Date: 2011-03-25 07:58 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/31e5cfc5a990 6437138: JSR 199: Compiler doesn't diagnose crash in user code 6482554: uncaught exception from annotation processor not reported through JavaCompiler.CompilationTask.call Reviewed-by: mcimadamore + src/share/classes/com/sun/tools/javac/api/ClientCodeWrapper.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/main/Main.java ! src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java ! src/share/classes/com/sun/tools/javac/util/Log.java + test/tools/javac/api/T6437138.java + test/tools/javac/api/TestClientCodeWrapper.java From mandy.chung at oracle.com Fri Mar 25 16:28:43 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Fri, 25 Mar 2011 09:28:43 -0700 Subject: Review Request for 7024172 "Move platform MXBeans to java.lang.management" Message-ID: <4D8CC2BB.4060803@oracle.com> 7024172: Move BufferPoolMXBean and PlatformLoggingMXBean to java.lang.management Webrev at: http://cr.openjdk.java.net/~mchung/jdk7/7024172/webrev.00/ javadoc at: http://cr.openjdk.java.net/~mchung/jdk7/7024172/api Problem: java.nio.BufferPoolMXBean and java.util.logging.PlatformLoggingMXBean are new PlatformManagedObject added in JDK 7. However, the management interfaces and its implementation have a dependency on JMX. Having the management interfaces in the same package as its runtime component (e.g. BufferPoolMXBean in java.nio package) leads to split packages. That is, the java.nio.BufferPoolMXBean will be in the management module separated from all other java.nio.* classes that are in the base module which is awkward. Similarly, java.util.logging is split across the management module and the logging module. On the other hand, management interfaces typically are accessed through JMX. In addition, an ObjectName is defined for each platform MXBean as an identifier for remote access. Types referenced by management interfaces are generally the basic types and custom data type specific for monitoring and management purpose. java.nio.BufferPoolMXBean and java.util.logging.PlatformLoggingMXBean do not define attributes of type defined in the java.nio and java.util.logging package. This fix will eliminate the split package situation by moving the management interfaces to another package. These two MXBeans are new and we can set the right precedence for future management interfaces. Summary of Changes: 1. Move java.nio.BufferPoolMXBean to java.lang.management 2. Move java.util.logging.PlatformLoggingMXBean to java.lang.management 3. PlatformLoggingMXBean does not implement java.util.logging.LoggingMXBean but instead it defines the same methods as in LoggingMXBean. 4. java.lang.management.ManagementFactory spec change - Added methods to return a singleton platform MXBean i.e. getPlatformMXBean(Class) and getPlatformMXBean(MBeanServerConnection, Class) method - Replace getAllPlatformMXBeanInterfaces() that returns a List with a new getPlatformManagementInterfaces() method that returns a Set. Thanks Mandy From chris.hegarty at oracle.com Fri Mar 25 16:39:46 2011 From: chris.hegarty at oracle.com (chris.hegarty at oracle.com) Date: Fri, 25 Mar 2011 16:39:46 +0000 Subject: hg: jdk7/tl/jdk: 7030256: Cleanup/Remove code supporting old Windows versions (98, NT, 2000, etc) Message-ID: <20110325164005.569754748A@hg.openjdk.java.net> Changeset: c250a66c3b54 Author: chegar Date: 2011-03-25 16:38 +0000 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c250a66c3b54 7030256: Cleanup/Remove code supporting old Windows versions (98, NT, 2000, etc) Reviewed-by: alanb, mduigou ! make/java/net/Makefile ! src/windows/native/java/net/Inet6AddressImpl.c ! src/windows/native/java/net/NetworkInterface.c ! src/windows/native/java/net/NetworkInterface.h - src/windows/native/java/net/NetworkInterface_win9x.c ! src/windows/native/java/net/NetworkInterface_winXP.c ! src/windows/native/java/net/net_util_md.c ! src/windows/native/java/net/net_util_md.h ! src/windows/native/sun/net/dns/ResolverConfigurationImpl.c ! src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c From kumar.x.srinivasan at oracle.COM Fri Mar 25 18:03:34 2011 From: kumar.x.srinivasan at oracle.COM (Kumar Srinivasan) Date: Fri, 25 Mar 2011 11:03:34 -0700 Subject: Review request : 7031166 : pack200 CommandLineTest test failure - simple review Message-ID: <4D8CD8F6.7030904@oracle.COM> Hi, Replaces some old nio code which copies over the test sdk to run tests against. http://cr.openjdk.java.net/~ksrini/7031166/webrev.0/ Thanks Kumar From mike.duigou at oracle.com Fri Mar 25 18:28:46 2011 From: mike.duigou at oracle.com (mike.duigou at oracle.com) Date: Fri, 25 Mar 2011 18:28:46 +0000 Subject: hg: jdk7/tl/jdk: 7030442: Add missing @param tag for Collections.reverseOrder() Message-ID: <20110325182856.5C9FB47497@hg.openjdk.java.net> Changeset: d0d2c1014faa Author: mduigou Date: 2011-03-25 11:24 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d0d2c1014faa 7030442: Add missing @param tag for Collections.reverseOrder() Reviewed-by: darcy, alanb ! src/share/classes/java/util/Collections.java From Alan.Bateman at oracle.com Fri Mar 25 18:37:10 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Fri, 25 Mar 2011 18:37:10 +0000 Subject: Review request : 7031166 : pack200 CommandLineTest test failure - simple review In-Reply-To: <4D8CD8F6.7030904@oracle.COM> References: <4D8CD8F6.7030904@oracle.COM> Message-ID: <4D8CE0D6.6050205@oracle.com> Kumar Srinivasan wrote: > Hi, > > Replaces some old nio code which copies over the test sdk to run tests > against. > http://cr.openjdk.java.net/~ksrini/7031166/webrev.0/ > > Thanks > Kumar I see the original code creates the parent directories if they don't exist so if you want it work the same way then you could change it to: Path parent = dst.toPath().getParent(); if (parent != null) Files.createDirectories(parent); Files.copy(....); I see that CommandLineTests.runPack200 gets the absolute path before calling this function. You shouldn't need to do that now. I also see it tests if the target file exists and deletes it before the copy. You can skip that too if you add the REPLACE_EXISTING option to the copy. One other suggestion is to do a static import of StandardCopyOption to avoid the copy going into a second line. -Alan. From mike.duigou at oracle.com Fri Mar 25 18:37:57 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Fri, 25 Mar 2011 11:37:57 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <1300927894.11817.45.camel@chalkhill> References: <1300927894.11817.45.camel@chalkhill> Message-ID: <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> I've started to run the standard tests on this patch to make sure everything works as expected. I will try to have any other review notes by early next week. Thanks, Mike On Mar 23 2011, at 17:51 , Neil Richards wrote: > As previously trailed [1], please find below a suggested change to > address the problem reported in bug 6312706 [2], together with testcases > to demonstrate the veracity of the change. > > The change causes the entry set iterators for java.util.EnumMap and > java.util.IdentityHashMap to return distinct Map.Entry objects for each > call to next(). > > As detailed in the bug report, by doing this, the entry set, its > iterator, and the returned Entry objects behave in the manner in which > one would expect them to, without weird unexpected edge conditions. > > To mitigate the overhead of producing new objects for each Entry > returned, I've also expanded the implementation of EnumMap's equals(), > hashCode() and writeObject(), such that they avoid using its entry set > to traverse through the entries, and added suitable tests to demonstrate > these expanded forms still behave properly. > > I've also added a testcase to demonstrate that the problem being fixed > here does not occur in java.util.concurrent.ConcurrentHashMap . > (It was suggested in the bug report that the problem also occurred > there, so I thought it worthwhile to include the testcase to demonstrate > that it doesn't). > > As always, and comments / advice / suggestions gratefully received, > Thanks, > Neil > > [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-January/005763.html > [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6312706 > > -- > Unless stated above: > IBM email: neil_richards at uk.ibm.com > IBM United Kingdom Limited - Registered in England and Wales with number 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > > > # HG changeset patch > # User Neil Richards , > # Date 1298984147 0 > # Branch j6312706 > # Node ID 98616c2a19c4884bfadbc1dba032cb60fbcfe275 > # Parent 554adcfb615e63e62af530b1c10fcf7813a75b26 > 6312706: Map entrySet iterators should return different entries on each call to next() > Summary: Return distinct entry objects from entrySet iterators of EnumMap, IdentityHashMap > Contributed-by: > > diff -r 554adcfb615e -r 98616c2a19c4 src/share/classes/java/util/EnumMap.java > --- a/src/share/classes/java/util/EnumMap.java Wed Mar 16 15:01:07 2011 -0700 > +++ b/src/share/classes/java/util/EnumMap.java Tue Mar 01 12:55:47 2011 +0000 > @@ -106,7 +106,11 @@ > /** > * Distinguished non-null value for representing null values. > */ > - private static final Object NULL = new Object(); > + private static final Object NULL = new Object() { > + public int hashCode() { > + return 0; > + } > + }; > > private Object maskNull(Object value) { > return (value == null ? NULL : value); > @@ -464,6 +468,7 @@ > public Iterator> iterator() { > return new EntryIterator(); > } > + > public boolean contains(Object o) { > if (!(o instanceof Map.Entry)) > return false; > @@ -552,70 +557,82 @@ > } > } > > - /** > - * Since we don't use Entry objects, we use the Iterator itself as entry. > - */ > - private class EntryIterator extends EnumMapIterator> > - implements Map.Entry > - { > + private class EntryIterator extends EnumMapIterator> { > + private Entry lastReturnedEntry = null; > + > public Map.Entry next() { > if (!hasNext()) > throw new NoSuchElementException(); > - lastReturnedIndex = index++; > - return this; > + lastReturnedEntry = new Entry(index++); > + return lastReturnedEntry; > } > > - public K getKey() { > - checkLastReturnedIndexForEntryUse(); > - return keyUniverse[lastReturnedIndex]; > + public void remove() { > + lastReturnedIndex = > + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); > + super.remove(); > + lastReturnedEntry.index = lastReturnedIndex; > + lastReturnedEntry = null; > } > + > + private class Entry implements Map.Entry { > + private int index; > > - public V getValue() { > - checkLastReturnedIndexForEntryUse(); > - return unmaskNull(vals[lastReturnedIndex]); > - } > + private Entry(int index) { > + this.index = index; > + } > > - public V setValue(V value) { > - checkLastReturnedIndexForEntryUse(); > - V oldValue = unmaskNull(vals[lastReturnedIndex]); > - vals[lastReturnedIndex] = maskNull(value); > - return oldValue; > - } > + public K getKey() { > + checkIndexForEntryUse(); > + return keyUniverse[index]; > + } > > - public boolean equals(Object o) { > - if (lastReturnedIndex < 0) > - return o == this; > + public V getValue() { > + checkIndexForEntryUse(); > + return unmaskNull(vals[index]); > + } > > - if (!(o instanceof Map.Entry)) > - return false; > - Map.Entry e = (Map.Entry)o; > - V ourValue = unmaskNull(vals[lastReturnedIndex]); > - Object hisValue = e.getValue(); > - return e.getKey() == keyUniverse[lastReturnedIndex] && > - (ourValue == hisValue || > - (ourValue != null && ourValue.equals(hisValue))); > - } > + public V setValue(V value) { > + checkIndexForEntryUse(); > + V oldValue = unmaskNull(vals[index]); > + vals[index] = maskNull(value); > + return oldValue; > + } > > - public int hashCode() { > - if (lastReturnedIndex < 0) > - return super.hashCode(); > + public boolean equals(Object o) { > + if (index < 0) > + return o == this; > > - Object value = vals[lastReturnedIndex]; > - return keyUniverse[lastReturnedIndex].hashCode() > - ^ (value == NULL ? 0 : value.hashCode()); > - } > + if (!(o instanceof Map.Entry)) > + return false; > > - public String toString() { > - if (lastReturnedIndex < 0) > - return super.toString(); > + Map.Entry e = (Map.Entry)o; > + V ourValue = unmaskNull(vals[index]); > + Object hisValue = e.getValue(); > + return (e.getKey() == keyUniverse[index] && > + (ourValue == hisValue || > + (ourValue != null && ourValue.equals(hisValue)))); > + } > > - return keyUniverse[lastReturnedIndex] + "=" > - + unmaskNull(vals[lastReturnedIndex]); > - } > + public int hashCode() { > + if (index < 0) > + return super.hashCode(); > > - private void checkLastReturnedIndexForEntryUse() { > - if (lastReturnedIndex < 0) > - throw new IllegalStateException("Entry was removed"); > + return entryHashCode(index); > + } > + > + public String toString() { > + if (index < 0) > + return super.toString(); > + > + return keyUniverse[index] + "=" > + + unmaskNull(vals[index]); > + } > + > + private void checkIndexForEntryUse() { > + if (index < 0) > + throw new IllegalStateException("Entry was removed"); > + } > } > } > > @@ -631,10 +648,35 @@ > * @return true if the specified object is equal to this map > */ > public boolean equals(Object o) { > - if (!(o instanceof EnumMap)) > - return super.equals(o); > + if (this == o) > + return true; > + if (o instanceof EnumMap) > + return equals((EnumMap)o); > + if (!(o instanceof Map)) > + return false; > + > + Map m = (Map)o; > + if (size != m.size()) > + return false; > > - EnumMap em = (EnumMap)o; > + for (int i = 0; i < keyUniverse.length; i++) { > + if (null != vals[i]) { > + K key = keyUniverse[i]; > + V value = unmaskNull(vals[i]); > + if (null == value) { > + if (!((null == m.get(key)) && m.containsKey(key))) > + return false; > + } else { > + if (!value.equals(m.get(key))) > + return false; > + } > + } > + } > + > + return true; > + } > + > + private boolean equals(EnumMap em) { > if (em.keyType != keyType) > return size == 0 && em.size == 0; > > @@ -650,6 +692,26 @@ > } > > /** > + * Returns the hash code value for this map. The hash code of a map is > + * defined to be the sum of the hash codes of each entry in the map. > + */ > + public int hashCode() { > + int h = 0; > + > + for (int i = 0; i < keyUniverse.length; i++) { > + if (null != vals[i]) { > + h += entryHashCode(i); > + } > + } > + > + return h; > + } > + > + private int entryHashCode(int index) { > + return (keyUniverse[index].hashCode() ^ vals[index].hashCode()); > + } > + > + /** > * Returns a shallow copy of this enum map. (The values themselves > * are not cloned. > * > @@ -705,9 +767,13 @@ > s.writeInt(size); > > // Write out keys and values (alternating) > - for (Map.Entry e : entrySet()) { > - s.writeObject(e.getKey()); > - s.writeObject(e.getValue()); > + int entriesToBeWritten = size; > + for (int i = 0; entriesToBeWritten > 0; i++) { > + if (null != vals[i]) { > + s.writeObject(keyUniverse[i]); > + s.writeObject(unmaskNull(vals[i])); > + entriesToBeWritten--; > + } > } > } > > diff -r 554adcfb615e -r 98616c2a19c4 src/share/classes/java/util/IdentityHashMap.java > --- a/src/share/classes/java/util/IdentityHashMap.java Wed Mar 16 15:01:07 2011 -0700 > +++ b/src/share/classes/java/util/IdentityHashMap.java Tue Mar 01 12:55:47 2011 +0000 > @@ -829,71 +829,82 @@ > } > } > > - /** > - * Since we don't use Entry objects, we use the Iterator > - * itself as an entry. > - */ > private class EntryIterator > extends IdentityHashMapIterator> > - implements Map.Entry > { > + private Entry lastReturnedEntry = null; > + > public Map.Entry next() { > - nextIndex(); > - return this; > + lastReturnedEntry = new Entry(nextIndex()); > + return lastReturnedEntry; > } > > - public K getKey() { > - // Provide a better exception than out of bounds index > - if (lastReturnedIndex < 0) > - throw new IllegalStateException("Entry was removed"); > + public void remove() { > + lastReturnedIndex = > + ((0 == lastReturnedIndex) ? -1 : lastReturnedEntry.index); > + super.remove(); > + lastReturnedEntry.index = lastReturnedIndex; > + lastReturnedEntry = null; > + } > + > + private class Entry implements Map.Entry { > + private int index; > > - return (K) unmaskNull(traversalTable[lastReturnedIndex]); > - } > + private Entry(int index) { > + this.index = index; > + } > > - public V getValue() { > - // Provide a better exception than out of bounds index > - if (lastReturnedIndex < 0) > - throw new IllegalStateException("Entry was removed"); > + public K getKey() { > + checkIndexForEntryUse(); > + return (K) unmaskNull(traversalTable[index]); > + } > > - return (V) traversalTable[lastReturnedIndex+1]; > - } > + public V getValue() { > + checkIndexForEntryUse(); > + return (V) traversalTable[index+1]; > + } > > - public V setValue(V value) { > - // It would be mean-spirited to proceed here if remove() called > - if (lastReturnedIndex < 0) > - throw new IllegalStateException("Entry was removed"); > - V oldValue = (V) traversalTable[lastReturnedIndex+1]; > - traversalTable[lastReturnedIndex+1] = value; > - // if shadowing, force into main table > - if (traversalTable != IdentityHashMap.this.table) > - put((K) traversalTable[lastReturnedIndex], value); > - return oldValue; > - } > + public V setValue(V value) { > + checkIndexForEntryUse(); > + V oldValue = (V) traversalTable[index+1]; > + traversalTable[index+1] = value; > + // if shadowing, force into main table > + if (traversalTable != IdentityHashMap.this.table) > + put((K) traversalTable[index], value); > + return oldValue; > + } > > - public boolean equals(Object o) { > - if (lastReturnedIndex < 0) > - return super.equals(o); > + public boolean equals(Object o) { > + if (index < 0) > + return super.equals(o); > > - if (!(o instanceof Map.Entry)) > - return false; > - Map.Entry e = (Map.Entry)o; > - return e.getKey() == getKey() && > - e.getValue() == getValue(); > - } > + if (!(o instanceof Map.Entry)) > + return false; > + Map.Entry e = (Map.Entry)o; > + return (e.getKey() == unmaskNull(traversalTable[index]) && > + e.getValue() == traversalTable[index+1]); > + } > > - public int hashCode() { > - if (lastReturnedIndex < 0) > - return super.hashCode(); > + public int hashCode() { > + if (lastReturnedIndex < 0) > + return super.hashCode(); > > - return System.identityHashCode(getKey()) ^ > - System.identityHashCode(getValue()); > - } > + return (System.identityHashCode(unmaskNull(traversalTable[index])) ^ > + System.identityHashCode(traversalTable[index+1])); > + } > > - public String toString() { > - if (lastReturnedIndex < 0) > - return super.toString(); > + public String toString() { > + if (index < 0) > + return super.toString(); > > - return getKey() + "=" + getValue(); > + return (unmaskNull(traversalTable[index]) + "=" > + + traversalTable[index+1]); > + } > + > + private void checkIndexForEntryUse() { > + if (index < 0) > + throw new IllegalStateException("Entry was removed"); > + } > } > } > > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/DistinctEntrySetElements.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/EnumMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,60 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary Sets from Map.entrySet() return distinct objects for each Entry > + * @author Neil Richards , > + */ > + > +import java.util.EnumMap; > +import java.util.HashSet; > +import java.util.Map; > +import java.util.Set; > + > +public class DistinctEntrySetElements { > + static enum TestEnum { e00, e01, e02 } > + > + public static void main(String[] args) throws Exception { > + final EnumMap enumMap = new EnumMap<>(TestEnum.class); > + > + for (TestEnum e : TestEnum.values()) { > + enumMap.put(e, e.name()); > + } > + > + Set> entrySet = enumMap.entrySet(); > + HashSet> hashSet = new HashSet<>(entrySet); > + > + if (false == hashSet.equals(entrySet)) { > + throw new RuntimeException("Test FAILED: Sets are not equal."); > + } > + if (hashSet.hashCode() != entrySet.hashCode()) { > + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); > + } > + } > +} > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,60 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. > + * @author Neil Richards , > + */ > + > +import java.util.EnumMap; > +import java.util.Iterator; > +import java.util.Map; > + > +public class EntrySetIteratorRemoveInvalidatesEntry { > + static enum TestEnum { e00, e01, e02 } > + > + public static void main(String[] args) throws Exception { > + final EnumMap enumMap = new EnumMap<>(TestEnum.class); > + > + for (TestEnum e : TestEnum.values()) { > + enumMap.put(e, e.name()); > + } > + > + Iterator> entrySetIterator = > + enumMap.entrySet().iterator(); > + Map.Entry entry = entrySetIterator.next(); > + > + entrySetIterator.remove(); > + > + try { > + entry.getKey(); > + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); > + } catch (Exception e) { } > + } > +} > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/EnumMap/SimpleSerialization.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/EnumMap/SimpleSerialization.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,89 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary A serialized EnumMap can be successfully de-serialized. > + * @author Neil Richards , > + */ > + > +import java.io.ByteArrayInputStream; > +import java.io.ByteArrayOutputStream; > +import java.io.IOException; > +import java.io.ObjectInputStream; > +import java.io.ObjectOutputStream; > +import java.io.PrintWriter; > +import java.io.StringWriter; > +import java.util.EnumMap; > + > +public class SimpleSerialization { > + private enum TestEnum { e00, e01, e02, e03, e04, e05, e06, e07 } > + public static void main(final String[] args) throws Exception { > + final EnumMap enumMap = new EnumMap<>(TestEnum.class); > + > + enumMap.put(TestEnum.e01, TestEnum.e01.name()); > + enumMap.put(TestEnum.e04, TestEnum.e04.name()); > + enumMap.put(TestEnum.e05, TestEnum.e05.name()); > + > + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); > + final ObjectOutputStream oos = new ObjectOutputStream(baos); > + > + oos.writeObject(enumMap); > + oos.close(); > + > + final byte[] data = baos.toByteArray(); > + final ByteArrayInputStream bais = new ByteArrayInputStream(data); > + final ObjectInputStream ois = new ObjectInputStream(bais); > + > + final Object deserializedObject = ois.readObject(); > + ois.close(); > + > + if (false == enumMap.equals(deserializedObject)) { > + throw new RuntimeException(getFailureText(enumMap, deserializedObject)); > + } > + } > + > + private static String getFailureText(final Object orig, final Object copy) { > + final StringWriter sw = new StringWriter(); > + final PrintWriter pw = new PrintWriter(sw); > + > + pw.println("Test FAILED: Deserialized object is not equal to the original object"); > + pw.print("\tOriginal: "); > + printObject(pw, orig).println(); > + pw.print("\tCopy: "); > + printObject(pw, copy).println(); > + > + pw.close(); > + return sw.toString(); > + } > + > + private static PrintWriter printObject(final PrintWriter pw, final Object o) { > + pw.printf("%s@%08x", o.getClass().getName(), System.identityHashCode(o)); > + return pw; > + } > +} > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/IdentityHashMap/DistinctEntrySetElements.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,61 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary Sets from Map.entrySet() return distinct objects for each Entry > + * @author Neil Richards , > + */ > + > +import java.util.IdentityHashMap; > +import java.util.HashSet; > +import java.util.Map; > +import java.util.Set; > + > +public class DistinctEntrySetElements { > + public static void main(String[] args) throws Exception { > + final IdentityHashMap identityHashMap = > + new IdentityHashMap<>(); > + > + identityHashMap.put("One", "Un"); > + identityHashMap.put("Two", "Deux"); > + identityHashMap.put("Three", "Trois"); > + > + Set> entrySet = identityHashMap.entrySet(); > + HashSet> hashSet = new HashSet<>(entrySet); > + > + // NB: These comparisons are valid in this case because none of the > + // keys put into 'identityHashMap' above are equal to any other. > + if (false == hashSet.equals(entrySet)) { > + throw new RuntimeException("Test FAILED: Sets are not equal."); > + } > + if (hashSet.hashCode() != entrySet.hashCode()) { > + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); > + } > + } > +} > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,59 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. > + * @author Neil Richards , > + */ > + > +import java.util.IdentityHashMap; > +import java.util.Iterator; > +import java.util.Map; > + > +public class EntrySetIteratorRemoveInvalidatesEntry { > + public static void main(String[] args) throws Exception { > + final IdentityHashMap identityHashMap = > + new IdentityHashMap<>(); > + > + identityHashMap.put("One", "Un"); > + identityHashMap.put("Two", "Deux"); > + identityHashMap.put("Three", "Trois"); > + > + Iterator> entrySetIterator = > + identityHashMap.entrySet().iterator(); > + Map.Entry entry = entrySetIterator.next(); > + > + entrySetIterator.remove(); > + > + try { > + entry.getKey(); > + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); > + } catch (Exception e) { } > + } > +} > diff -r 554adcfb615e -r 98616c2a19c4 test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java Tue Mar 01 12:55:47 2011 +0000 > @@ -0,0 +1,59 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6312706 > + * @summary Sets from Map.entrySet() return distinct objects for each Entry > + * @author Neil Richards , > + */ > + > +import java.util.concurrent.ConcurrentHashMap; > +import java.util.HashSet; > +import java.util.Map; > +import java.util.Set; > + > +public class DistinctEntrySetElements { > + public static void main(String[] args) throws Exception { > + final ConcurrentHashMap concurrentHashMap = > + new ConcurrentHashMap<>(); > + > + concurrentHashMap.put("One", "Un"); > + concurrentHashMap.put("Two", "Deux"); > + concurrentHashMap.put("Three", "Trois"); > + > + Set> entrySet = concurrentHashMap.entrySet(); > + HashSet> hashSet = new HashSet<>(entrySet); > + > + if (false == hashSet.equals(entrySet)) { > + throw new RuntimeException("Test FAILED: Sets are not equal."); > + } > + if (hashSet.hashCode() != entrySet.hashCode()) { > + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); > + } > + } > +} > From mandy.chung at oracle.com Fri Mar 25 21:07:50 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Fri, 25 Mar 2011 14:07:50 -0700 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" Message-ID: <4D8D0426.3060305@oracle.com> 6381464: SimpleFormatter should use one single line format This is a follow-up of the review for 7006814. I came up with a better solution that allows a user to customize the output format for SimpleFormatter. You can specify the format string using the java.util.Formatter syntax in a new property: "java.util.logging.SimpleFormatter" that you can customize your own output format. See the javadoc for details: http://cr.openjdk.java.net/~mchung/jdk7/6381464/api/java/util/logging/SimpleFormatter.html Webrev at: http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.00/ Thanks Mandy From bhavesh.patel at sun.com Fri Mar 25 22:20:51 2011 From: bhavesh.patel at sun.com (bhavesh.patel at sun.com) Date: Fri, 25 Mar 2011 22:20:51 +0000 Subject: hg: jdk7/tl/langtools: 7001086: NLS: un-used resources should be removed from standard.properties and improper concatenation Message-ID: <20110325222053.8C166474A2@hg.openjdk.java.net> Changeset: 442b1366cfdf Author: bpatel Date: 2011-03-25 15:17 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/442b1366cfdf 7001086: NLS: un-used resources should be removed from standard.properties and improper concatenation Reviewed-by: jjg ! src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java ! src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties + test/com/sun/javadoc/testNonFrameWarning/TestNonFrameWarning.java + test/com/sun/javadoc/testNonFrameWarning/pkg/C.java From mandy.chung at oracle.com Fri Mar 25 22:32:51 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Fri, 25 Mar 2011 15:32:51 -0700 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" Message-ID: <4D8D1813.6030207@oracle.com> 6381464: SimpleFormatter should use one single line format This is a follow-up of the review for 7006814. I came up with a better solution that allows a user to customize the output format for SimpleFormatter. You can specify the format string using the java.util.Formatter syntax in a new property: "java.util.logging.SimpleFormatter" that you can customize your own output format. See the javadoc for details: http://cr.openjdk.java.net/~mchung/jdk7/6381464/api/java/util/logging/SimpleFormatter.html Webrev at: http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.00/ Thanks Mandy From joe.darcy at oracle.com Sat Mar 26 01:27:26 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Sat, 26 Mar 2011 01:27:26 +0000 Subject: hg: jdk7/tl/jdk: 7031371: Clarify javadoc of Throwable, including addSuppressed Message-ID: <20110326012736.DEBC0474AC@hg.openjdk.java.net> Changeset: cf743d5ca712 Author: darcy Date: 2011-03-25 18:26 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/cf743d5ca712 7031371: Clarify javadoc of Throwable, including addSuppressed Reviewed-by: smarks, mduigou ! src/share/classes/java/lang/Throwable.java From joe.darcy at oracle.com Sat Mar 26 01:48:22 2011 From: joe.darcy at oracle.com (joe.darcy at oracle.com) Date: Sat, 26 Mar 2011 01:48:22 +0000 Subject: hg: jdk7/tl/jdk: 7031376: Typos in javadoc of TimSort classes Message-ID: <20110326014832.35F07474AE@hg.openjdk.java.net> Changeset: e4e3dd6a7930 Author: darcy Date: 2011-03-25 18:47 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e4e3dd6a7930 7031376: Typos in javadoc of TimSort classes Reviewed-by: darcy Contributed-by: jjb at google.com ! src/share/classes/java/util/ComparableTimSort.java ! src/share/classes/java/util/TimSort.java From mike.duigou at oracle.com Sat Mar 26 02:33:42 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Fri, 25 Mar 2011 19:33:42 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> References: <1300927894.11817.45.camel@chalkhill> <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> Message-ID: <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> Hi Neil; I have run the jtreg regression suite against your webrev. I had to make one change to IdentityHashMap to satisfy the Collection/MOAT test. The failure condition involved calling EntrySet.remove() when there was no current entry due to a prior remove() or because next() had never been called. Since the case was caught by the MOAT.java test I didn't update any of the other unit tests. I have uploaded a webrev of the current version of the webrev to : http://cr.openjdk.java.net/~mduigou/6312706/0/webrev/ I am comfortable that the changes work as expected. I have some remaining concerns with possible impact on performance--not in general use; I've learned to expect that every data structure is abused by some benchmark in an atypical way that exposes the downside of any change. I will check this week with our performance SQE people to see if we can quantify the impact of this change. If you have any metrics that you can contribute which show this change to have negligible impact upon performance across common benchmarks it would definitely help to allay any fears. Thanks, Mike On Mar 25 2011, at 11:37 , Mike Duigou wrote: > I've started to run the standard tests on this patch to make sure everything works as expected. > > I will try to have any other review notes by early next week. > > Thanks, > > Mike > > On Mar 23 2011, at 17:51 , Neil Richards wrote: > >> As previously trailed [1], please find below a suggested change to >> address the problem reported in bug 6312706 [2], together with testcases >> to demonstrate the veracity of the change. >> >> The change causes the entry set iterators for java.util.EnumMap and >> java.util.IdentityHashMap to return distinct Map.Entry objects for each >> call to next(). >> >> As detailed in the bug report, by doing this, the entry set, its >> iterator, and the returned Entry objects behave in the manner in which >> one would expect them to, without weird unexpected edge conditions. >> >> To mitigate the overhead of producing new objects for each Entry >> returned, I've also expanded the implementation of EnumMap's equals(), >> hashCode() and writeObject(), such that they avoid using its entry set >> to traverse through the entries, and added suitable tests to demonstrate >> these expanded forms still behave properly. >> >> I've also added a testcase to demonstrate that the problem being fixed >> here does not occur in java.util.concurrent.ConcurrentHashMap . >> (It was suggested in the bug report that the problem also occurred >> there, so I thought it worthwhile to include the testcase to demonstrate >> that it doesn't). >> >> As always, and comments / advice / suggestions gratefully received, >> Thanks, >> Neil >> >> [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-January/005763.html >> [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6312706 >> >> -- >> Unless stated above: >> IBM email: neil_richards at uk.ibm.com >> IBM United Kingdom Limited - Registered in England and Wales with number 741598. >> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From neil.richards at ngmr.net Sat Mar 26 08:10:09 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Sat, 26 Mar 2011 01:10:09 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> References: <1300927894.11817.45.camel@chalkhill> <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> Message-ID: <1301127009.22505.116.camel@chalkhill> Hi Mike - thanks for posting up the webrev, and for your review. On Fri, 2011-03-25 at 19:33 -0700, Mike Duigou wrote: > I have run the jtreg regression suite against your webrev. I had to > make one change to IdentityHashMap to satisfy the Collection/MOAT > test. The failure condition involved calling EntrySet.remove() when > there was no current entry due to a prior remove() or because next() > had never been called. Oh, I'm sorry for this slip - my intention was that the assignment of 'lastReturnedIndex' at the start of remove() should be identical to that done (correctly) in the corresponding place in the changes in EnumMap, namely: lastReturnedIndex = ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); which allows the checking which is done inside the subsequent call to super.remove() to throw the appropriate exception if lastReturnedEntry is null. (With the new code, the value of the lastReturnedIndex field inside an EntryIterator object is really only of any significance within remove(), once it has been assigned by the line above, in preparation for the call to super.remove(). At all other points, the last returned index is held in lastReturnedEntry.index, or by lastReturnedEntry being null). With the assignment line suitably corrected, I believe there is no need for the added check. Please find below a corrected changeset 'hg export' with the relevant correction made. > If you have any metrics that you can contribute which show this change > to have negligible impact upon performance across common benchmarks it > would definitely help to allay any fears. Our versions of Java 6 (which have been "out in the field" for more than 3 years now) are not susceptible to this particular problem, so our performance folk (yes, we have them too!) have obviously found its resolution to be unconcerning. Whilst developing the suggested change, I also reviewed EnumMap and IdentityHashMap for opportunities to avoid using entry sets (and their iterators) for the current object altogether. This resulted in the expanded methods I highlighted in my previous post. (In these cases, the performance should actually improve slightly, as using the expansion avoids at least two object creations). Do you have any particular "common benchmarks" in mind? I'm currently out of office for a few days (visiting family in Concord), but can look to work on provide supporting data once I'm back "in situ", as necessary. Hope this helps, Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU # HG changeset patch # User Neil Richards , # Date 1298984147 0 # Branch j6312706 # Node ID bc07c38bac7cbd7ca47bbc382557831ec5c2100c # Parent 554adcfb615e63e62af530b1c10fcf7813a75b26 6312706: Map entrySet iterators should return different entries on each call to next() Summary: Return distinct entry objects from entrySet iterators of EnumMap, IdentityHashMap Contributed-by: diff --git a/src/share/classes/java/util/EnumMap.java b/src/share/classes/java/util/EnumMap.java --- a/src/share/classes/java/util/EnumMap.java +++ b/src/share/classes/java/util/EnumMap.java @@ -106,7 +106,11 @@ /** * Distinguished non-null value for representing null values. */ - private static final Object NULL = new Object(); + private static final Object NULL = new Object() { + public int hashCode() { + return 0; + } + }; private Object maskNull(Object value) { return (value == null ? NULL : value); @@ -464,6 +468,7 @@ public Iterator> iterator() { return new EntryIterator(); } + public boolean contains(Object o) { if (!(o instanceof Map.Entry)) return false; @@ -552,70 +557,82 @@ } } - /** - * Since we don't use Entry objects, we use the Iterator itself as entry. - */ - private class EntryIterator extends EnumMapIterator> - implements Map.Entry - { + private class EntryIterator extends EnumMapIterator> { + private Entry lastReturnedEntry = null; + public Map.Entry next() { if (!hasNext()) throw new NoSuchElementException(); - lastReturnedIndex = index++; - return this; + lastReturnedEntry = new Entry(index++); + return lastReturnedEntry; } - public K getKey() { - checkLastReturnedIndexForEntryUse(); - return keyUniverse[lastReturnedIndex]; + public void remove() { + lastReturnedIndex = + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; } + + private class Entry implements Map.Entry { + private int index; - public V getValue() { - checkLastReturnedIndexForEntryUse(); - return unmaskNull(vals[lastReturnedIndex]); - } + private Entry(int index) { + this.index = index; + } - public V setValue(V value) { - checkLastReturnedIndexForEntryUse(); - V oldValue = unmaskNull(vals[lastReturnedIndex]); - vals[lastReturnedIndex] = maskNull(value); - return oldValue; - } + public K getKey() { + checkIndexForEntryUse(); + return keyUniverse[index]; + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return o == this; + public V getValue() { + checkIndexForEntryUse(); + return unmaskNull(vals[index]); + } - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - V ourValue = unmaskNull(vals[lastReturnedIndex]); - Object hisValue = e.getValue(); - return e.getKey() == keyUniverse[lastReturnedIndex] && - (ourValue == hisValue || - (ourValue != null && ourValue.equals(hisValue))); - } + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = unmaskNull(vals[index]); + vals[index] = maskNull(value); + return oldValue; + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public boolean equals(Object o) { + if (index < 0) + return o == this; - Object value = vals[lastReturnedIndex]; - return keyUniverse[lastReturnedIndex].hashCode() - ^ (value == NULL ? 0 : value.hashCode()); - } + if (!(o instanceof Map.Entry)) + return false; - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + Map.Entry e = (Map.Entry)o; + V ourValue = unmaskNull(vals[index]); + Object hisValue = e.getValue(); + return (e.getKey() == keyUniverse[index] && + (ourValue == hisValue || + (ourValue != null && ourValue.equals(hisValue)))); + } - return keyUniverse[lastReturnedIndex] + "=" - + unmaskNull(vals[lastReturnedIndex]); - } + public int hashCode() { + if (index < 0) + return super.hashCode(); - private void checkLastReturnedIndexForEntryUse() { - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + return entryHashCode(index); + } + + public String toString() { + if (index < 0) + return super.toString(); + + return keyUniverse[index] + "=" + + unmaskNull(vals[index]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } @@ -631,10 +648,35 @@ * @return true if the specified object is equal to this map */ public boolean equals(Object o) { - if (!(o instanceof EnumMap)) - return super.equals(o); + if (this == o) + return true; + if (o instanceof EnumMap) + return equals((EnumMap)o); + if (!(o instanceof Map)) + return false; + + Map m = (Map)o; + if (size != m.size()) + return false; - EnumMap em = (EnumMap)o; + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + K key = keyUniverse[i]; + V value = unmaskNull(vals[i]); + if (null == value) { + if (!((null == m.get(key)) && m.containsKey(key))) + return false; + } else { + if (!value.equals(m.get(key))) + return false; + } + } + } + + return true; + } + + private boolean equals(EnumMap em) { if (em.keyType != keyType) return size == 0 && em.size == 0; @@ -650,6 +692,26 @@ } /** + * Returns the hash code value for this map. The hash code of a map is + * defined to be the sum of the hash codes of each entry in the map. + */ + public int hashCode() { + int h = 0; + + for (int i = 0; i < keyUniverse.length; i++) { + if (null != vals[i]) { + h += entryHashCode(i); + } + } + + return h; + } + + private int entryHashCode(int index) { + return (keyUniverse[index].hashCode() ^ vals[index].hashCode()); + } + + /** * Returns a shallow copy of this enum map. (The values themselves * are not cloned. * @@ -705,9 +767,13 @@ s.writeInt(size); // Write out keys and values (alternating) - for (Map.Entry e : entrySet()) { - s.writeObject(e.getKey()); - s.writeObject(e.getValue()); + int entriesToBeWritten = size; + for (int i = 0; entriesToBeWritten > 0; i++) { + if (null != vals[i]) { + s.writeObject(keyUniverse[i]); + s.writeObject(unmaskNull(vals[i])); + entriesToBeWritten--; + } } } diff --git a/src/share/classes/java/util/IdentityHashMap.java b/src/share/classes/java/util/IdentityHashMap.java --- a/src/share/classes/java/util/IdentityHashMap.java +++ b/src/share/classes/java/util/IdentityHashMap.java @@ -829,71 +829,82 @@ } } - /** - * Since we don't use Entry objects, we use the Iterator - * itself as an entry. - */ private class EntryIterator extends IdentityHashMapIterator> - implements Map.Entry { + private Entry lastReturnedEntry = null; + public Map.Entry next() { - nextIndex(); - return this; + lastReturnedEntry = new Entry(nextIndex()); + return lastReturnedEntry; } - public K getKey() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + public void remove() { + lastReturnedIndex = + ((null == lastReturnedEntry) ? -1 : lastReturnedEntry.index); + super.remove(); + lastReturnedEntry.index = lastReturnedIndex; + lastReturnedEntry = null; + } + + private class Entry implements Map.Entry { + private int index; - return (K) unmaskNull(traversalTable[lastReturnedIndex]); - } + private Entry(int index) { + this.index = index; + } - public V getValue() { - // Provide a better exception than out of bounds index - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); + public K getKey() { + checkIndexForEntryUse(); + return (K) unmaskNull(traversalTable[index]); + } - return (V) traversalTable[lastReturnedIndex+1]; - } + public V getValue() { + checkIndexForEntryUse(); + return (V) traversalTable[index+1]; + } - public V setValue(V value) { - // It would be mean-spirited to proceed here if remove() called - if (lastReturnedIndex < 0) - throw new IllegalStateException("Entry was removed"); - V oldValue = (V) traversalTable[lastReturnedIndex+1]; - traversalTable[lastReturnedIndex+1] = value; - // if shadowing, force into main table - if (traversalTable != IdentityHashMap.this.table) - put((K) traversalTable[lastReturnedIndex], value); - return oldValue; - } + public V setValue(V value) { + checkIndexForEntryUse(); + V oldValue = (V) traversalTable[index+1]; + traversalTable[index+1] = value; + // if shadowing, force into main table + if (traversalTable != IdentityHashMap.this.table) + put((K) traversalTable[index], value); + return oldValue; + } - public boolean equals(Object o) { - if (lastReturnedIndex < 0) - return super.equals(o); + public boolean equals(Object o) { + if (index < 0) + return super.equals(o); - if (!(o instanceof Map.Entry)) - return false; - Map.Entry e = (Map.Entry)o; - return e.getKey() == getKey() && - e.getValue() == getValue(); - } + if (!(o instanceof Map.Entry)) + return false; + Map.Entry e = (Map.Entry)o; + return (e.getKey() == unmaskNull(traversalTable[index]) && + e.getValue() == traversalTable[index+1]); + } - public int hashCode() { - if (lastReturnedIndex < 0) - return super.hashCode(); + public int hashCode() { + if (lastReturnedIndex < 0) + return super.hashCode(); - return System.identityHashCode(getKey()) ^ - System.identityHashCode(getValue()); - } + return (System.identityHashCode(unmaskNull(traversalTable[index])) ^ + System.identityHashCode(traversalTable[index+1])); + } - public String toString() { - if (lastReturnedIndex < 0) - return super.toString(); + public String toString() { + if (index < 0) + return super.toString(); - return getKey() + "=" + getValue(); + return (unmaskNull(traversalTable[index]) + "=" + + traversalTable[index+1]); + } + + private void checkIndexForEntryUse() { + if (index < 0) + throw new IllegalStateException("Entry was removed"); + } } } diff --git a/test/java/util/EnumMap/DistinctEntrySetElements.java b/test/java/util/EnumMap/DistinctEntrySetElements.java new file mode 100644 --- /dev/null +++ b/test/java/util/EnumMap/DistinctEntrySetElements.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.EnumMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Set> entrySet = enumMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff --git a/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java new file mode 100644 --- /dev/null +++ b/test/java/util/EnumMap/EntrySetIteratorRemoveInvalidatesEntry.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards , + */ + +import java.util.EnumMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + static enum TestEnum { e00, e01, e02 } + + public static void main(String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + for (TestEnum e : TestEnum.values()) { + enumMap.put(e, e.name()); + } + + Iterator> entrySetIterator = + enumMap.entrySet().iterator(); + Map.Entry entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff --git a/test/java/util/EnumMap/SimpleSerialization.java b/test/java/util/EnumMap/SimpleSerialization.java new file mode 100644 --- /dev/null +++ b/test/java/util/EnumMap/SimpleSerialization.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary A serialized EnumMap can be successfully de-serialized. + * @author Neil Richards , + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.EnumMap; + +public class SimpleSerialization { + private enum TestEnum { e00, e01, e02, e03, e04, e05, e06, e07 } + public static void main(final String[] args) throws Exception { + final EnumMap enumMap = new EnumMap<>(TestEnum.class); + + enumMap.put(TestEnum.e01, TestEnum.e01.name()); + enumMap.put(TestEnum.e04, TestEnum.e04.name()); + enumMap.put(TestEnum.e05, TestEnum.e05.name()); + + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); + final ObjectOutputStream oos = new ObjectOutputStream(baos); + + oos.writeObject(enumMap); + oos.close(); + + final byte[] data = baos.toByteArray(); + final ByteArrayInputStream bais = new ByteArrayInputStream(data); + final ObjectInputStream ois = new ObjectInputStream(bais); + + final Object deserializedObject = ois.readObject(); + ois.close(); + + if (false == enumMap.equals(deserializedObject)) { + throw new RuntimeException(getFailureText(enumMap, deserializedObject)); + } + } + + private static String getFailureText(final Object orig, final Object copy) { + final StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + + pw.println("Test FAILED: Deserialized object is not equal to the original object"); + pw.print("\tOriginal: "); + printObject(pw, orig).println(); + pw.print("\tCopy: "); + printObject(pw, copy).println(); + + pw.close(); + return sw.toString(); + } + + private static PrintWriter printObject(final PrintWriter pw, final Object o) { + pw.printf("%s@%08x", o.getClass().getName(), System.identityHashCode(o)); + return pw; + } +} diff --git a/test/java/util/IdentityHashMap/DistinctEntrySetElements.java b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java new file mode 100644 --- /dev/null +++ b/test/java/util/IdentityHashMap/DistinctEntrySetElements.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.IdentityHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final IdentityHashMap identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Set> entrySet = identityHashMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + // NB: These comparisons are valid in this case because none of the + // keys put into 'identityHashMap' above are equal to any other. + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} diff --git a/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java new file mode 100644 --- /dev/null +++ b/test/java/util/IdentityHashMap/EntrySetIteratorRemoveInvalidatesEntry.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Iterator.remove() from Map.entrySet().iterator() invalidates returned Entry. + * @author Neil Richards , + */ + +import java.util.IdentityHashMap; +import java.util.Iterator; +import java.util.Map; + +public class EntrySetIteratorRemoveInvalidatesEntry { + public static void main(String[] args) throws Exception { + final IdentityHashMap identityHashMap = + new IdentityHashMap<>(); + + identityHashMap.put("One", "Un"); + identityHashMap.put("Two", "Deux"); + identityHashMap.put("Three", "Trois"); + + Iterator> entrySetIterator = + identityHashMap.entrySet().iterator(); + Map.Entry entry = entrySetIterator.next(); + + entrySetIterator.remove(); + + try { + entry.getKey(); + throw new RuntimeException("Test FAILED: Entry not invalidated by removal."); + } catch (Exception e) { } + } +} diff --git a/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java new file mode 100644 --- /dev/null +++ b/test/java/util/concurrent/ConcurrentHashMap/DistinctEntrySetElements.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 6312706 + * @summary Sets from Map.entrySet() return distinct objects for each Entry + * @author Neil Richards , + */ + +import java.util.concurrent.ConcurrentHashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class DistinctEntrySetElements { + public static void main(String[] args) throws Exception { + final ConcurrentHashMap concurrentHashMap = + new ConcurrentHashMap<>(); + + concurrentHashMap.put("One", "Un"); + concurrentHashMap.put("Two", "Deux"); + concurrentHashMap.put("Three", "Trois"); + + Set> entrySet = concurrentHashMap.entrySet(); + HashSet> hashSet = new HashSet<>(entrySet); + + if (false == hashSet.equals(entrySet)) { + throw new RuntimeException("Test FAILED: Sets are not equal."); + } + if (hashSet.hashCode() != entrySet.hashCode()) { + throw new RuntimeException("Test FAILED: Set's hashcodes are not equal."); + } + } +} From Alan.Bateman at oracle.com Sun Mar 27 19:09:43 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 27 Mar 2011 20:09:43 +0100 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: <4D8D1813.6030207@oracle.com> References: <4D8D1813.6030207@oracle.com> Message-ID: <4D8F8B77.3080008@oracle.com> Mandy Chung wrote: > > > 6381464: SimpleFormatter should use one single line format > > This is a follow-up of the review for 7006814. I came up with a better > solution that allows a user to customize the output format for > SimpleFormatter. > You can specify the format string using the java.util.Formatter syntax in > a new property: "java.util.logging.SimpleFormatter" that you can > customize > your own output format. See the javadoc for details: > > http://cr.openjdk.java.net/~mchung/jdk7/6381464/api/java/util/logging/SimpleFormatter.html > > > Webrev at: > http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.00/ It definitely make sense to do this in conjunction with 7006814. I've gone through the webrev and it mostly looks good to me. A couple of small comments: SimpleFormatter L144-146, you could use a StringBuilder to build it up when the source file is known. SimpleFormatter L156, I assume this should be %n rather than \n. Same thing in PlatformLogger. SimpleFormatter L161, this pre-dates your changes but I don't see why it catch Exception here. Same thing in PlatformLogger. In logging.properties it might be good to extend the comment to mention that the example generate one-line log messages. The new test has a copyright date of 2010, I assume this should be 2011. In the test would it be better to use a temporary file rather than a file in the working directory. -Alan. From Alan.Bateman at oracle.com Sun Mar 27 21:29:56 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Sun, 27 Mar 2011 22:29:56 +0100 Subject: Review Request for 7024172 "Move platform MXBeans to java.lang.management" In-Reply-To: <4D8CC2BB.4060803@oracle.com> References: <4D8CC2BB.4060803@oracle.com> Message-ID: <4D8FAC54.9090703@oracle.com> Mandy Chung wrote: > > > 7024172: Move BufferPoolMXBean and PlatformLoggingMXBean to > java.lang.management > > Webrev at: > http://cr.openjdk.java.net/~mchung/jdk7/7024172/webrev.00/ > javadoc at: > http://cr.openjdk.java.net/~mchung/jdk7/7024172/api > I've reviewed the changes, I'm sure ?amonn will too. Mostly look okay to me, with a couple of small comments. In Managamenet.getPlatformMXBean (L647 and L723) it relies on PlatformComponent.getSingletonMXBean throwing IAE. It might be more obvious to use isSingleton instead and to throw the IAE if not. ManagementFactoryHelper L148 - is this LoggingMXBean interface needed (just wondering if PlatformLoggingImpl could just instead implement PlatformLoggingMXBean and j.u.logging.LoggingMXBean). PlatformLoggingMXBean.getLoggerNames reads "Returns the list of currently registered loggers" where as it is actually the list of the names of the registered loggers. Minor inconsistency in PlatformLoggingMXBean in that two of the methods have spaces around the parameters, whereas the other two don't. -Alan. From kumar.x.srinivasan at oracle.COM Mon Mar 28 01:19:08 2011 From: kumar.x.srinivasan at oracle.COM (Kumar Srinivasan) Date: Sun, 27 Mar 2011 18:19:08 -0700 Subject: Review request : 7031166 : pack200 CommandLineTest test failure - simple review In-Reply-To: <4D8CE0D6.6050205@oracle.com> References: <4D8CD8F6.7030904@oracle.COM> <4D8CE0D6.6050205@oracle.com> Message-ID: <4D8FE20C.5040708@oracle.COM> Alan, http://cr.openjdk.java.net/~ksrini/7031166/webrev.1 Fixed it per your suggestions. Thanks Kumar > Kumar Srinivasan wrote: >> Hi, >> >> Replaces some old nio code which copies over the test sdk to run >> tests against. >> http://cr.openjdk.java.net/~ksrini/7031166/webrev.0/ >> >> Thanks >> Kumar > I see the original code creates the parent directories if they don't > exist so if you want it work the same way then you could change it to: > > Path parent = dst.toPath().getParent(); > if (parent != null) > Files.createDirectories(parent); > Files.copy(....); > > I see that CommandLineTests.runPack200 gets the absolute path before > calling this function. You shouldn't need to do that now. I also see > it tests if the target file exists and deletes it before the copy. You > can skip that too if you add the REPLACE_EXISTING option to the copy. > One other suggestion is to do a static import of StandardCopyOption to > avoid the copy going into a second line. > > -Alan. From Alan.Bateman at oracle.com Mon Mar 28 01:42:45 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 28 Mar 2011 02:42:45 +0100 Subject: Review request : 7031166 : pack200 CommandLineTest test failure - simple review In-Reply-To: <4D8FE20C.5040708@oracle.COM> References: <4D8CD8F6.7030904@oracle.COM> <4D8CE0D6.6050205@oracle.com> <4D8FE20C.5040708@oracle.COM> Message-ID: <4D8FE795.3010205@oracle.com> Kumar Srinivasan wrote: > Alan, > > http://cr.openjdk.java.net/~ksrini/7031166/webrev.1 > > Fixed it per your suggestions. Looks good to me. -Alan. From mark.reinhold at oracle.com Mon Mar 28 04:03:45 2011 From: mark.reinhold at oracle.com (mark.reinhold at oracle.com) Date: Sun, 27 Mar 2011 21:03:45 -0700 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: alan.bateman@oracle.com; Sun, 27 Mar 2011 20:09:43 BST; <4D8F8B77.3080008@oracle.com> Message-ID: <20110328040345.F06807F7@eggemoggin.niobe.net> 2011/3/27 12:09 -0700, alan.bateman at oracle.com: > Mandy Chung wrote: >> 6381464: SimpleFormatter should use one single line format >> >> ... >> Webrev at: >> http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.00/ > ... > > In the test would it be better to use a temporary file rather than a file in > the working directory. Why? Unless something's changed, the jtreg harness provides each test run with a fresh working directory. Creating scratch files in the current directory is more convenient when writing a test and also more convenient when debugging a test outside of the harness. - Mark From weijun.wang at oracle.com Mon Mar 28 10:05:39 2011 From: weijun.wang at oracle.com (weijun.wang at oracle.com) Date: Mon, 28 Mar 2011 10:05:39 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110328100619.80C9247534@hg.openjdk.java.net> Changeset: 86ace035d04d Author: weijun Date: 2011-03-28 18:04 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/86ace035d04d 7019384: Realm.getRealmsList returns realms list in wrong (reverse) order Reviewed-by: xuelei ! src/share/classes/sun/security/krb5/Realm.java ! test/sun/security/krb5/ParseCAPaths.java ! test/sun/security/krb5/krb5-capaths.conf Changeset: 79cd9368b555 Author: weijun Date: 2011-03-28 18:04 +0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/79cd9368b555 7031536: test/sun/security/krb5/auto/HttpNegotiateServer.java should not use static ports Reviewed-by: xuelei ! test/sun/security/jgss/GssNPE.java ! test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java ! test/sun/security/krb5/ConfPlusProp.java ! test/sun/security/krb5/ConfigWithQuotations.java ! test/sun/security/krb5/DnsFallback.java ! test/sun/security/krb5/IPv6.java ! test/sun/security/krb5/ParseConfig.java ! test/sun/security/krb5/RFC396xTest.java ! test/sun/security/krb5/TimeInCCache.java ! test/sun/security/krb5/auto/HttpNegotiateServer.java ! test/sun/security/krb5/etype/ETypeOrder.java ! test/sun/security/krb5/ktab/HighestKvno.java From Alan.Bateman at oracle.com Mon Mar 28 13:09:33 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 28 Mar 2011 14:09:33 +0100 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: <20110328040345.F06807F7@eggemoggin.niobe.net> References: <20110328040345.F06807F7@eggemoggin.niobe.net> Message-ID: <4D90888D.4040209@oracle.com> mark.reinhold at oracle.com wrote: > 2011/3/27 12:09 -0700, alan.bateman at oracle.com: > >> : >> In the test would it be better to use a temporary file rather than a file in >> the working directory. >> > > Why? Unless something's changed, the jtreg harness provides each > test run with a fresh working directory. Sorry, you're right. I've been trying to watch out for issues that might caught interference between tests running concurrently and this isn't one of them. -Alan From Alan.Bateman at oracle.com Mon Mar 28 15:58:57 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Mon, 28 Mar 2011 16:58:57 +0100 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups Message-ID: <4D90B041.9000901@oracle.com> There are several places in the Windows native code where win32 functions are looked up with GetProcAddress after loading the DLL. Many of these places date back to when the JDK was built on Windows NT. Chris removed several of them from the network code in a recent change-set where he was cleaning up some code in that area. While editing java_props_md.c I also changed the code that uses GetUserName to get the value for the user.name property it's not set by an environment variable. This was something Dmytro Sheyko pointed out on this list a few weeks ago [1]. The webrev with the changes is here: http://cr.openjdk.java.net/~alanb/7030249/webrev/ Vinnie - I updated the MS CAPI provider while I was at it, do you mind reviewing that? I've run the tests in test/sun/security/mscapi to verify. -Alan. [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005837.html From kelly.ohair at oracle.com Mon Mar 28 16:14:42 2011 From: kelly.ohair at oracle.com (Kelly O'Hair) Date: Mon, 28 Mar 2011 09:14:42 -0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D90B041.9000901@oracle.com> References: <4D90B041.9000901@oracle.com> Message-ID: I'll admit that I'm not following this C code horribly well, but overall it does look much cleaner. As well as I can follow it, it looks good. In the Makefile, could we get some comments as to why the lib's are needed and also some comments as to what the delayload means and why it is important? I could guess, but I'd prefer some makefile comments to help the next poor soul looking at it. ;^) --- Windows native code is like living on another planet. :^( -kto On Mar 28, 2011, at 8:58 AM, Alan Bateman wrote: > > There are several places in the Windows native code where win32 functions are looked up with GetProcAddress after loading the DLL. Many of these places date back to when the JDK was built on Windows NT. Chris removed several of them from the network code in a recent change-set where he was cleaning up some code in that area. While editing java_props_md.c I also changed the code that uses GetUserName to get the value for the user.name property it's not set by an environment variable. This was something Dmytro Sheyko pointed out on this list a few weeks ago [1]. The webrev with the changes is here: > http://cr.openjdk.java.net/~alanb/7030249/webrev/ > > Vinnie - I updated the MS CAPI provider while I was at it, do you mind reviewing that? I've run the tests in test/sun/security/mscapi to verify. > > -Alan. > > [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005837.html > From chris.hegarty at oracle.com Mon Mar 28 16:17:35 2011 From: chris.hegarty at oracle.com (Chris Hegarty) Date: Mon, 28 Mar 2011 17:17:35 +0100 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D90B041.9000901@oracle.com> References: <4D90B041.9000901@oracle.com> Message-ID: <4D90B49F.9040305@oracle.com> The changes look good to me. Much cleaner. -Chris. On 03/28/11 04:58 PM, Alan Bateman wrote: > > There are several places in the Windows native code where win32 > functions are looked up with GetProcAddress after loading the DLL. Many > of these places date back to when the JDK was built on Windows NT. Chris > removed several of them from the network code in a recent change-set > where he was cleaning up some code in that area. While editing > java_props_md.c I also changed the code that uses GetUserName to get the > value for the user.name property it's not set by an environment > variable. This was something Dmytro Sheyko pointed out on this list a > few weeks ago [1]. The webrev with the changes is here: > http://cr.openjdk.java.net/~alanb/7030249/webrev/ > > Vinnie - I updated the MS CAPI provider while I was at it, do you mind > reviewing that? I've run the tests in test/sun/security/mscapi to verify. > > -Alan. > > [1] > http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005837.html > > From mandy.chung at oracle.com Mon Mar 28 19:01:05 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Mon, 28 Mar 2011 12:01:05 -0700 Subject: Review Request for 7024172 "Move platform MXBeans to java.lang.management" In-Reply-To: <4D8FAC54.9090703@oracle.com> References: <4D8CC2BB.4060803@oracle.com> <4D8FAC54.9090703@oracle.com> Message-ID: <4D90DAF1.6050406@oracle.com> On 03/27/11 14:29, Alan Bateman wrote: > Mandy Chung wrote: >> >> >> 7024172: Move BufferPoolMXBean and PlatformLoggingMXBean to >> java.lang.management >> >> Webrev at: >> http://cr.openjdk.java.net/~mchung/jdk7/7024172/webrev.00/ >> javadoc at: >> http://cr.openjdk.java.net/~mchung/jdk7/7024172/api >> > I've reviewed the changes, I'm sure ?amonn will too. Mostly look okay > to me, with a couple of small comments. > > In Managamenet.getPlatformMXBean (L647 and L723) it relies on > PlatformComponent.getSingletonMXBean throwing IAE. It might be more > obvious to use isSingleton instead and to throw the IAE if not. > I cleaned that up. > ManagementFactoryHelper L148 - is this LoggingMXBean interface needed > (just wondering if PlatformLoggingImpl could just instead implement > PlatformLoggingMXBean and j.u.logging.LoggingMXBean). > This LoggingMXBean is needed to create a compliant MXBean; otherwise, if PlatformLoggingImpl implements PlatformLoggingMXBean and j.u.logging.LoggingMXBean directly, MBeanServer will throw a NonCompliantMBeanException. As specified in the MXBean, http://download.oracle.com/javase/6/docs/api/javax/management/MXBean.html#mxbean-def If an object implements two MXBean interfaces, it is a non-compliant MXBean or it extends StandardMBean. I added the comment to explain this. > PlatformLoggingMXBean.getLoggerNames reads "Returns the list of > currently registered loggers" where as it is actually the list of the > names of the registered loggers. > > Minor inconsistency in PlatformLoggingMXBean in that two of the > methods have spaces around the parameters, whereas the other two don't. Fixed. Here is the latest webrev: http://cr.openjdk.java.net/~mchung/jdk7/7024172/webrev.01/ Thanks Mandy From mandy.chung at oracle.com Mon Mar 28 19:25:04 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Mon, 28 Mar 2011 12:25:04 -0700 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: <4D8F8B77.3080008@oracle.com> References: <4D8D1813.6030207@oracle.com> <4D8F8B77.3080008@oracle.com> Message-ID: <4D90E090.5060905@oracle.com> On 03/27/11 12:09, Alan Bateman wrote: > Mandy Chung wrote: >> >> >> 6381464: SimpleFormatter should use one single line format >> >> This is a follow-up of the review for 7006814. I came up with a better >> solution that allows a user to customize the output format for >> SimpleFormatter. >> You can specify the format string using the java.util.Formatter >> syntax in >> a new property: "java.util.logging.SimpleFormatter" that you can >> customize >> your own output format. See the javadoc for details: >> >> http://cr.openjdk.java.net/~mchung/jdk7/6381464/api/java/util/logging/SimpleFormatter.html >> >> >> Webrev at: >> http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.00/ > It definitely make sense to do this in conjunction with 7006814. I've > gone through the webrev and it mostly looks good to me. A couple of > small comments: Thanks for the feedback. It's the right thing to do. > SimpleFormatter L144-146, you could use a StringBuilder to build it up > when the source file is known. I considered that. But I am not sure if this simple concatenation worths the overhead of constructing the StringBuilder. > > SimpleFormatter L156, I assume this should be %n rather than \n. Same > thing in PlatformLogger. > '\n' is a character added in the string created in L156 but not in a format string in which %n is used to represents a newline. > SimpleFormatter L161, this pre-dates your changes but I don't see why > it catch Exception here. Same thing in PlatformLogger. > Good catch. I clean that up. > In logging.properties it might be good to extend the comment to > mention that the example generate one-line log messages. > Updated. > The new test has a copyright date of 2010, I assume this should be 2011. > Fixed - copy-n-paste error :) Updated webrev: http://cr.openjdk.java.net/~mchung/jdk7/6381464/webrev.01/ Thanks Mandy From mike.duigou at oracle.com Mon Mar 28 21:01:34 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Mon, 28 Mar 2011 14:01:34 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <1301127009.22505.116.camel@chalkhill> References: <1300927894.11817.45.camel@chalkhill> <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> <1301127009.22505.116.camel@chalkhill> Message-ID: <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com> On Mar 26 2011, at 01:10 , Neil Richards wrote: > Hi Mike - thanks for posting up the webrev, and for your review. > > On Fri, 2011-03-25 at 19:33 -0700, Mike Duigou wrote: >> I have run the jtreg regression suite against your webrev. I had to >> make one change to IdentityHashMap to satisfy the Collection/MOAT >> test. The failure condition involved calling EntrySet.remove() when >> there was no current entry due to a prior remove() or because next() >> had never been called. > > With the assignment line suitably corrected, I believe there is no need > for the added check. > Please find below a corrected changeset 'hg export' with the relevant > correction made. I will apply this patch and retest. >> If you have any metrics that you can contribute which show this change >> to have negligible impact upon performance across common benchmarks it >> would definitely help to allay any fears. > > Our versions of Java 6 (which have been "out in the field" for more than > 3 years now) are not susceptible to this particular problem, so our > performance folk (yes, we have them too!) have obviously found its > resolution to be unconcerning. > > Whilst developing the suggested change, I also reviewed EnumMap and > IdentityHashMap for opportunities to avoid using entry sets (and their > iterators) for the current object altogether. > This resulted in the expanded methods I highlighted in my previous post. > (In these cases, the performance should actually improve slightly, as > using the expansion avoids at least two object creations). > > Do you have any particular "common benchmarks" in mind? > I'm currently out of office for a few days (visiting family in Concord), > but can look to work on provide supporting data once I'm back "in situ", > as necessary. My concern was/is just a general anxiety in that I reasonably expect that the improved version will be slightly slower but I can't make a definitive assertion that the slowdown is insignificant. I did two very quick tests - One exercises the iterator but completes before there is a need to GC. There was essentially no difference in performance. - The other text starts a timer task that does a full GC every half second. Again there was no difference in performance. Mike From kumar.x.srinivasan at oracle.com Mon Mar 28 21:02:56 2011 From: kumar.x.srinivasan at oracle.com (kumar.x.srinivasan at oracle.com) Date: Mon, 28 Mar 2011 21:02:56 +0000 Subject: hg: jdk7/tl/jdk: 7031166: (pack200) tools/pack200/CommandLineTests.java fail with testsdk on RO filesystem Message-ID: <20110328210306.C97014754C@hg.openjdk.java.net> Changeset: a42760dae179 Author: ksrini Date: 2011-03-28 13:50 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a42760dae179 7031166: (pack200) tools/pack200/CommandLineTests.java fail with testsdk on RO filesystem Reviewed-by: alanb ! test/tools/pack200/CommandLineTests.java ! test/tools/pack200/TimeStamp.java ! test/tools/pack200/Utils.java From mike.duigou at oracle.com Tue Mar 29 00:42:38 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Mon, 28 Mar 2011 17:42:38 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com> References: <1300927894.11817.45.camel@chalkhill> <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> <1301127009.22505.116.camel@chalkhill> <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com> Message-ID: On Mar 28 2011, at 14:01 , Mike Duigou wrote: > On Mar 26 2011, at 01:10 , Neil Richards wrote: > >> Hi Mike - thanks for posting up the webrev, and for your review. >> >> On Fri, 2011-03-25 at 19:33 -0700, Mike Duigou wrote: >>> I have run the jtreg regression suite against your webrev. I had to >>> make one change to IdentityHashMap to satisfy the Collection/MOAT >>> test. The failure condition involved calling EntrySet.remove() when >>> there was no current entry due to a prior remove() or because next() >>> had never been called. >> >> With the assignment line suitably corrected, I believe there is no need >> for the added check. >> Please find below a corrected changeset 'hg export' with the relevant >> correction made. > > I will apply this patch and retest. The updated changeset passes all the jtreg regression tests. I have updated the webrev: http://cr.openjdk.java.net/~mduigou/6312706/1/webrev/ I don't have any remaining concerns with this patch. My residual anxiety regarding possible performance slowdown is fading. :-) If there are no objections I will commit this changeset on Wednesday March 30th, 2011. Mike From lvjing at linux.vnet.ibm.com Tue Mar 29 03:38:40 2011 From: lvjing at linux.vnet.ibm.com (Jing LV) Date: Tue, 29 Mar 2011 11:38:40 +0800 Subject: Minor performance enhancement on FileInputStream read() Message-ID: <4D915440.6010703@linux.vnet.ibm.com> Hello, I am reading the code in FileInputStream.read(), I find the current API was: Java_java_io_RandomAccessFile_read(JNIEnv *env, jobject this) readSingle(JNIEnv *env, jobject this, jfieldID fid) It brings a object down into native and as we know reflection costs a lot. I am wondering if we can improve this. I see the real pointer is stored in class FileDescriptor, a quick solution may be: 1. add a method read() in FileDescriptor, and it delgate to a native method read(fd), fd is the real pointer stored 2. modify readSingle(JNIEnv *env, jobject this, jfieldID fid) to readSingle(JNIEnv *env, jobject this, jlong fd) 3. add Java_java_io_FileDescriptor_read(JNIEnv *env, jobject this, jlong fd) in FileDescriptor_md.c, which calls readSingle As FileDescriptor is used in Socket as well, we may add similar approach, i.e, readSocket() etc. And this approach may be available for write and other operations. Any comments? -- Best Regards, Jimmy, Jing LV From Alan.Bateman at oracle.com Tue Mar 29 04:26:05 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 29 Mar 2011 05:26:05 +0100 Subject: Review Request for 7024172 "Move platform MXBeans to java.lang.management" In-Reply-To: <4D90DAF1.6050406@oracle.com> References: <4D8CC2BB.4060803@oracle.com> <4D8FAC54.9090703@oracle.com> <4D90DAF1.6050406@oracle.com> Message-ID: <4D915F5D.9010703@oracle.com> Mandy Chung wrote: > : > > This LoggingMXBean is needed to create a compliant MXBean; otherwise, > if PlatformLoggingImpl implements PlatformLoggingMXBean and > j.u.logging.LoggingMXBean directly, MBeanServer will throw a > NonCompliantMBeanException. As specified in the MXBean, > > http://download.oracle.com/javase/6/docs/api/javax/management/MXBean.html#mxbean-def > > > If an object implements two MXBean interfaces, it is a non-compliant > MXBean or it extends StandardMBean. > > I added the comment to explain this. Thanks, this wasn't obvious so the comment helps. Minor typo is that it reads "it is a non-complaint MXBean MBeanServer will throw NotCompliantMBeanException". Otherwise thumbs up from me. -Alan. From Alan.Bateman at oracle.com Tue Mar 29 04:45:04 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 29 Mar 2011 05:45:04 +0100 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: <4D90E090.5060905@oracle.com> References: <4D8D1813.6030207@oracle.com> <4D8F8B77.3080008@oracle.com> <4D90E090.5060905@oracle.com> Message-ID: <4D9163D0.4040909@oracle.com> Mandy Chung wrote: > > '\n' is a character added in the string created in L156 but not in a > format string in which %n is used to represents a newline. I'm not sure about this one as \n might not be the line separator on the platform. After creating the PrintWriter then could you use pw.println() ? Otherwise the updated webrev looks good to me. -Alan From mandy.chung at oracle.com Tue Mar 29 05:12:50 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Mon, 28 Mar 2011 22:12:50 -0700 Subject: Review Request for 7024172 "Move platform MXBeans to java.lang.management" In-Reply-To: <4D915F5D.9010703@oracle.com> References: <4D8CC2BB.4060803@oracle.com> <4D8FAC54.9090703@oracle.com> <4D90DAF1.6050406@oracle.com> <4D915F5D.9010703@oracle.com> Message-ID: <4D916A52.1090207@oracle.com> On 3/28/11 9:26 PM, Alan Bateman wrote: > Mandy Chung wrote: > >> : >> >> This LoggingMXBean is needed to create a compliant MXBean; otherwise, >> if PlatformLoggingImpl implements PlatformLoggingMXBean and >> j.u.logging.LoggingMXBean directly, MBeanServer will throw a >> NonCompliantMBeanException. As specified in the MXBean, >> >> http://download.oracle.com/javase/6/docs/api/javax/management/MXBean.html#mxbean-def >> >> >> If an object implements two MXBean interfaces, it is a non-compliant >> MXBean or it extends StandardMBean. >> >> I added the comment to explain this. > Thanks, this wasn't obvious so the comment helps. Minor typo is that > it reads "it is a non-complaint MXBean MBeanServer will throw > NotCompliantMBeanException". Fixed. > > Otherwise thumbs up from me. Thanks Mandy From mandy.chung at oracle.com Tue Mar 29 05:18:09 2011 From: mandy.chung at oracle.com (Mandy Chung) Date: Mon, 28 Mar 2011 22:18:09 -0700 Subject: Review request for 6381464: "SimpleFormatter should use one single line format" In-Reply-To: <4D9163D0.4040909@oracle.com> References: <4D8D1813.6030207@oracle.com> <4D8F8B77.3080008@oracle.com> <4D90E090.5060905@oracle.com> <4D9163D0.4040909@oracle.com> Message-ID: <4D916B91.7000702@oracle.com> On 3/28/11 9:45 PM, Alan Bateman wrote: > Mandy Chung wrote: >> >> '\n' is a character added in the string created in L156 but not in a >> format string in which %n is used to represents a newline. > I'm not sure about this one as \n might not be the line separator on > the platform. After creating the PrintWriter then could you use > pw.println() ? > That's a good suggestion. I will do that. > Otherwise the updated webrev looks good to me. > Thanks Mandy From pcj at roundroom.net Tue Mar 29 06:01:10 2011 From: pcj at roundroom.net (Peter Jones) Date: Tue, 29 Mar 2011 02:01:10 -0400 Subject: Request for review: 6597112: Referential integrity loophole during remote object export In-Reply-To: <1301000071.25581.16.camel@chalkhill> References: <4D775A58.6010708@oracle.com> <1301000071.25581.16.camel@chalkhill> Message-ID: Neil, Hi. For background, I filed 6597112. Thanks for looking into it. I don't see any correctness flaws with your suggested fix. It feels to me, however, unnecessarily elaborate for the problem being fixed. It adds an additional (and less localized) use of the Target.pinImpl/unpinImpl mechanism, which is currently only used to "pin" remote objects that are known to have live remote references (or for the internal "permanent" case), for which ongoing strong reachability from a static root (i.e. ObjectTable) is necessary. For this bug, it is only necessary to ensure strong reachability during the execution of the UnicastServerRef.exportObject method in the exporting thread. The reachabilityFence method from the concurrency folks' Fences proposal would enable a robust one-line fix: http://g.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/atomic/Fences.html#reachabilityFence(java.lang.Object) But I haven't been following the status of that API making it into the JDK. Barring that, other localized approaches should work-- the canonical if not optimal example is passing the reference to a native method. It would be nice to have a recommended idiom from JVM experts.[*] Another possibility, though, is to just not throw this ExportException (which is effectively an assertion failure) in ObjectTable.putTarget, but rather let the remote object's export appear to succeed even though it is known to have been garbage collected. Given that the caller isn't ensuring strong reachability of the object, the effect would be indistinguishable from the remote object being collected immediately after the remote object export completes anyway. [This likely indicates a bug in a real application, as opposed to a test case, which is why 6597112 didn't seem especially severe, unlike 6181943.] With this approach, it would be important to guard against the case of ObjectTable.Reaper processing a WeakRef from the queue before ObjectTable.putTarget has executed for it. Regarding this diff in particular: > - * If "permanent" is true, then the impl is pinned permanently > - * (the impl will not be collected via distributed and/or local > - * GC). If "on" is false, than the impl is subject to > - * collection. Permanent objects do not keep a server from > - * exiting. > + * Upon return, the impl is pinned, thus not initially eligible > + * for collection via distributed and/or local GC). > + * If "permanent" is false, the impl subsequently may be made subject to > + * collection by calling {@link #unpinImpl()}. > + * Permanent or pinned objects do not keep a server from exiting. I would leave the last sentence alone-- pinned objects can prevent JVM exit, the point there is really that so-called "permanent" objects don't. Cheers, -- Peter [*] The fix for the similar bug 6181943, in StreamRemoteCall.executeCall, used a DGCAckHandler instance to hold references to objects to be kept strongly reachable for the duration of a remote call, and the invocation of "ackHandler" in the finally block ensured that the container itself remains reachable from the thread for the same duration. For 6181943, there was a desire to hold only remote references, not the entirety of the call arguments, hence the use of DGCAckHandler which cooperates with the object output stream. The 6597112 case is simpler: just need to hold the remote object being exported. On Mar 24, 2011, at 4:54 PM, Neil Richards wrote: > Hi all, > Can I encourage further review / comment on my suggested fix (and > testcase) for this problem [1] [2], please ? > > For reference, I include the 'hg export' for the latest version of the > change below, > > Any feedback gratefully received, > Thanks, > Neil > > PS: I see the bug details [2] are not currently externally visible, but > don't know of a good reason for this. Could this be reviewed, please? > > [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006144.html > [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6597112 > > > -- > Unless stated above: > IBM email: neil_richards at uk.ibm.com > IBM United Kingdom Limited - Registered in England and Wales with number 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > > > # HG changeset patch > # User Neil Richards , > # Date 1298369045 0 > # Branch j6597112 > # Node ID 0c22e02a9016bd340e2182e96a10fe96cd75c8ac > # Parent 6bbc7a4734952ae7604578f270e1566639fa8752 > 6597112: referential integrity loophole during remote object export > Summary: Eliminate weak ref GC window during RMI export > Contributed-by: > > diff --git a/src/share/classes/sun/rmi/server/UnicastServerRef.java b/src/share/classes/sun/rmi/server/UnicastServerRef.java > --- a/src/share/classes/sun/rmi/server/UnicastServerRef.java > +++ b/src/share/classes/sun/rmi/server/UnicastServerRef.java > @@ -204,7 +204,11 @@ > > Target target = > new Target(impl, this, stub, ref.getObjID(), permanent); > - ref.exportObject(target); > + try { > + ref.exportObject(target); > + } finally { > + target.unpinImpl(); > + } > hashToMethod_Map = hashToMethod_Maps.get(implClass); > return stub; > } > diff --git a/src/share/classes/sun/rmi/transport/Target.java b/src/share/classes/sun/rmi/transport/Target.java > --- a/src/share/classes/sun/rmi/transport/Target.java > +++ b/src/share/classes/sun/rmi/transport/Target.java > @@ -77,11 +77,11 @@ > * Construct a Target for a remote object "impl" with > * a specific object id. > * > - * If "permanent" is true, then the impl is pinned permanently > - * (the impl will not be collected via distributed and/or local > - * GC). If "on" is false, than the impl is subject to > - * collection. Permanent objects do not keep a server from > - * exiting. > + * Upon return, the impl is pinned, thus not initially eligible > + * for collection via distributed and/or local GC). > + * If "permanent" is false, the impl subsequently may be made subject to > + * collection by calling {@link #unpinImpl()}. > + * Permanent or pinned objects do not keep a server from exiting. > */ > public Target(Remote impl, Dispatcher disp, Remote stub, ObjID id, > boolean permanent) > @@ -114,9 +114,6 @@ > } > > this.permanent = permanent; > - if (permanent) { > - pinImpl(); > - } > } > > /** > @@ -212,7 +209,7 @@ > * can be garbage collected locally. But only if there the refSet > * is empty. All of the weak/strong handling is in WeakRef > */ > - synchronized void unpinImpl() { > + public synchronized void unpinImpl() { > /* only unpin if: > * a) impl is not permanent, and > * b) impl is not already unpinned, and > diff --git a/src/share/classes/sun/rmi/transport/WeakRef.java b/src/share/classes/sun/rmi/transport/WeakRef.java > --- a/src/share/classes/sun/rmi/transport/WeakRef.java > +++ b/src/share/classes/sun/rmi/transport/WeakRef.java > @@ -33,7 +33,7 @@ > * > * This class extends the functionality of java.lang.ref.WeakReference in > * several ways. The methods pin() and unpin() can be used to set > - * whether the contained reference is strong or weak (it is weak upon > + * whether the contained reference is strong or weak (it is strong upon > * construction). The hashCode() and equals() methods are overridden so > * that WeakRef objects hash and compare to each other according to the > * object identity of their referents. > @@ -51,18 +51,24 @@ > > /** > * Create a new WeakRef to the given object. > + * The given object is initially pinned, ie. referenced strongly. > + * It may be subsequently unpinned by calling {@link #unpin()}. > */ > public WeakRef(Object obj) { > super(obj); > setHashValue(obj); // cache object's "identity" hash code > + strongRef = obj; > } > > /** > * Create a new WeakRef to the given object, registered with a queue. > + * The given object is initially pinned, ie. referenced strongly. > + * It may be subsequently unpinned by calling {@link #unpin()}. > */ > public WeakRef(Object obj, ReferenceQueue q) { > super(obj, q); > setHashValue(obj); // cache object's "identity" hash code > + strongRef = obj; > } > > /** > diff --git a/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java b/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java > new file mode 100644 > --- /dev/null > +++ b/test/java/rmi/server/UnicastRemoteObject/gcDuringExport/GcDuringExport.java > @@ -0,0 +1,67 @@ > +/* > + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. > + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. > + * > + * This code is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 only, as > + * published by the Free Software Foundation. > + * > + * This code is distributed in the hope that it will be useful, but WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License > + * version 2 for more details (a copy is included in the LICENSE file that > + * accompanied this code). > + * > + * You should have received a copy of the GNU General Public License version > + * 2 along with this work; if not, write to the Free Software Foundation, > + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. > + * > + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA > + * or visit www.oracle.com if you need additional information or have any > + * questions. > + */ > + > +/* > + * Portions Copyright (c) 2011 IBM Corporation > + */ > + > +/* > + * @test > + * @bug 6597112 > + * @summary Objects should not be GC-able as they are being exported to RMI > + * @author Neil Richards , > + */ > + > +import java.rmi.Remote; > +import java.rmi.server.UnicastRemoteObject; > + > +public class GcDuringExport { > + private static final long MAX_EXPORT_ITERATIONS = 50000; > + > + public static void main(String[] args) throws Exception { > + final Thread gcInducingThread = new Thread() { > + public void run() { while (true) { > + System.gc(); > + try { Thread.sleep(1); } catch (InterruptedException e) { } > + } > + } > + }; > + > + gcInducingThread.setDaemon(true); > + gcInducingThread.start(); > + > + long i = 0; > + try { > + while (i < MAX_EXPORT_ITERATIONS) { > + i++; > + UnicastRemoteObject.exportObject(new Remote() { }, 0); > + } > + } catch (Throwable e) { > + throw new RuntimeException("Test FAILED on iteration " + i + ".", e); > + } > + > + System.out.println("Test successfully exported " + i + " objects."); > + } > +} > + > + > > From david.holmes at oracle.com Tue Mar 29 12:16:11 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Tue, 29 Mar 2011 12:16:11 +0000 Subject: hg: jdk7/tl/jdk: 7031929: Variable names typos in Release-embedded.gmk Message-ID: <20110329121655.199244756E@hg.openjdk.java.net> Changeset: 19567f9d6962 Author: dholmes Date: 2011-03-29 08:15 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/19567f9d6962 7031929: Variable names typos in Release-embedded.gmk Reviewed-by: alanb ! make/common/Release-embedded.gmk From Alan.Bateman at oracle.com Tue Mar 29 12:32:54 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 29 Mar 2011 13:32:54 +0100 Subject: Minor performance enhancement on FileInputStream read() In-Reply-To: <4D915440.6010703@linux.vnet.ibm.com> References: <4D915440.6010703@linux.vnet.ibm.com> Message-ID: <4D91D176.4050008@oracle.com> Jing LV wrote: > Hello, > > I am reading the code in FileInputStream.read(), I find the current API was: > Java_java_io_RandomAccessFile_read(JNIEnv *env, jobject this) > readSingle(JNIEnv *env, jobject this, jfieldID fid) > > It brings a object down into native and as we know reflection costs a > lot. I am wondering if we can improve this. > I see the real pointer is stored in class FileDescriptor, a quick > solution may be: > 1. add a method read() in FileDescriptor, and it delgate to a native > method read(fd), fd is the real pointer stored > 2. modify readSingle(JNIEnv *env, jobject this, jfieldID fid) to > readSingle(JNIEnv *env, jobject this, jlong fd) > 3. add Java_java_io_FileDescriptor_read(JNIEnv *env, jobject this, jlong > fd) in FileDescriptor_md.c, which calls readSingle > > As FileDescriptor is used in Socket as well, we may add similar > approach, i.e, readSocket() etc. And this approach may be available for > write and other operations. > > Any comments? > > I think it would be okay to pass the java.io.FileDescriptor to the native methods and this would avoid the GetObjectField. However, I would have concerns about passing down the fd directly, mostly because it widens the window for issues caused by asynchronous close (a problematic area for java.io). -Alan. From Alan.Bateman at oracle.com Tue Mar 29 13:48:50 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 29 Mar 2011 14:48:50 +0100 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: References: <4D90B041.9000901@oracle.com> Message-ID: <4D91E342.6000109@oracle.com> Kelly O'Hair wrote: > I'll admit that I'm not following this C code horribly well, but overall it does look much cleaner. > As well as I can follow it, it looks good. > > In the Makefile, could we get some comments as to why the lib's are needed and also some > comments as to what the delayload means and why it is important? I could guess, but I'd prefer > some makefile comments to help the next poor soul looking at it. ;^) > Thanks Kelly. I'll add a comment to make this clearer athough this isn't really new as there are other places in the build where /delayload is used too. -Alan. From dmytro_sheyko at hotmail.com Tue Mar 29 15:11:06 2011 From: dmytro_sheyko at hotmail.com (Dmytro Sheyko) Date: Tue, 29 Mar 2011 22:11:06 +0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups Message-ID: Thanks for cleaning it up. Couple of questions: Why we obtain HMODULE for kernel32 this way: // get handle to kernel32 if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)&CreateFileW, &h) != 0) { ... instead of handle = GetModuleHandle("kernel32"); if (handle != NULL) { ... ? Also according to MSDN GetModuleHandleEx requires at minimum "Windows XP" or "Windows Server 2003". It means that we do not support "Windows 2000", right? Thanks, Dmytro > Date: Mon, 28 Mar 2011 16:58:57 +0100 > From: Alan.Bateman at oracle.com > To: core-libs-dev at openjdk.java.net; Vincent.Ryan at oracle.com > Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups > > > There are several places in the Windows native code where win32 > functions are looked up with GetProcAddress after loading the DLL. Many > of these places date back to when the JDK was built on Windows NT. Chris > removed several of them from the network code in a recent change-set > where he was cleaning up some code in that area. While editing > java_props_md.c I also changed the code that uses GetUserName to get the > value for the user.name property it's not set by an environment > variable. This was something Dmytro Sheyko pointed out on this list a > few weeks ago [1]. The webrev with the changes is here: > http://cr.openjdk.java.net/~alanb/7030249/webrev/ > > Vinnie - I updated the MS CAPI provider while I was at it, do you mind > reviewing that? I've run the tests in test/sun/security/mscapi to verify. > > -Alan. > > [1] > http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005837.html > From dmytro_sheyko at hotmail.com Tue Mar 29 15:31:11 2011 From: dmytro_sheyko at hotmail.com (Dmytro Sheyko) Date: Tue, 29 Mar 2011 22:31:11 +0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D90B041.9000901@oracle.com> References: <4D90B041.9000901@oracle.com> Message-ID: Thanks for cleaning it up. Couple of questions: Why we obtain HMODULE for kernel32 this way: // get handle to kernel32 if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)&CreateFileW, &h) != 0) { ... instead of handle = GetModuleHandle("kernel32"); if (handle != NULL) { ... ? Also according to MSDN GetModuleHandleEx requires at minimum "Windows XP" or "Windows Server 2003". Does this mean that we stop supporting "Windows 2000"? Thanks, Dmytro > Date: Mon, 28 Mar 2011 16:58:57 +0100 > From: Alan.Bateman at oracle.com > To: core-libs-dev at openjdk.java.net; Vincent.Ryan at oracle.com > Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups > > > There are several places in the Windows native code where win32 > functions are looked up with GetProcAddress after loading the DLL. Many > of these places date back to when the JDK was built on Windows NT. Chris > removed several of them from the network code in a recent change-set > where he was cleaning up some code in that area. While editing > java_props_md.c I also changed the code that uses GetUserName to get the > value for the user.name property it's not set by an environment > variable. This was something Dmytro Sheyko pointed out on this list a > few weeks ago [1]. The webrev with the changes is here: > http://cr.openjdk.java.net/~alanb/7030249/webrev/ > > Vinnie - I updated the MS CAPI provider while I was at it, do you mind > reviewing that? I've run the tests in test/sun/security/mscapi to verify. > > -Alan. > > [1] > http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-February/005837.html > From sean.mullan at oracle.com Tue Mar 29 15:38:23 2011 From: sean.mullan at oracle.com (sean.mullan at oracle.com) Date: Tue, 29 Mar 2011 15:38:23 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110329153844.8699E4757A@hg.openjdk.java.net> Changeset: b8259e08543b Author: mullan Date: 2011-03-29 10:39 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b8259e08543b 7019937: Translatability bug - Remove Unused String - String ID , read end of file 7019938: Translatability bug - Remove Unused String - String ID can not specify Principal with a 7019940: Translatability bug - Remove unused string - String ID: provided null name 7019942: Translatability bug - String ID: trustedCertEntry, 7019945: Translatability bug - Translatability issue - String ID: * has NOT been verified! In order to veri 7019947: Translatability bug - Translatability issue - String ID: * The integrity of the information stored i 7019949: Translatability bug - Translatability issue - String ID: * you must provide your keystore password. Reviewed-by: weijun, wetmore ! src/share/classes/com/sun/security/auth/PolicyParser.java ! src/share/classes/sun/security/tools/JarSigner.java ! src/share/classes/sun/security/tools/JarSignerResources.java ! src/share/classes/sun/security/tools/KeyTool.java ! src/share/classes/sun/security/util/AuthResources.java ! src/share/classes/sun/security/util/Resources.java Changeset: 77077940fad6 Author: mullan Date: 2011-03-29 11:37 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/77077940fad6 Merge From kelly.ohair at oracle.com Tue Mar 29 15:44:43 2011 From: kelly.ohair at oracle.com (Kelly O'Hair) Date: Tue, 29 Mar 2011 08:44:43 -0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D91E342.6000109@oracle.com> References: <4D90B041.9000901@oracle.com> <4D91E342.6000109@oracle.com> Message-ID: <88019D9F-0D75-4D21-9C8A-85123D8FBACD@oracle.com> On Mar 29, 2011, at 6:48 AM, Alan Bateman wrote: > Kelly O'Hair wrote: >> I'll admit that I'm not following this C code horribly well, but overall it does look much cleaner. >> As well as I can follow it, it looks good. >> >> In the Makefile, could we get some comments as to why the lib's are needed and also some >> comments as to what the delayload means and why it is important? I could guess, but I'd prefer >> some makefile comments to help the next poor soul looking at it. ;^) >> > Thanks Kelly. I'll add a comment to make this clearer athough this isn't really new as there are other places in the build where /delayload is used too. Yes, I realize that. But in general, some of the past build issues were created because we have done a poor job of documenting what the makefiles are doing, so I'm just trying to encourage more makefile comments from now on. Sometimes the reasons for doing things can help determine a better future decision on removal or change. Just a sentence on why the delayload is needed here for this library, not what the delayload feature is. Or maybe a simple sentence on why these libraries are needed for this library and not all libraries. -kto > > -Alan. From maurizio.cimadamore at oracle.com Tue Mar 29 15:44:52 2011 From: maurizio.cimadamore at oracle.com (maurizio.cimadamore at oracle.com) Date: Tue, 29 Mar 2011 15:44:52 +0000 Subject: hg: jdk7/tl/langtools: 4 new changesets Message-ID: <20110329154503.AA0DB4757B@hg.openjdk.java.net> Changeset: 2007998f89f2 Author: mcimadamore Date: 2011-03-29 16:40 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/2007998f89f2 7030687: Diamond: compiler accepts erroneous code where diamond is used with non-generic inner class Summary: Diamond accepts non-parameterized member inner classes with parameterized outer because of a bad check Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Check.java ! src/share/classes/com/sun/tools/javac/parser/JavacParser.java + test/tools/javac/generics/diamond/7030687/ParserTest.java + test/tools/javac/generics/diamond/7030687/T7030687.java + test/tools/javac/generics/diamond/7030687/T7030687.out Changeset: ddec8c712e85 Author: mcimadamore Date: 2011-03-29 16:40 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/ddec8c712e85 7030606: Project-coin: multi-catch types should be pairwise disjoint Summary: Bring javac in sync with latest Project Coin EDR Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties + test/tools/javac/diags/examples/MulticatchTypesMustBeDisjoint.java + test/tools/javac/multicatch/7030606/DisjunctiveTypeWellFormednessTest.java + test/tools/javac/multicatch/7030606/T7030606.java + test/tools/javac/multicatch/7030606/T7030606.out Changeset: f5b5112ee1cc Author: mcimadamore Date: 2011-03-29 16:40 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/f5b5112ee1cc 7030150: Type inference for generic instance creation failed for formal type parameter Summary: Problem when explicit generic constructor type-arguments are used in conjunction with diamond Reviewed-by: jjg ! 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/Resolve.java + test/tools/javac/generics/diamond/7030150/GenericConstructorAndDiamondTest.java + test/tools/javac/generics/diamond/7030150/Neg01.java + test/tools/javac/generics/diamond/7030150/Neg01.out + test/tools/javac/generics/diamond/7030150/Neg02.java + test/tools/javac/generics/diamond/7030150/Neg02.out + test/tools/javac/generics/diamond/7030150/Neg03.java + test/tools/javac/generics/diamond/7030150/Neg03.out + test/tools/javac/generics/diamond/7030150/Pos01.java + test/tools/javac/generics/diamond/7030150/Pos02.java Changeset: de1c65ecfec2 Author: mcimadamore Date: 2011-03-29 16:41 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/de1c65ecfec2 7027157: Project Coin: javac warnings for AutoCloseable.close throwing InterruptedException Summary: javac should warn about use/declaration of AutoCloseable subclasses that can throw InterruptedException Reviewed-by: jjg ! src/share/classes/com/sun/tools/javac/code/Symtab.java ! src/share/classes/com/sun/tools/javac/comp/Attr.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties + test/tools/javac/TryWithResources/InterruptedExceptionTest.java + test/tools/javac/diags/examples/TryResourceThrowsInterruptedExc.java From Alan.Bateman at oracle.com Tue Mar 29 15:49:50 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Tue, 29 Mar 2011 16:49:50 +0100 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: References: Message-ID: <4D91FF9E.1090003@oracle.com> Dmytro Sheyko wrote: > : > > Why we obtain HMODULE for kernel32 this way: > > // get handle to kernel32 > if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | > > GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), > (LPCWSTR)&CreateFileW, &h) != 0) > { > ... > > > instead of > > handle = GetModuleHandle("kernel32"); GetModuleHandleExW allows you to provide the address of a function in the library that you need the handle for and so you avoid issues when multiple libraries with the same name are loaded. > : > > Also according to MSDN GetModuleHandleEx requires at minimum "Windows > XP" or "Windows Server 2003". It means that we do not support "Windows > 2000", right? I don't think it's been possible to install or run jdk7 on Windows 2000 for some time. -Alan From dmytro_sheyko at hotmail.com Tue Mar 29 16:04:47 2011 From: dmytro_sheyko at hotmail.com (Dmytro Sheyko) Date: Tue, 29 Mar 2011 23:04:47 +0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D91FF9E.1090003@oracle.com> References: , <4D91FF9E.1090003@oracle.com> Message-ID: Good. Thank you Date: Tue, 29 Mar 2011 16:49:50 +0100 From: Alan.Bateman at oracle.com To: dmytro_sheyko at hotmail.com CC: core-libs-dev at openjdk.java.net Subject: Re: 7030249: Eliminate use of LoadLibrary and other clean-ups Message body Dmytro Sheyko wrote: : Why we obtain HMODULE for kernel32 this way: // get handle to kernel32 if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)&CreateFileW, &h) != 0) { ... instead of handle = GetModuleHandle("kernel32"); GetModuleHandleExW allows you to provide the address of a function in the library that you need the handle for and so you avoid issues when multiple libraries with the same name are loaded. : Also according to MSDN GetModuleHandleEx requires at minimum "Windows XP" or "Windows Server 2003". It means that we do not support "Windows 2000", right? I don't think it's been possible to install or run jdk7 on Windows 2000 for some time. -Alan From dmytro_sheyko at hotmail.com Tue Mar 29 16:55:33 2011 From: dmytro_sheyko at hotmail.com (Dmytro Sheyko) Date: Tue, 29 Mar 2011 23:55:33 +0700 Subject: 7030249: Eliminate use of LoadLibrary and other clean-ups In-Reply-To: <4D91FF9E.1090003@oracle.com> References: , <4D91FF9E.1090003@oracle.com> Message-ID: Maybe we should follow this approach (i.e. prefer GetModuleHandleEx to GetModuleHandle) in other places as well. I found there suspect cases: ./jdk/src/windows/native/java/lang/java_props_md.c: GetModuleHandle(TEXT("kernel32.dll")), ./jdk/test/java/util/Locale/data/deflocale.c: HMODULE hmod = GetModuleHandle(L"kernel32"); ./hotspot/src/os/windows/vm/perfMemory_windows.cpp: GetProcAddress(GetModuleHandle(TEXT("advapi32.dll")), ./hotspot/src/os/windows/vm/os_windows.cpp: hmod = GetModuleHandle("NTDLL.DLL"); ./hotspot/src/os/windows/vm/os_windows.cpp: HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32.dll")); ./hotspot/src/os/windows/vm/os_windows.cpp: HINSTANCE kernel32 = LoadLibrary("Kernel32.DLL") ; ./hotspot/src/os/windows/vm/os_windows.cpp: HINSTANCE psapi = LoadLibrary( "PSAPI.DLL" ) ; Regards, Dmytro Date: Tue, 29 Mar 2011 16:49:50 +0100 From: Alan.Bateman at oracle.com To: dmytro_sheyko at hotmail.com CC: core-libs-dev at openjdk.java.net Subject: Re: 7030249: Eliminate use of LoadLibrary and other clean-ups Message body Dmytro Sheyko wrote: : Why we obtain HMODULE for kernel32 this way: // get handle to kernel32 if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)&CreateFileW, &h) != 0) { ... instead of handle = GetModuleHandle("kernel32"); GetModuleHandleExW allows you to provide the address of a function in the library that you need the handle for and so you avoid issues when multiple libraries with the same name are loaded. : Also according to MSDN GetModuleHandleEx requires at minimum "Windows XP" or "Windows Server 2003". It means that we do not support "Windows 2000", right? I don't think it's been possible to install or run jdk7 on Windows 2000 for some time. -Alan From xueming.shen at oracle.com Tue Mar 29 19:05:12 2011 From: xueming.shen at oracle.com (Xueming Shen) Date: Tue, 29 Mar 2011 12:05:12 -0700 Subject: Suspected regression: fix for 6735255 causes delay in GC of ZipFile InputStreams, increase in heap demand In-Reply-To: <1300916786.4515.107.camel@chalkhill> References: <1300916786.4515.107.camel@chalkhill> Message-ID: <4D922D68.2080202@oracle.com> Hi Neil, It appears to be a "regression" in scenario you described (user application never close the input stream after use and the ZipFile instance being retained during the lifetime of the process). The proposed approach seems to solve this particular problem. Here are my comments regarding the patch. (1) ZipFileInflaterInputStream.close() now synchronizes on Zipfile.this, is it really necessary? given the rest of the implementation doesn't guarantee the returned InputStream object is thread-safe (the implementation does make sure the access to the underlying ZipFile is thread-safe, though). The new finalize() now also invokes close(), which means the ZipFile object now gets locked twice (assume the good manner application does invoke the close() after use) for each InputStream after use. (2) Is there any particular reason that we don't want to "reuse" the Inflater(), if the close comes from the finalize() in your testing evn? One thing we noticed before is that the moment the InputStream gets finalized, the Inflater embedded might have been finalized already, this is the reason why we have a "inf.ended()" check in releaseInflater(). The disadvantage/limitation of existing Inflater caching mechanism is that it does not have a "cap" to limit the maximum number of inflater it should cache. Are you worried too many inflaters get cached, if they only get collected during GC/finalize()? This actually indicates that the cache mechanism does not work at all in your scenario, even with the proposed fix. An alternative solution (better?) is to make ZFIIS to check the bytes read during its read() method, and pro-actively close the stream when it reaches the end of the stream, same as what ZipFileInputStream does, which I believe should solve the problem in most use scenario (except, the application does not bother reading the InputSteeam to its end, which is unlikely). (3) The attached test case does "f.close()" in its finally block, I guess it should be f.delete()? -Sherman On 03/23/2011 02:46 PM, Neil Richards wrote: > Hi, > I've noticed that the fix introduced to address bug 6735255 [1] [2] had > an unfortunate side-effect. > > That fix stores references to the InputStream objects returned from > ZipFile.getInputStream(ZipEntry) in a HashSet (within ZipFile), so that > the close() method may be called upon those objects when ZipFile.close() > is called. > > It does this to conform to the existing API description, and to avoid a > native memory leak which would occur if the InputStream is GC'd without > its close() being called. > > However, by holding these InputStreams in a set within their ZipFile > object, their lifecycle is now prolonged until the ZipFile object either > has its close() method called, or is finalized (prior to GC). > > I've found scenarios (in user code) were ZipFile objects are held onto > for a long time (eg. the entire lifetime of the process), but where > InputStream objects from that ZipFile (for individual entries in the zip > file) are obtained, used, then abandoned on a large number of occasions. > > (An example here might be a user-defined, long-lasting class loader, > which might retain a ZipFile instance for each jar file in its search > path, but which will create transitory input streams to read out > particular files from those (large) jar files). > > I see that the InputStream objects returned from > ZipFile.getInputStream(ZipEntry) tend to hold references to a couple of > sizeable byte arrays, one 512 bytes in size, the other 1002 bytes. > > So by prolonging the life span of these objects, the fix for 6735255 can > inadvertently cause a significant increase in the demand/usage on the > heap (in practice, running into many Mb's). > > (This is not so if the user code is good-mannered enough to explicitly > always call close() on the InputStreams in question. > However, experience shows that user code cannot be relied upon to behave > so benignly). > > I believe this introduced problem can be addressed by: > 1. Holding references to the InputStreams in the 'streams' Set > within ZipFile via WeakReferences, so they may be GC'd as soon > as they are no longer externally (strongly) referenced. > 2. Adding finalization logic to the InputStream implementation > classes, which ensures their close() method is called prior to > GC. > 3. Prevent Inflater objects from being returned to the pool (in the > ZipFile object) if close() has been called from finalize(). > > To that end, please find below an 'hg export' of a proposed change which > implements these aspects, together with a testcase to demonstrate the > problem/fix. > > Any comments / suggestions on this gratefully received, > Thanks, > Neil > > [1] http://bugs.sun.com/view_bug.do?bug_id=6735255 > [2] http://hg.openjdk.java.net/jdk7/jdk7/jdk/rev/49478a651a28 > From jason_mehrens at hotmail.com Tue Mar 29 20:57:44 2011 From: jason_mehrens at hotmail.com (Jason Mehrens) Date: Tue, 29 Mar 2011 15:57:44 -0500 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: References: <1300927894.11817.45.camel@chalkhill>, <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com>, <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com>, <1301127009.22505.116.camel@chalkhill>, <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com>, Message-ID: Is it necessary for 'NULL' in EnumMap to have hashCode of zero? If so, would using new Integer(0) be better than creating a subclass with regards to footprint and classloading? A similar issue was brought up before: http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006154.html Jason > The updated changeset passes all the jtreg regression tests. I have updated the webrev: > > http://cr.openjdk.java.net/~mduigou/6312706/1/webrev/ > > I don't have any remaining concerns with this patch. My residual anxiety regarding possible performance slowdown is fading. :-) > > If there are no objections I will commit this changeset on Wednesday March 30th, 2011. > > Mike From mike.duigou at oracle.com Tue Mar 29 22:09:56 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Tue, 29 Mar 2011 15:09:56 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: References: <1300927894.11817.45.camel@chalkhill>, <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com>, <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com>, <1301127009.22505.116.camel@chalkhill>, <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com>, Message-ID: I think your suspicion is correct that the anonymous inner Object is used rather than new Object so that it can be distinguished more easily in heap dumps or via other tools. I would be fine with using Integer(0) as the sentinel value. I've always used new String("something useful") rather than new Object for sentinel values. Neil, do you have a strong reason or preference for using an anonymous inner Object? Mike On Mar 29 2011, at 13:57 , Jason Mehrens wrote: > Is it necessary for 'NULL' in EnumMap to have hashCode of zero? If so, would using new Integer(0) be better than creating a subclass with regards to footprint and classloading? > A similar issue was brought up before: http://mail.openjdk.java.net/pipermail/core-libs-dev/2011-March/006154.html > > Jason > > > > The updated changeset passes all the jtreg regression tests. I have updated the webrev: > > > > http://cr.openjdk.java.net/~mduigou/6312706/1/webrev/ > > > > I don't have any remaining concerns with this patch. My residual anxiety regarding possible performance slowdown is fading. :-) > > > > If there are no objections I will commit this changeset on Wednesday March 30th, 2011. > > > > Mike > From mandy.chung at oracle.com Tue Mar 29 22:51:12 2011 From: mandy.chung at oracle.com (mandy.chung at oracle.com) Date: Tue, 29 Mar 2011 22:51:12 +0000 Subject: hg: jdk7/tl/jdk: 7024172: Move BufferPoolMXBean and PlatformLoggingMXBean java.lang.management Message-ID: <20110329225121.C6C6047596@hg.openjdk.java.net> Changeset: 3e001dd50408 Author: mchung Date: 2011-03-29 15:50 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/3e001dd50408 7024172: Move BufferPoolMXBean and PlatformLoggingMXBean java.lang.management Reviewed-by: alanb + src/share/classes/java/lang/management/BufferPoolMXBean.java ! src/share/classes/java/lang/management/ManagementFactory.java ! src/share/classes/java/lang/management/PlatformComponent.java + src/share/classes/java/lang/management/PlatformLoggingMXBean.java ! src/share/classes/java/lang/management/PlatformManagedObject.java ! src/share/classes/java/lang/management/package.html - src/share/classes/java/nio/BufferPoolMXBean.java ! src/share/classes/java/util/logging/LogManager.java ! src/share/classes/java/util/logging/LoggingMXBean.java - src/share/classes/java/util/logging/PlatformLoggingMXBean.java ! src/share/classes/sun/management/ManagementFactoryHelper.java ! test/Makefile + test/java/lang/management/BufferPoolMXBean/Basic.java ! test/java/lang/management/ManagementFactory/GetPlatformMXBeans.java + test/java/lang/management/PlatformLoggingMXBean/LoggingMXBeanTest.java + test/java/lang/management/PlatformLoggingMXBean/PlatformLoggingMXBeanTest.java - test/java/nio/BufferPoolMXBean/Basic.java ! test/java/nio/channels/AsynchronousSocketChannel/Leaky.java - test/java/util/logging/PlatformLoggingMXBean/PlatformLoggingMXBeanTest.java From mandy.chung at oracle.com Tue Mar 29 22:58:30 2011 From: mandy.chung at oracle.com (mandy.chung at oracle.com) Date: Tue, 29 Mar 2011 22:58:30 +0000 Subject: hg: jdk7/tl/jdk: 6381464: SimpleFormatter should use one single line format Message-ID: <20110329225840.4F64447597@hg.openjdk.java.net> Changeset: d2bbdd709307 Author: mchung Date: 2011-03-29 15:58 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/d2bbdd709307 6381464: SimpleFormatter should use one single line format Summary: Define a new logging properties to support custom output format Reviewed-by: alanb ! src/share/classes/java/util/logging/LoggingProxyImpl.java ! src/share/classes/java/util/logging/SimpleFormatter.java ! src/share/classes/sun/util/logging/LoggingProxy.java ! src/share/classes/sun/util/logging/LoggingSupport.java ! src/share/classes/sun/util/logging/PlatformLogger.java ! src/share/lib/logging.properties + test/java/util/logging/SimpleFormatterFormat.java ! test/sun/util/logging/PlatformLoggerTest.java From alan.bateman at oracle.com Wed Mar 30 00:01:04 2011 From: alan.bateman at oracle.com (alan.bateman at oracle.com) Date: Wed, 30 Mar 2011 00:01:04 +0000 Subject: hg: jdk7/tl/jdk: 2 new changesets Message-ID: <20110330000124.CC7AE4759B@hg.openjdk.java.net> Changeset: 646047d77db9 Author: alanb Date: 2011-03-30 00:59 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/646047d77db9 7026507: Bidi initialization fails if AWT not present Reviewed-by: okutsu ! src/share/classes/sun/text/bidi/BidiBase.java Changeset: a40982a82291 Author: alanb Date: 2011-03-30 01:00 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a40982a82291 Merge - src/share/classes/java/nio/BufferPoolMXBean.java - src/share/classes/java/util/logging/PlatformLoggingMXBean.java - test/java/nio/BufferPoolMXBean/Basic.java - test/java/util/logging/PlatformLoggingMXBean/PlatformLoggingMXBeanTest.java From David.Holmes at oracle.com Wed Mar 30 07:09:05 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 30 Mar 2011 17:09:05 +1000 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures Message-ID: <4D92D711.3080808@oracle.com> http://cr.openjdk.java.net/~dholmes/7032364/webrev/ More pieces to support SE Embedded. David From bertrand.delsart at oracle.com Wed Mar 30 08:49:17 2011 From: bertrand.delsart at oracle.com (Bertrand Delsart) Date: Wed, 30 Mar 2011 10:49:17 +0200 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92D711.3080808@oracle.com> References: <4D92D711.3080808@oracle.com> Message-ID: <4D92EE8D.1060409@oracle.com> No objections two small comments since I do not know in which context this is used: - I'm surprised that it ends up in a solaris directory (and not linux or share) - What does -server KNOWN means ? (would ERROR be better for PPC ?) Bertrand. On 03/30/11 09:09 AM, David Holmes wrote: > http://cr.openjdk.java.net/~dholmes/7032364/webrev/ > > More pieces to support SE Embedded. > > David -- Bertrand Delsart, bertrand.delsart at oracle.com Sun-Oracle, 180 av. de l'Europe, ZIRST de Montbonnot, 38334 Saint Ismier, FRANCE Phone : +33 4 76 18 81 23 Fax : +33 4 76 18 88 88 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOTICE: This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From David.Holmes at oracle.com Wed Mar 30 12:41:53 2011 From: David.Holmes at oracle.com (David Holmes) Date: Wed, 30 Mar 2011 22:41:53 +1000 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92EE8D.1060409@oracle.com> References: <4D92D711.3080808@oracle.com> <4D92EE8D.1060409@oracle.com> Message-ID: <4D932511.8020103@oracle.com> Hi Bertrand, Bertrand Delsart said the following on 03/30/11 18:49: > No objections two small comments since I do not know in which context > this is used: > - I'm surprised that it ends up in a solaris directory > (and not linux or share) Historically in the jdk repo "solaris" means "not-windows". > - What does -server KNOWN means ? That -server is a recognized flag/directive for the launcher. > (would ERROR be better for PPC ?) It isn't necessary in that if you don't have a server VM you should build with BUILD_CLIENT_ONLY, and if you do that then it generates a jvm.cfg that aliases server to client. So the new file will only be used if you don't set BUILD_CLIENT_ONLY, and in that case one would presume you did have a server VM, so the KNOWN value would be appropriate. Thanks, David > Bertrand. > > On 03/30/11 09:09 AM, David Holmes wrote: >> http://cr.openjdk.java.net/~dholmes/7032364/webrev/ >> >> More pieces to support SE Embedded. >> >> David > > From Alan.Bateman at oracle.com Wed Mar 30 12:57:01 2011 From: Alan.Bateman at oracle.com (Alan Bateman) Date: Wed, 30 Mar 2011 13:57:01 +0100 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92D711.3080808@oracle.com> References: <4D92D711.3080808@oracle.com> Message-ID: <4D93289D.3070105@oracle.com> David Holmes wrote: > http://cr.openjdk.java.net/~dholmes/7032364/webrev/ > > More pieces to support SE Embedded. > > David Looks okay to me. -Alan. From mike.duigou at oracle.com Wed Mar 30 14:04:02 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Wed, 30 Mar 2011 07:04:02 -0700 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92D711.3080808@oracle.com> References: <4D92D711.3080808@oracle.com> Message-ID: <095B685F-CCC6-4B2B-BACC-569FB983F6B2@oracle.com> If the files are fine with no entries defined then it looks good. I would have expected at least one KNOWN entry, no? Mike On Mar 30 2011, at 00:09 , David Holmes wrote: > http://cr.openjdk.java.net/~dholmes/7032364/webrev/ > > More pieces to support SE Embedded. > > David From gnu_andrew at member.fsf.org Wed Mar 30 14:08:27 2011 From: gnu_andrew at member.fsf.org (Dr Andrew John Hughes) Date: Wed, 30 Mar 2011 15:08:27 +0100 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92D711.3080808@oracle.com> References: <4D92D711.3080808@oracle.com> Message-ID: On 30 March 2011 08:09, David Holmes wrote: > http://cr.openjdk.java.net/~dholmes/7032364/webrev/ > > More pieces to support SE Embedded. > > David > When are these files installed? Will they interfere with Zero/Shark installs on ARM & PPC? Thanks, -- Andrew :-) Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com) Support Free Java! Contribute to GNU Classpath and the OpenJDK http://www.gnu.org/software/classpath http://openjdk.java.net PGP Key: F5862A37 (https://keys.indymedia.org/) Fingerprint = EA30 D855 D50F 90CD F54D ?0698 0713 C3ED F586 2A37 From neil.richards at ngmr.net Wed Mar 30 16:07:15 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Wed, 30 Mar 2011 09:07:15 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: References: <1300927894.11817.45.camel@chalkhill> ,<5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> ,<754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> ,<1301127009.22505.116.camel@chalkhill> ,<1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com> , Message-ID: <1301501235.7943.68.camel@chalkhill> On Tue, 2011-03-29 at 15:09 -0700, Mike Duigou wrote: > I think your suspicion is correct that the anonymous inner Object is > used rather than new Object so that it can be distinguished more > easily in heap dumps or via other tools. I would be fine with using > Integer(0) as the sentinel value. I've always used new > String("something useful") rather than new Object for sentinel values. > > Neil, do you have a strong reason or preference for using an anonymous inner Object? Hi Jason, thanks for your review and suggestion. My intent in changing NULL here was merely to avoid having to have a conditional check for a value of NULL in hashCode(). It looks like the NULL value object is only checked for and compared by identity, so I think its requirements are that: 1. It is a unique object. (ie. It is not the same object as any that might be stored as a "legitimate" value). 2. It returns a hashCode of 0. (This follows the convention that 'null' - or objects that represent it - have a hashCode of 0). So, having the NULL object set to 'new Integer(0)' would work, whilst (for example) having it set to 'Integer.valueOf(0)' would not. (The other conversation you referred to is specifically about using distinct classes for objects used for synchronization, so that deadlock / contention analysis tools can produce results which can be interpreted without also needing to analyse associated heap dumps, in a tool like the Eclipse Memory Analyzer [1], to work out which object (type) is holding contended / deadlocked "lock" objects. As the NULL object here is not used for synchronization, that argument does not apply to this object). In summary, as using 'new Integer(0)' for NULL would save on having an extra Class definition, I'm all in favour of adopting your amendment - thanks once again. Mike, are you happy to make this simple modification to the changeset, or shall I send you an updated version ? Neil [1] http://www.eclipse.org/mat/ -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU From joe.darcy at oracle.com Wed Mar 30 16:19:21 2011 From: joe.darcy at oracle.com (Joe Darcy) Date: Wed, 30 Mar 2011 09:19:21 -0700 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D92D711.3080808@oracle.com> References: <4D92D711.3080808@oracle.com> Message-ID: <4D935809.7040702@oracle.com> David Holmes wrote: > http://cr.openjdk.java.net/~dholmes/7032364/webrev/ > > More pieces to support SE Embedded. > > David Hi David. In the jvm.cfg files for other "newer" configurations, "-hotspot" is set to "ERROR." So unless you have a need to recognize -hotspot in ARM and PPC I would encourage the same setting on those platforms, otherwise approved. -Joe From neil.richards at ngmr.net Wed Mar 30 19:53:30 2011 From: neil.richards at ngmr.net (Neil Richards) Date: Wed, 30 Mar 2011 12:53:30 -0700 Subject: Suspected regression: fix for 6735255 causes delay in GC of ZipFile InputStreams, increase in heap demand In-Reply-To: <4D922D68.2080202@oracle.com> References: <1300916786.4515.107.camel@chalkhill> <4D922D68.2080202@oracle.com> Message-ID: <1301514810.24605.64.camel@chalkhill> Hi Sherman, Thanks for your review and comments on this. On Tue, 2011-03-29 at 12:05 -0700, Xueming Shen wrote: > Hi Neil, > > It appears to be a "regression" in scenario you described (user > application never close the input stream after use and the ZipFile > instance being retained during the lifetime of the process). The > proposed approach seems to solve this particular problem. > > Here are my comments regarding the patch. > > (1) ZipFileInflaterInputStream.close() now synchronizes on > Zipfile.this, is it really necessary? Synchronization is used so that an update to 'isClosed' on one thread is seen by another. Adding finalization (ie. a call from finalize() to close()) effectively introduces a new thread into the mix, namely the finalization thread. Whilst you're correct in saying that, in general, InputStream gives no thread-safe guarantees, in this particular case I believe it is valid to make sure updates to this field are seen across threads, to prevent the logic of close() being run twice. I chose to synchronize on ZipFile.this merely for consistency - ie. because that's what ZipFileInputStream (the other InputStream impl in ZipFile) does. I suppose I felt the risks of creating some kind of obscure deadlock scenario was minimised by copying the existing pattern. I can be easily swayed if you think there's a better object to synchronize on, that doesn't run an increased risk of deadlock. > (2) Is there any particular reason that we don't want to "reuse" the > Inflater(), if the close comes from the finalize() in your testing > evn? One thing we noticed before is that the moment the > InputStream gets finalized, the Inflater embedded might have been > finalized already, this is the reason why we have a "inf.ended()" > check in releaseInflater(). The ZipFileInflaterInputStream object's finalize() method is called by the finalization thread, after it has been added to the finalization queue by GC. If *it* has been added to the finalization queue (because it's eligible for GC), then so will the Inflater object it is referencing. As finalization gives no guarantees as to the order in which objects are finalized, regardless of whether finalize() has been called on the Inflater object, it is nevertheless the case that its method *will* be called at some point, so the Inflater object *will* be ended. If it has been put back into the inflater cache (because ZFIIS's finalize happened to be called first), then this ended inflater will lie in wait for another ZFIIS to use it, which would result in a particularly unexpected exception being thrown. In general, I believe it to be quite frowned on to "resurrect" objects which are going through finalization (including those queued up for finalization) and place them back into the live set of object, as weird behaviour often ensues if one does. (Especially as, iirc, finalize() is only called once per object, regardless of whether it is "dug back up" in this fashion). > (3) The attached test case does "f.close()" in its finally block, I > guess it should be f.delete()? When I wrote the testcase, I relied upon File.deleteOnExit() to take care of cleaning up the temporary file(s) created. However, I recall now that I don't think it guarantees deletion on abnormal termination. I agree that calling f.delete() instead of f.close() would be a good improvement to the testcase. Please find below an updated changeset, with this change made and the bug number filled in. Hope this helps to clarify things, Thanks again, Neil -- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU # HG changeset patch # User Neil Richards , # Date 1300289208 0 # Branch zip-heap # Node ID 8ab5aa0669a176d95502d9cf68027ae9679ccab2 # Parent 554adcfb615e63e62af530b1c10fcf7813a75b26 7031076: Retained ZipFile InputStreams increase heap demand Summary: Allow unreferenced ZipFile InputStreams to be finalized, GC'd Contributed-by: diff --git a/src/share/classes/java/util/zip/ZipFile.java b/src/share/classes/java/util/zip/ZipFile.java --- a/src/share/classes/java/util/zip/ZipFile.java +++ b/src/share/classes/java/util/zip/ZipFile.java @@ -30,11 +30,14 @@ import java.io.IOException; import java.io.EOFException; import java.io.File; +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; import java.nio.charset.Charset; import java.util.Vector; import java.util.Enumeration; import java.util.Set; import java.util.HashSet; +import java.util.Iterator; import java.util.NoSuchElementException; import java.security.AccessController; import sun.security.action.GetPropertyAction; @@ -315,7 +318,16 @@ private static native void freeEntry(long jzfile, long jzentry); // the outstanding inputstreams that need to be closed. - private Set streams = new HashSet<>(); + private final Set> streams = new HashSet<>(); + private final ReferenceQueue staleStreamQueue = + new ReferenceQueue<>(); + + private void clearStaleStreams() { + Object staleStream; + while (null != (staleStream = staleStreamQueue.poll())) { + streams.remove(staleStream); + } + } /** * Returns an input stream for reading the contents of the specified @@ -339,6 +351,7 @@ ZipFileInputStream in = null; synchronized (this) { ensureOpen(); + clearStaleStreams(); if (!zc.isUTF8() && (entry.flag & EFS) != 0) { jzentry = getEntry(jzfile, zc.getBytesUTF8(entry.name), false); } else { @@ -351,51 +364,19 @@ switch (getEntryMethod(jzentry)) { case STORED: - streams.add(in); + streams.add( + new WeakReference(in, staleStreamQueue)); return in; case DEFLATED: - final ZipFileInputStream zfin = in; // MORE: Compute good size for inflater stream: long size = getEntrySize(jzentry) + 2; // Inflater likes a bit of slack if (size > 65536) size = 8192; if (size <= 0) size = 4096; - InputStream is = new InflaterInputStream(zfin, getInflater(), (int)size) { - private boolean isClosed = false; - - public void close() throws IOException { - if (!isClosed) { - super.close(); - releaseInflater(inf); - isClosed = true; - } - } - // Override fill() method to provide an extra "dummy" byte - // at the end of the input stream. This is required when - // using the "nowrap" Inflater option. - protected void fill() throws IOException { - if (eof) { - throw new EOFException( - "Unexpected end of ZLIB input stream"); - } - len = this.in.read(buf, 0, buf.length); - if (len == -1) { - buf[0] = 0; - len = 1; - eof = true; - } - inf.setInput(buf, 0, len); - } - private boolean eof; - - public int available() throws IOException { - if (isClosed) - return 0; - long avail = zfin.size() - inf.getBytesWritten(); - return avail > (long) Integer.MAX_VALUE ? - Integer.MAX_VALUE : (int) avail; - } - }; - streams.add(is); + InputStream is = + new ZipFileInflaterInputStream(in, getInflater(), + (int)size); + streams.add( + new WeakReference(is, staleStreamQueue)); return is; default: throw new ZipException("invalid compression method"); @@ -403,6 +384,58 @@ } } + private class ZipFileInflaterInputStream extends InflaterInputStream { + private boolean isClosed = false; + private boolean eof = false; + private final ZipFileInputStream zfin; + private boolean inFinalizer = false; + + ZipFileInflaterInputStream(ZipFileInputStream zfin, Inflater inf, + int size) { + super(zfin, inf, size); + this.zfin = zfin; + } + + public void close() throws IOException { + synchronized (ZipFile.this) { + if (!isClosed) { + super.close(); + if (false == inFinalizer) + releaseInflater(inf); + isClosed = true; + } + } + } + // Override fill() method to provide an extra "dummy" byte + // at the end of the input stream. This is required when + // using the "nowrap" Inflater option. + protected void fill() throws IOException { + if (eof) { + throw new EOFException("Unexpected end of ZLIB input stream"); + } + len = in.read(buf, 0, buf.length); + if (len == -1) { + buf[0] = 0; + len = 1; + eof = true; + } + inf.setInput(buf, 0, len); + } + + public int available() throws IOException { + if (isClosed) + return 0; + long avail = zfin.size() - inf.getBytesWritten(); + return (avail > (long) Integer.MAX_VALUE ? + Integer.MAX_VALUE : (int) avail); + } + + protected void finalize() throws IOException { + inFinalizer = true; + close(); + } + } + /* * Gets an inflater from the list of available inflaters or allocates * a new one. @@ -543,11 +576,14 @@ synchronized (this) { closeRequested = true; - if (streams.size() !=0) { - Set copy = streams; - streams = new HashSet<>(); - for (InputStream is: copy) + Iterator> streamsIterator = + streams.iterator(); + while (streamsIterator.hasNext()) { + InputStream is = streamsIterator.next().get(); + if (null != is) { is.close(); + } + streamsIterator.remove(); } if (jzfile != 0) { @@ -684,9 +720,12 @@ freeEntry(ZipFile.this.jzfile, jzentry); jzentry = 0; } - streams.remove(this); } } + + protected void finalize() { + close(); + } } diff --git a/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java b/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java new file mode 100644 --- /dev/null +++ b/test/java/util/zip/ZipFile/ClearStaleZipFileInputStreams.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Portions Copyright (c) 2011 IBM Corporation + */ + +/* + * @test + * @bug 7031076 + * @summary Allow stale InputStreams from ZipFiles to be GC'd + * @author Neil Richards , + */ +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Random; +import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +public class ClearStaleZipFileInputStreams { + private static final int ZIP_ENTRY_NUM = 5; + + private static final byte[][] data; + + static { + data = new byte[ZIP_ENTRY_NUM][]; + Random r = new Random(); + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + data[i] = new byte[1000]; + r.nextBytes(data[i]); + } + } + + private static File createTestFile(int compression) throws Exception { + File tempZipFile = + File.createTempFile("test-data" + compression, ".zip"); + tempZipFile.deleteOnExit(); + + ZipOutputStream zos = + new ZipOutputStream(new FileOutputStream(tempZipFile)); + zos.setLevel(compression); + + try { + for (int i = 0; i < ZIP_ENTRY_NUM; i++) { + String text = "Entry" + i; + ZipEntry entry = new ZipEntry(text); + zos.putNextEntry(entry); + try { + zos.write(data[i], 0, data[i].length); + } finally { + zos.closeEntry(); + } + } + } finally { + zos.close(); + } + + return tempZipFile; + } + + private static void startGcInducingThread(final int sleepMillis) { + final Thread gcInducingThread = new Thread() { + public void run() { + while (true) { + System.gc(); + try { + Thread.sleep(sleepMillis); + } catch (InterruptedException e) { } + } + } + }; + + gcInducingThread.setDaemon(true); + gcInducingThread.start(); + } + + public static void main(String[] args) throws Exception { + startGcInducingThread(500); + runTest(ZipOutputStream.DEFLATED); + runTest(ZipOutputStream.STORED); + } + + private static void runTest(int compression) throws Exception { + ReferenceQueue rq = new ReferenceQueue<>(); + + System.out.println("Testing with a zip file with compression level = " + + compression); + File f = createTestFile(compression); + try { + ZipFile zf = new ZipFile(f); + try { + Set refSet = createTransientInputStreams(zf, rq); + + System.out.println("Waiting for 'stale' input streams from ZipFile to be GC'd ..."); + System.out.println("(The test will hang on failure)"); + while (false == refSet.isEmpty()) { + refSet.remove(rq.remove()); + } + System.out.println("Test PASSED."); + System.out.println(); + } finally { + zf.close(); + } + } finally { + f.delete(); + } + } + + private static Set createTransientInputStreams(ZipFile zf, + ReferenceQueue rq) throws Exception { + Enumeration zfe = zf.entries(); + Set refSet = new HashSet<>(); + + while (zfe.hasMoreElements()) { + InputStream is = zf.getInputStream(zfe.nextElement()); + refSet.add(new WeakReference(is, rq)); + } + + return refSet; + } +} From David.Holmes at oracle.com Wed Mar 30 20:12:12 2011 From: David.Holmes at oracle.com (David Holmes) Date: Thu, 31 Mar 2011 06:12:12 +1000 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: References: <4D92D711.3080808@oracle.com> Message-ID: <4D938E9C.4080509@oracle.com> Hi Andrew, Dr Andrew John Hughes said the following on 03/31/11 00:08: > On 30 March 2011 08:09, David Holmes wrote: >> http://cr.openjdk.java.net/~dholmes/7032364/webrev/ >> >> More pieces to support SE Embedded. > > When are these files installed? Will they interfere with Zero/Shark > installs on ARM & PPC? Not sure how to answer the "when" part exactly (it's done in make/java/vm/Makefile), but this won't interfere with Zero as it defines its own value for the "arch" to use: JVMCFG = $(LIBDIR)/$(LIBARCH)/jvm.cfg # # How to install jvm.cfg. # ifeq ($(ZERO_BUILD), true) JVMCFG_ARCH = zero else JVMCFG_ARCH = $(ARCH) endif $(JVMCFG): $(PLATFORM_SRC)/bin/$(JVMCFG_ARCH)/jvm.cfg $(install-file) David From David.Holmes at oracle.com Wed Mar 30 20:15:34 2011 From: David.Holmes at oracle.com (David Holmes) Date: Thu, 31 Mar 2011 06:15:34 +1000 Subject: Trivial review: 7032364 Add jvm.cfg file for ARM and PPC architectures In-Reply-To: <4D935809.7040702@oracle.com> References: <4D92D711.3080808@oracle.com> <4D935809.7040702@oracle.com> Message-ID: <4D938F66.3000807@oracle.com> Hi Joe, Joe Darcy said the following on 03/31/11 02:19: > David Holmes wrote: >> http://cr.openjdk.java.net/~dholmes/7032364/webrev/ >> >> More pieces to support SE Embedded. >> > > In the jvm.cfg files for other "newer" configurations, "-hotspot" is set > to "ERROR." So unless you have a need to recognize -hotspot in ARM and > PPC I would encourage the same setting on those platforms, otherwise > approved. No I don't think we specifically need to recognize -hotspot :) For the record here are the existing entries: src/solaris/bin/amd64/jvm.cfg:-hotspot ERROR src/solaris/bin/i586/jvm.cfg:-hotspot ALIASED_TO -client src/solaris/bin/ia64/jvm.cfg:-hotspot ERROR src/solaris/bin/sparc/jvm.cfg:-hotspot ALIASED_TO -client src/solaris/bin/sparcv9/jvm.cfg:-hotspot ERROR src/solaris/bin/zero/jvm.cfg:-hotspot ERROR as 64-bit has not had client I guess someone decided to not alias to server instead but made it an error. We were being consistent with the other 32-bit platforms, but we can follow Zero's lead instead :) Thanks, David From xueming.shen at oracle.com Wed Mar 30 20:31:06 2011 From: xueming.shen at oracle.com (Xueming Shen) Date: Wed, 30 Mar 2011 13:31:06 -0700 Subject: Suspected regression: fix for 6735255 causes delay in GC of ZipFile InputStreams, increase in heap demand In-Reply-To: <1301514810.24605.64.camel@chalkhill> References: <1300916786.4515.107.camel@chalkhill> <4D922D68.2080202@oracle.com> <1301514810.24605.64.camel@chalkhill> Message-ID: <4D93930A.2000604@oracle.com> On 03/30/2011 12:53 PM, Neil Richards wrote: > Hi Sherman, > Thanks for your review and comments on this. > > On Tue, 2011-03-29 at 12:05 -0700, Xueming Shen wrote: >> Hi Neil, >> >> It appears to be a "regression" in scenario you described (user >> application never close the input stream after use and the ZipFile >> instance being retained during the lifetime of the process). The >> proposed approach seems to solve this particular problem. >> >> Here are my comments regarding the patch. >> >> (1) ZipFileInflaterInputStream.close() now synchronizes on >> Zipfile.this, is it really necessary? > Synchronization is used so that an update to 'isClosed' on one thread is > seen by another. > > Adding finalization (ie. a call from finalize() to close()) effectively > introduces a new thread into the mix, namely the finalization thread. > Whilst you're correct in saying that, in general, InputStream gives no > thread-safe guarantees, in this particular case I believe it is valid to > make sure updates to this field are seen across threads, to prevent the > logic of close() being run twice. Isn't it true that when the finalize()->close() gets invoked, there should be no strong reference anywhere else that you can use to invoke close() in other thread? ZipFileInputStream class has to sync on ZipFile.this, the read/close() methods are accessing the underlying/shared bits of the ZipFile. For ZipFileInflaterInputStream.close() case, even we want to make sure the isClose is synced, I would prefer to see a "local" lock, maybe simply make close() synchronized is better? -Sherman > I chose to synchronize on ZipFile.this merely for consistency - ie. > because that's what ZipFileInputStream (the other InputStream impl in > ZipFile) does. > > I suppose I felt the risks of creating some kind of obscure deadlock > scenario was minimised by copying the existing pattern. > > I can be easily swayed if you think there's a better object to > synchronize on, that doesn't run an increased risk of deadlock. > >> (2) Is there any particular reason that we don't want to "reuse" the >> Inflater(), if the close comes from the finalize() in your testing >> evn? One thing we noticed before is that the moment the >> InputStream gets finalized, the Inflater embedded might have been >> finalized already, this is the reason why we have a "inf.ended()" >> check in releaseInflater(). > The ZipFileInflaterInputStream object's finalize() method is called by > the finalization thread, after it has been added to the finalization > queue by GC. > > If *it* has been added to the finalization queue (because it's eligible > for GC), then so will the Inflater object it is referencing. > > As finalization gives no guarantees as to the order in which objects are > finalized, regardless of whether finalize() has been called on the > Inflater object, it is nevertheless the case that its method *will* be > called at some point, so the Inflater object *will* be ended. > > If it has been put back into the inflater cache (because ZFIIS's > finalize happened to be called first), then this ended inflater will lie > in wait for another ZFIIS to use it, which would result in a > particularly unexpected exception being thrown. > > In general, I believe it to be quite frowned on to "resurrect" objects > which are going through finalization (including those queued up for > finalization) and place them back into the live set of object, as weird > behaviour often ensues if one does. > > (Especially as, iirc, finalize() is only called once per object, > regardless of whether it is "dug back up" in this fashion). > >> (3) The attached test case does "f.close()" in its finally block, I >> guess it should be f.delete()? > When I wrote the testcase, I relied upon File.deleteOnExit() to take > care of cleaning up the temporary file(s) created. > > However, I recall now that I don't think it guarantees deletion on > abnormal termination. > > I agree that calling f.delete() instead of f.close() would be a good > improvement to the testcase. > > Please find below an updated changeset, with this change made and the > bug number filled in. > > Hope this helps to clarify things, > Thanks again, > Neil > From jonathan.gibbons at oracle.com Thu Mar 31 01:18:40 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 31 Mar 2011 01:18:40 +0000 Subject: hg: jdk7/tl/langtools: 7031108: NPE in javac.jvm.ClassReader.findMethod in PackageElement.enclosedElements from AP in incr build Message-ID: <20110331011847.D9B164764A@hg.openjdk.java.net> Changeset: 02ba4ff98742 Author: jjg Date: 2011-03-30 18:18 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/02ba4ff98742 7031108: NPE in javac.jvm.ClassReader.findMethod in PackageElement.enclosedElements from AP in incr build Reviewed-by: darcy, mcimadamore ! src/share/classes/com/sun/tools/javac/jvm/ClassReader.java ! src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java ! src/share/classes/com/sun/tools/javac/resources/compiler.properties + test/tools/javac/classreader/T7031108.java ! test/tools/javac/diags/examples.not-yet.txt From jonathan.gibbons at oracle.com Thu Mar 31 01:32:40 2011 From: jonathan.gibbons at oracle.com (jonathan.gibbons at oracle.com) Date: Thu, 31 Mar 2011 01:32:40 +0000 Subject: hg: jdk7/tl/langtools: 7031005: javap prints "extends java.lang.Object" Message-ID: <20110331013242.B339D4764B@hg.openjdk.java.net> Changeset: c55928005af4 Author: jjg Date: 2011-03-30 18:32 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/langtools/rev/c55928005af4 7031005: javap prints "extends java.lang.Object" Reviewed-by: mcimadamore ! src/share/classes/com/sun/tools/classfile/Type.java ! src/share/classes/com/sun/tools/javap/ClassWriter.java ! test/tools/javap/6937244/T6937244A.java ! test/tools/javap/T4880663.java ! test/tools/javap/T4880672.java + test/tools/javap/TestSuperclass.java From david.holmes at oracle.com Thu Mar 31 02:21:47 2011 From: david.holmes at oracle.com (david.holmes at oracle.com) Date: Thu, 31 Mar 2011 02:21:47 +0000 Subject: hg: jdk7/tl/jdk: 7032364: Add jvm.cfg file for ARM and PPC architectures Message-ID: <20110331022205.165FA4764E@hg.openjdk.java.net> Changeset: 5107fb3a9c06 Author: dholmes Date: 2011-03-30 22:20 -0400 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5107fb3a9c06 7032364: Add jvm.cfg file for ARM and PPC architectures Reviewed-by: darcy, bdelsart, alanb, mduigou + src/solaris/bin/arm/jvm.cfg + src/solaris/bin/ppc/jvm.cfg From daniel.daugherty at oracle.com Thu Mar 31 04:10:43 2011 From: daniel.daugherty at oracle.com (daniel.daugherty at oracle.com) Date: Thu, 31 Mar 2011 04:10:43 +0000 Subject: hg: jdk7/tl/jdk: 7030400: 3/4 PrivateTransportTest.sh needs adjustment to work with 7003964 Message-ID: <20110331041053.2569347653@hg.openjdk.java.net> Changeset: e2862ac26354 Author: dcubed Date: 2011-03-30 21:10 -0700 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/e2862ac26354 7030400: 3/4 PrivateTransportTest.sh needs adjustment to work with 7003964 Summary: Fix typo in GetModuleHandle() function lookup. Reviewed-by: dholmes, alanb, acorn, zgu ! test/com/sun/jdi/PrivateTransportTest.sh From mike.duigou at oracle.com Thu Mar 31 19:59:55 2011 From: mike.duigou at oracle.com (Mike Duigou) Date: Thu, 31 Mar 2011 12:59:55 -0700 Subject: Request for review: 6312706: Map entrySet iterators should return different entries on each call to next() In-Reply-To: <1301501235.7943.68.camel@chalkhill> References: <1300927894.11817.45.camel@chalkhill> , <5EAE61D7-847F-4A35-BB23-FF5F93EC7255@oracle.com> , <754C9AD9-E097-4276-B4CC-47750DC3AB57@oracle.com> , <1301127009.22505.116.camel@chalkhill> , <1A09DE36-D1C0-4F41-A2C2-12178351CA91@oracle.com> , <1301501235.7943.68.camel@chalkhill> Message-ID: <52D0B0FD-470C-4918-B973-84B40EBD0FA1@oracle.com> On Mar 30 2011, at 09:07 , Neil Richards wrote: > On Tue, 2011-03-29 at 15:09 -0700, Mike Duigou wrote: >> >> Neil, do you have a strong reason or preference for using an anonymous inner Object [for NULL]? > > Hi Jason, thanks for your review and suggestion. > > In summary, as using 'new Integer(0)' for NULL would save on having an > extra Class definition, I'm all in favour of adopting your amendment - > thanks once again. > > Mike, are you happy to make this simple modification to the changeset, > or shall I send you an updated version ? I will make the modification as Jason suggested and commit this issue today. Mike From michael.x.mcmahon at oracle.com Thu Mar 31 20:11:29 2011 From: michael.x.mcmahon at oracle.com (michael.x.mcmahon at oracle.com) Date: Thu, 31 Mar 2011 20:11:29 +0000 Subject: hg: jdk7/tl/jdk: 7032866: Problem with fix for 7030256 Message-ID: <20110331201155.E57754768D@hg.openjdk.java.net> Changeset: 683957148bab Author: michaelm Date: 2011-03-31 17:37 +0100 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/683957148bab 7032866: Problem with fix for 7030256 Reviewed-by: alanb ! src/windows/native/java/net/net_util_md.c