<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-27647</id>
	<title>Nabble - OpenJDK Core Libraries</title>
	<updated>2009-11-27T21:24:02Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/OpenJDK-Core-Libraries-f27647.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OpenJDK-Core-Libraries-f27647.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26550623</id>
	<title>Re: hg: jdk7/tl/jdk: 3 new changesets</title>
	<published>2009-11-27T21:24:02Z</published>
	<updated>2009-11-27T21:24:02Z</updated>
	<author>
		<name>xueming.shen</name>
	</author>
	<content type="html">Bob Lee wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, Oct 21, 2009 at 1:02 PM, &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26550623&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;xueming.shen@...&lt;/a&gt; 
&lt;br&gt;&amp;gt; &amp;lt;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26550623&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;xueming.shen@...&lt;/a&gt;&amp;gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; 4206909: want java.util.zip to work for interactive use (Z_SYNC_FLUSH)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Summary: Add sync_flush option into Deflater/DefalterOutputStream
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Reviewed-by: martin, alanb
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ! src/share/classes/java/util/zip/Deflater.java
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ! src/share/classes/java/util/zip/DeflaterOutputStream.java
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; ! src/share/native/java/util/zip/Deflater.c
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; + test/java/util/zip/InflateIn_DeflateOut.java
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Should we use an enum for the flush strategies? It would help separate 
&lt;br&gt;&amp;gt; them from the compression strategies, and it would make the new method 
&lt;br&gt;&amp;gt; easier to use because it would be obvious at compile time which values 
&lt;br&gt;&amp;gt; you can pass in (as opposed to allowing any random int).
&lt;br&gt;&amp;gt;
&lt;/div&gt;Bob,
&lt;br&gt;&lt;br&gt;There was discussion on whether or not the enum should be used instead 
&lt;br&gt;of the raw integter tyep. &amp;nbsp;Using an enum has
&lt;br&gt;clear advantage as you pointed but would be inconsistent with existing 
&lt;br&gt;parameters (the strategy for example) . We settled
&lt;br&gt;with the raw integer to prefer the local consistency.
&lt;br&gt;&lt;br&gt;&amp;gt; Also, we could add a note about how alternate flush strategies can 
&lt;br&gt;&amp;gt; negatively affect compatibility with tools like WinZip.
&lt;br&gt;What exactly is this incompatibility you refer here?
&lt;br&gt;&lt;br&gt;Sherman
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-3-new-changesets-tp26001070p26550623.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26536723</id>
	<title>hg: jdk7/tl/jdk: 3 new changesets</title>
	<published>2009-11-26T16:56:19Z</published>
	<updated>2009-11-26T16:56:19Z</updated>
	<author>
		<name>weijun.wang</name>
	</author>
	<content type="html">Changeset: 7871897537b1
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;weijun
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-27 08:51 +0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7871897537b1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7871897537b1&lt;/a&gt;&lt;br&gt;&lt;br&gt;6853328: Support OK-AS-DELEGATE flag
&lt;br&gt;Reviewed-by: valeriep
&lt;br&gt;&lt;br&gt;! src/share/classes/com/sun/security/jgss/ExtendedGSSContext.java
&lt;br&gt;! src/share/classes/org/ietf/jgss/GSSContext.java
&lt;br&gt;! src/share/classes/sun/net/www/protocol/http/spnego/NegotiatorImpl.java
&lt;br&gt;! src/share/classes/sun/security/jgss/GSSContextImpl.java
&lt;br&gt;! src/share/classes/sun/security/jgss/krb5/InitialToken.java
&lt;br&gt;! src/share/classes/sun/security/jgss/krb5/Krb5Context.java
&lt;br&gt;! src/share/classes/sun/security/jgss/spi/GSSContextSpi.java
&lt;br&gt;! src/share/classes/sun/security/jgss/spnego/SpNegoContext.java
&lt;br&gt;! src/share/classes/sun/security/jgss/wrapper/NativeGSSContext.java
&lt;br&gt;! src/share/classes/sun/security/krb5/Credentials.java
&lt;br&gt;! src/share/classes/sun/security/krb5/internal/CredentialsUtil.java
&lt;br&gt;! test/sun/security/krb5/auto/Context.java
&lt;br&gt;! test/sun/security/krb5/auto/KDC.java
&lt;br&gt;+ test/sun/security/krb5/auto/OkAsDelegate.java
&lt;br&gt;+ test/sun/security/krb5/auto/OkAsDelegateXRealm.java
&lt;br&gt;+ test/sun/security/krb5/auto/ok-as-delegate-xrealm.sh
&lt;br&gt;+ test/sun/security/krb5/auto/ok-as-delegate.sh
&lt;br&gt;&lt;br&gt;Changeset: a7bf281b1de3
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;weijun
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-27 08:51 +0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a7bf281b1de3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a7bf281b1de3&lt;/a&gt;&lt;br&gt;&lt;br&gt;6901085: SPNEGO does not works with native program
&lt;br&gt;Reviewed-by: valeriep
&lt;br&gt;&lt;br&gt;! src/share/classes/sun/security/jgss/spnego/SpNegoContext.java
&lt;br&gt;&lt;br&gt;Changeset: a7d0572340fd
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;weijun
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-27 08:51 +0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a7d0572340fd&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/a7d0572340fd&lt;/a&gt;&lt;br&gt;&lt;br&gt;6770883: Infinite loop if SPNEGO specified as sun.security.jgss.mechanism
&lt;br&gt;Reviewed-by: valeriep
&lt;br&gt;&lt;br&gt;! src/share/classes/sun/security/jgss/spnego/SpNegoMechFactory.java
&lt;br&gt;+ test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-3-new-changesets-tp26536723p26536723.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26535056</id>
	<title>Re: Need reviewer - java.template changes</title>
	<published>2009-11-26T13:24:52Z</published>
	<updated>2009-11-26T13:24:52Z</updated>
	<author>
		<name>Remi Forax</name>
	</author>
	<content type="html">Le 26/11/2009 19:18, Kelly O'Hair a écrit :
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I don't quite understand the 'prefer the original' comment, all I'm 
&lt;br&gt;&amp;gt; adding
&lt;br&gt;&amp;gt; is a .template suffix, the basename is still there, nothing was taken 
&lt;br&gt;&amp;gt; away.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In the Makefiles and the ant scripts it makes life so much easier with
&lt;br&gt;&amp;gt; this .template suffix. Maybe it's only something a 'build' person 
&lt;br&gt;&amp;gt; would love. ;^)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -kto
&lt;/div&gt;&lt;br&gt;You're not alone.
&lt;br&gt;I currently use a patched version of eclipse to be able to incrementally 
&lt;br&gt;compile
&lt;br&gt;the jdk with eclipse.
&lt;br&gt;One reason is that because templates ends with &amp;quot;.java&amp;quot;, they are recognized,
&lt;br&gt;by eclipse as Java classes and eclipse behaves strangely when you try to 
&lt;br&gt;refactor
&lt;br&gt;some code let say in package java.dyn, it also try to refactor the templates
&lt;br&gt;and fails.
&lt;br&gt;&lt;br&gt;Rémi
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Alan Bateman wrote:
&lt;br&gt;&amp;gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Need reviewer.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 6903197: Some java template files need to be renamed to .java.template
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; Looks okay to me (although I prefer the original names :-). &amp;nbsp;It would 
&lt;br&gt;&amp;gt;&amp;gt; be good to send a heads-up to i18n-dev for the changes to generation 
&lt;br&gt;&amp;gt;&amp;gt; of the locales.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; -Alan.
&lt;/div&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewer---java.template-changes-tp26521473p26535056.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26533226</id>
	<title>Re: Need reviewer - java.template changes</title>
	<published>2009-11-26T10:18:50Z</published>
	<updated>2009-11-26T10:18:50Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Thanks.
&lt;br&gt;&lt;br&gt;I don't quite understand the 'prefer the original' comment, all I'm adding
&lt;br&gt;is a .template suffix, the basename is still there, nothing was taken away.
&lt;br&gt;&lt;br&gt;In the Makefiles and the ant scripts it makes life so much easier with
&lt;br&gt;this .template suffix. Maybe it's only something a 'build' person would love. ;^)
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;&lt;br&gt;Alan Bateman wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Kelly O'Hair wrote:
&lt;br&gt;&amp;gt;&amp;gt; Need reviewer.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; 6903197: Some java template files need to be renamed to .java.template
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt; Looks okay to me (although I prefer the original names :-). &amp;nbsp;It would be 
&lt;br&gt;&amp;gt; good to send a heads-up to i18n-dev for the changes to generation of the 
&lt;br&gt;&amp;gt; locales.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Alan.
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewer---java.template-changes-tp26521473p26533226.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26526359</id>
	<title>Re: hg: jdk7/tl/jdk: 3 new changesets</title>
	<published>2009-11-26T01:00:04Z</published>
	<updated>2009-11-26T01:00:04Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Bob Lee wrote:
&lt;br&gt;&amp;gt; :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Should we use an enum for the flush strategies? It would help separate 
&lt;br&gt;&amp;gt; them from the compression strategies, and it would make the new method 
&lt;br&gt;&amp;gt; easier to use because it would be obvious at compile time which values 
&lt;br&gt;&amp;gt; you can pass in (as opposed to allowing any random int).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Also, we could add a note about how alternate flush strategies can 
&lt;br&gt;&amp;gt; negatively affect compatibility with tools like WinZip.
&lt;br&gt;This is a tough one. Enums have clear advantages but it isn't always 
&lt;br&gt;clear if it is the right thing (from a consistency point of view) when 
&lt;br&gt;updating APIs that date from before enums. In this case it probably 
&lt;br&gt;isn't too bad in that many applications use DeflaterOutputStream rather 
&lt;br&gt;than using Deflater directly.
&lt;br&gt;&lt;br&gt;I wasn't aware of any compatibility issues with WinZip (Sherman, do 
&lt;br&gt;might know about this?). The main motive, as you probably know, was the 
&lt;br&gt;compressed network stream rather than zip files.
&lt;br&gt;&lt;br&gt;-Alan.
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-3-new-changesets-tp26001070p26526359.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26526334</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-26T00:57:43Z</published>
	<updated>2009-11-26T00:57:43Z</updated>
	<author>
		<name>Goktug Gokdogan</name>
	</author>
	<content type="html">I think, we can overcome the slowdown. The point of my prototype is to check the general performance characteristics. Slowdown is more likely due to the poorly optimized extra method call to keep all logic in one place. Normally the gap buffer algorithm should add only one comparison overhead to the common case which will not to be observable in benchmarks.&lt;div&gt;
&lt;br&gt;&lt;/div&gt;&lt;div&gt;I have previously thought about implementing a similar behavior in other array-based growing structures, but it is not worth it. You can easily use your previous data structures for pre-appending algorithms - just by appending to end and iterating from reverse. But you can&amp;#39;t do that in a StringBuilder because StringBuilder itself is the composed data. So, in my opinion, ArrayList is not a good analogy for this case. &lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;StringBuilder, as its name suggests, is for building strings and building string by appending to end is only one of the ways of doing it. &lt;/div&gt;&lt;div&gt;I think we should go for this if we can do it without an observable slowdown.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Thu, Nov 26, 2009 at 1:02 AM, Martin Buchholz &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26526334&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;martinrb@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;On Wed, Nov 25, 2009 at 21:24, Martin Buchholz &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26526334&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;martinrb@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt; On Mon, Nov 23, 2009 at 22:51, Goktug Gokdogan &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26526334&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt; wrote:&lt;br&gt;
&amp;gt;&amp;gt; Nobody is interested or everybody is busy?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I think there&amp;#39;s a place for a StringBuilder-like&lt;br&gt;
&amp;gt; abstraction that uses a gap buffer,&lt;br&gt;
&amp;gt; but it shouldn&amp;#39;t replace StringBuilder.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;Let me qualify that.&lt;br&gt;
&lt;br&gt;
It is hard to sell the small slowdown in the common case&lt;br&gt;
to make other (rare?) operations much faster.&lt;br&gt;
ArrayList should have been implemented to allow&lt;br&gt;
O(1) insert at both ends, like ArrayDeque,&lt;br&gt;
but it is hard to persuade the maintainers&lt;br&gt;
that such a change is worth making today,&lt;br&gt;
when the benchmarks all exercise only the common case.&lt;br&gt;
Similarily for a hypothetical GapArrayList.&lt;br&gt;
On the other hand, on modern cpus&lt;br&gt;
arithmetic is ever closer to being &amp;quot;free&amp;quot;,&lt;br&gt;
so it is easier to justify the extra computation.&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
Martin&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26526334.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26526115</id>
	<title>Re: Need reviewer - java.template changes</title>
	<published>2009-11-26T00:42:10Z</published>
	<updated>2009-11-26T00:42:10Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Kelly O'Hair wrote:
&lt;br&gt;&amp;gt; Need reviewer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 6903197: Some java template files need to be renamed to .java.template
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&lt;/a&gt;&lt;br&gt;Looks okay to me (although I prefer the original names :-). &amp;nbsp;It would be 
&lt;br&gt;good to send a heads-up to i18n-dev for the changes to generation of the 
&lt;br&gt;locales.
&lt;br&gt;&lt;br&gt;-Alan.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewer---java.template-changes-tp26521473p26526115.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26526039</id>
	<title>Re: Fixes to java.util.zip javadoc</title>
	<published>2009-11-26T00:37:05Z</published>
	<updated>2009-11-26T00:37:05Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Martin Buchholz wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Sherman,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Here are some javadoc fixes to recent changes in java.util.zip:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~martin/webrevs/openjdk7/ziplink/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~martin/webrevs/openjdk7/ziplink/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Please review.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Martin
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;Looks good to me. I've created the following to track this:
&lt;br&gt;&amp;nbsp; 6905029: Broken links in Deflater and DeflaterOutputStream javadoc
&lt;br&gt;&lt;br&gt;-Alan.
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fixes-to-java.util.zip-javadoc-tp26523776p26526039.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26524718</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-25T22:02:36Z</published>
	<updated>2009-11-25T22:02:36Z</updated>
	<author>
		<name>Martin Buchholz-3</name>
	</author>
	<content type="html">On Wed, Nov 25, 2009 at 21:24, Martin Buchholz &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26524718&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;martinrb@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; On Mon, Nov 23, 2009 at 22:51, Goktug Gokdogan &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26524718&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; Nobody is interested or everybody is busy?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think there's a place for a StringBuilder-like
&lt;br&gt;&amp;gt; abstraction that uses a gap buffer,
&lt;br&gt;&amp;gt; but it shouldn't replace StringBuilder.
&lt;br&gt;&lt;br&gt;Let me qualify that.
&lt;br&gt;&lt;br&gt;It is hard to sell the small slowdown in the common case
&lt;br&gt;to make other (rare?) operations much faster.
&lt;br&gt;ArrayList should have been implemented to allow
&lt;br&gt;O(1) insert at both ends, like ArrayDeque,
&lt;br&gt;but it is hard to persuade the maintainers
&lt;br&gt;that such a change is worth making today,
&lt;br&gt;when the benchmarks all exercise only the common case.
&lt;br&gt;Similarily for a hypothetical GapArrayList.
&lt;br&gt;On the other hand, on modern cpus
&lt;br&gt;arithmetic is ever closer to being &amp;quot;free&amp;quot;,
&lt;br&gt;so it is easier to justify the extra computation.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26524718.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26524515</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-25T21:24:12Z</published>
	<updated>2009-11-25T21:24:12Z</updated>
	<author>
		<name>Martin Buchholz-3</name>
	</author>
	<content type="html">On Mon, Nov 23, 2009 at 22:51, Goktug Gokdogan &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26524515&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Nobody is interested or everybody is busy?
&lt;br&gt;&lt;br&gt;I think there's a place for a StringBuilder-like
&lt;br&gt;abstraction that uses a gap buffer,
&lt;br&gt;but it shouldn't replace StringBuilder.
&lt;br&gt;&lt;br&gt;Like ArrayList, users of StringBuilder
&lt;br&gt;expect that it is very efficient for
&lt;br&gt;appends, but no other operations.
&lt;br&gt;I would think that most of the time
&lt;br&gt;a gap buffer would not be used
&lt;br&gt;just to create a string, but instead
&lt;br&gt;would be a longer-lived software entity.
&lt;br&gt;Gap buffers are used in emacs to implement
&lt;br&gt;long-lived text buffers, and there the equivalent
&lt;br&gt;of toString is a rare operation.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26524515.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26524188</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-25T20:23:51Z</published>
	<updated>2009-11-25T20:23:51Z</updated>
	<author>
		<name>Goktug Gokdogan</name>
	</author>
	<content type="html">Actually, this code is not related to size change or management, instead it modifies where the builder keeps the gap taking into account the last change position. So I think it is better not to handle these two issues together.&lt;br&gt;
&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Nov 24, 2009 at 4:08 AM, Marek Kozieł &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26524188&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;develop4lasu@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
2009/11/17 Goktug Gokdogan &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26524188&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt;:&lt;br&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;h5&quot;&gt;&amp;gt; Hi.&lt;br&gt;
&amp;gt; As you know, java.lang.StringXXXX classes favor insertion to the end in&lt;br&gt;
&amp;gt; terms of performance. Adding to beginning or middle of these sequences&lt;br&gt;
&amp;gt; causes most of the array to be shifted toward the end every time. Every ones&lt;br&gt;
&amp;gt; in a while I end up changing my algorithms those are based on prefixing&lt;br&gt;
&amp;gt; strings (ex. building a fully qualified name from class name to root&lt;br&gt;
&amp;gt; direction). Sometimes these kind of changes could result in less readable&lt;br&gt;
&amp;gt; code. And I should note that, there are lots of developers out there who&lt;br&gt;
&amp;gt; does not know the internal details of these classes.&lt;br&gt;
&amp;gt; Anyway, this behavior was frustrating me for a while and I decided to&lt;br&gt;
&amp;gt; suggest a gap buffer based modification to AbstractStringBuilder to solve&lt;br&gt;
&amp;gt; this problem but never had time before to prototype it.&lt;br&gt;
&amp;gt; I tested the original StringBuilder against the prototype. Preliminary&lt;br&gt;
&amp;gt; results for the duration of 100000 insertions of a short string:&lt;br&gt;
&amp;gt;                       Original | Prototype&lt;br&gt;
&amp;gt;            append =&amp;gt;     ~33   |   ~34&lt;br&gt;
&amp;gt;  insert beginning =&amp;gt;   ~32000  |   ~38&lt;br&gt;
&amp;gt;     insert random =&amp;gt;   ~16000  |  ~10000&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; A negligible overhead appears for appending (which could be avoided with&lt;br&gt;
&amp;gt; shortcuts), but lots of performance gain achieved for other cases.&lt;br&gt;
&amp;gt; If we handle insertion at zero as a special case in insert method or if we&lt;br&gt;
&amp;gt; add an another method like &amp;#39;prepend&amp;#39;, the insertion at beginning will show&lt;br&gt;
&amp;gt; exactly same performance characteristics of insertion at the end.&lt;br&gt;
&amp;gt; In my opinion, this is a well-worth modification to string building classes.&lt;br&gt;
&amp;gt; If anybody agrees on sponsoring, I can tidy up code and contribute to&lt;br&gt;
&amp;gt; OpenJDK.&lt;br&gt;
&amp;gt; - Goktug&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; PS: I&amp;#39;ve used  following code for rough testing:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; private static final int LOOP_COUNT = 100000;&lt;br&gt;
&amp;gt; public static void main(String[] args) {&lt;br&gt;
&amp;gt; long nanoTime = System.nanoTime();&lt;br&gt;
&amp;gt; testStandardAppend();&lt;br&gt;
&amp;gt; //testAppendBeginning();&lt;br&gt;
&amp;gt; //testAppendRandom();&lt;br&gt;
&amp;gt; long span = System.nanoTime() - nanoTime;&lt;br&gt;
&amp;gt; System.out.println(span / 1000000);&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; private static void testStandardAppend() {&lt;br&gt;
&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;br&gt;
&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;br&gt;
&amp;gt; builder.append(&amp;quot;tryouts&amp;quot;);&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; private static void testAppendBeginning() {&lt;br&gt;
&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;br&gt;
&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;br&gt;
&amp;gt; builder.insert(0, &amp;quot;tryouts&amp;quot;);&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; private static void testAppendRandom() {&lt;br&gt;
&amp;gt; Random random = new Random();&lt;br&gt;
&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;br&gt;
&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;br&gt;
&amp;gt; builder.insert(random.nextInt(builder.length()), &amp;quot;tryouts&amp;quot;);&lt;br&gt;
&amp;gt; }&lt;br&gt;
&amp;gt; }&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;Hello.&lt;br&gt;
&lt;br&gt;
I think there is no point to implement that without size manager for&lt;br&gt;
such resizeable structures because this mean that work will have to be&lt;br&gt;
done twice.&lt;br&gt;
So if any one would like to reimplement AbstractStringBuilder he&lt;br&gt;
should also test how much custom memory management impact on used&lt;br&gt;
memory, including decreasing buffer, and exchange size*=2 capacity&lt;br&gt;
increasing.&lt;br&gt;
Smf like:&lt;br&gt;
if (size&amp;lt;some) size =max(size*2,requested*3/2);&lt;br&gt;
else size = max(size+const,requested+const);&lt;br&gt;
&lt;br&gt;
There are many reasons why String cannot share memory with changeable Objects.&lt;br&gt;
If anything can  be optimized then in my opinion it is:&lt;br&gt;
Returned String can be hold in Builder using Reference (so it could be&lt;br&gt;
garbaged ) and returned again if no modification were performed, and&lt;br&gt;
on modification Reference should be cleaned.&lt;br&gt;
&lt;br&gt;
Following String problems If there are concerns about unnecessary&lt;br&gt;
String creations i suggest add one more Interface as standard rather&lt;br&gt;
than hard to control solutions (need still some analysis):&lt;br&gt;
&lt;br&gt;
interface ToStringBuilder{&lt;br&gt;
  // Appends current object to given builder, or created new builder&lt;br&gt;
if null is given&lt;br&gt;
 StringBuilder  appendTo(StringBuilder ret);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
class SampleImplementation implements ToStringBuilder{&lt;br&gt;
&lt;br&gt;
 String toString(){&lt;br&gt;
    return appendTo(null).toString();&lt;br&gt;
 }&lt;br&gt;
&lt;br&gt;
 StringBuilder  toBuilder(StringBuilder ret){&lt;br&gt;
    if (ret==null) ret= new StringBuilder();&lt;br&gt;
    ...&lt;br&gt;
    return ret;&lt;br&gt;
 }&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
This could get caught up with efficiency.&lt;br&gt;
&lt;br&gt;
The only thing which need to be considered is easy way to add some&lt;br&gt;
type of simple transaction on this(but i&amp;#39;m not sure about it):&lt;br&gt;
&lt;br&gt;
/* If object is appending data to builder and exception occurs (so&lt;br&gt;
proper endAppendTransation will be not called) then all appends after&lt;br&gt;
this call will be discarded */&lt;br&gt;
public void startAppendTransation(Object key)&lt;br&gt;
&lt;br&gt;
public void endAppendTransation(Object key)&lt;br&gt;
&lt;font color=&quot;#888888&quot;&gt;&lt;br&gt;
--&lt;br&gt;
Regards.&lt;br&gt;
Lasu aka Marek Kozieł&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://lasu2string.blogspot.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://lasu2string.blogspot.com/&lt;/a&gt;&lt;br&gt;
&lt;/font&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26524188.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26523776</id>
	<title>Fixes to java.util.zip javadoc</title>
	<published>2009-11-25T19:06:28Z</published>
	<updated>2009-11-25T19:06:28Z</updated>
	<author>
		<name>Martin Buchholz-3</name>
	</author>
	<content type="html">Hi Sherman,
&lt;br&gt;&lt;br&gt;Here are some javadoc fixes to recent changes in java.util.zip:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://cr.openjdk.java.net/~martin/webrevs/openjdk7/ziplink/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~martin/webrevs/openjdk7/ziplink/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Please review.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fixes-to-java.util.zip-javadoc-tp26523776p26523776.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26521618</id>
	<title>Re: Need reviewer - java.template changes</title>
	<published>2009-11-25T14:47:42Z</published>
	<updated>2009-11-25T14:47:42Z</updated>
	<author>
		<name>Martin Buchholz-3</name>
	</author>
	<content type="html">The Basic-X.java related changes look good to me.
&lt;br&gt;&lt;br&gt;Martin
&lt;br&gt;&lt;br&gt;On Wed, Nov 25, 2009 at 14:34, Kelly O'Hair &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26521618&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Kelly.Ohair@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Need reviewer.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 6903197: Some java template files need to be renamed to .java.template
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Changing a few more java source template filenames:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; make/tools/CharsetMapping/DoubleByte-X.java.template
&lt;br&gt;&amp;gt;  (was make/tools/CharsetMapping/DoubleByte-X.java)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; make/tools/CharsetMapping/SingleByte-X.java.template
&lt;br&gt;&amp;gt;  (was make/tools/CharsetMapping/SingleByte-X.java)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; src/share/classes/sun/util/CoreResourceBundleControl-XLocales.java.template
&lt;br&gt;&amp;gt;  (was src/share/classes/sun/util/CoreResourceBundleControl-XLocales.java)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java.template
&lt;br&gt;&amp;gt;  (was src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; test/java/util/Formatter/Basic-X.java.template
&lt;br&gt;&amp;gt;  (was test/java/util/Formatter/Basic-X.java)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -kto
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewer---java.template-changes-tp26521473p26521618.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26521473</id>
	<title>Need reviewer - java.template changes</title>
	<published>2009-11-25T14:34:48Z</published>
	<updated>2009-11-25T14:34:48Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Need reviewer.
&lt;br&gt;&lt;br&gt;6903197: Some java template files need to be renamed to .java.template
&lt;br&gt;&lt;a href=&quot;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-tl-6903197/webrev/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Changing a few more java source template filenames:
&lt;br&gt;&lt;br&gt;make/tools/CharsetMapping/DoubleByte-X.java.template
&lt;br&gt;&amp;nbsp; &amp;nbsp;(was make/tools/CharsetMapping/DoubleByte-X.java)
&lt;br&gt;&lt;br&gt;make/tools/CharsetMapping/SingleByte-X.java.template
&lt;br&gt;&amp;nbsp; &amp;nbsp;(was make/tools/CharsetMapping/SingleByte-X.java)
&lt;br&gt;&lt;br&gt;src/share/classes/sun/util/CoreResourceBundleControl-XLocales.java.template
&lt;br&gt;&amp;nbsp; &amp;nbsp;(was src/share/classes/sun/util/CoreResourceBundleControl-XLocales.java)
&lt;br&gt;&lt;br&gt;src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java.template
&lt;br&gt;&amp;nbsp; &amp;nbsp;(was src/share/classes/sun/util/LocaleDataMetaInfo-XLocales.java)
&lt;br&gt;&lt;br&gt;test/java/util/Formatter/Basic-X.java.template
&lt;br&gt;&amp;nbsp; &amp;nbsp;(was test/java/util/Formatter/Basic-X.java)
&lt;br&gt;&lt;br&gt;-kto
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-reviewer---java.template-changes-tp26521473p26521473.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26518261</id>
	<title>hg: jdk7/tl/jdk: 6904183: Fix jdk/test/com/sun/jdi tests to run with -samevm</title>
	<published>2009-11-25T10:50:14Z</published>
	<updated>2009-11-25T10:50:14Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Changeset: 57195a368d33
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-25 08:24 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/57195a368d33&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/57195a368d33&lt;/a&gt;&lt;br&gt;&lt;br&gt;6904183: Fix jdk/test/com/sun/jdi tests to run with -samevm
&lt;br&gt;Reviewed-by: dcubed
&lt;br&gt;&lt;br&gt;! test/Makefile
&lt;br&gt;! test/ProblemList.txt
&lt;br&gt;! test/com/sun/jdi/BadHandshakeTest.java
&lt;br&gt;! test/com/sun/jdi/DoubleAgentTest.java
&lt;br&gt;! test/com/sun/jdi/ExclusiveBind.java
&lt;br&gt;! test/com/sun/jdi/JITDebug.sh
&lt;br&gt;! test/com/sun/jdi/RepStep.java
&lt;br&gt;! test/com/sun/jdi/RunToExit.java
&lt;br&gt;! test/com/sun/jdi/SimulResumerTest.java
&lt;br&gt;! test/com/sun/jdi/Solaris32AndSolaris64Test.sh
&lt;br&gt;! test/com/sun/jdi/VMConnection.java
&lt;br&gt;! test/com/sun/jdi/connect/spi/DebugUsingCustomConnector.java
&lt;br&gt;! test/com/sun/jdi/connect/spi/GeneratedConnectors.java
&lt;br&gt;! test/com/sun/jdi/connect/spi/SimpleLaunchingConnector.java
&lt;br&gt;! test/com/sun/jdi/redefine/RedefineTest.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6904183%3A-Fix-jdk-test-com-sun-jdi-tests-to-run-with--samevm-tp26518261p26518261.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26499684</id>
	<title>Re: hg: jdk7/tl/jdk: 3 new changesets</title>
	<published>2009-11-24T09:06:08Z</published>
	<updated>2009-11-24T09:06:08Z</updated>
	<author>
		<name>Bob Lee</name>
	</author>
	<content type="html">On Wed, Oct 21, 2009 at 1:02 PM,  &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26499684&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;xueming.shen@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
4206909: want java.util.zip to work for interactive use (Z_SYNC_FLUSH)&lt;br&gt;
Summary: Add sync_flush option into Deflater/DefalterOutputStream&lt;br&gt;
Reviewed-by: martin, alanb&lt;br&gt;
&lt;br&gt;
! src/share/classes/java/util/zip/Deflater.java&lt;br&gt;
! src/share/classes/java/util/zip/DeflaterOutputStream.java&lt;br&gt;
! src/share/native/java/util/zip/Deflater.c&lt;br&gt;
+ test/java/util/zip/InflateIn_DeflateOut.java&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Should we use an enum for the flush strategies? It would help separate them from the compression strategies, and it would make the new method easier to use because it would be obvious at compile time which values you can pass in (as opposed to allowing any random int).&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Also, we could add a note about how alternate flush strategies can negatively affect compatibility with tools like WinZip.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Bob &lt;/div&gt;&lt;/div&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-3-new-changesets-tp26001070p26499684.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26492616</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-24T01:08:20Z</published>
	<updated>2009-11-24T01:08:20Z</updated>
	<author>
		<name>Marek Kozieł</name>
	</author>
	<content type="html">2009/11/17 Goktug Gokdogan &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26492616&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi.
&lt;br&gt;&amp;gt; As you know, java.lang.StringXXXX classes favor insertion to the end in
&lt;br&gt;&amp;gt; terms of performance. Adding to beginning or middle of these sequences
&lt;br&gt;&amp;gt; causes most of the array to be shifted toward the end every time. Every ones
&lt;br&gt;&amp;gt; in a while I end up changing my algorithms those are based on prefixing
&lt;br&gt;&amp;gt; strings (ex. building a fully qualified name from class name to root
&lt;br&gt;&amp;gt; direction). Sometimes these kind of changes could result in less readable
&lt;br&gt;&amp;gt; code. And I should note that, there are lots of developers out there who
&lt;br&gt;&amp;gt; does not know the internal details of these classes.
&lt;br&gt;&amp;gt; Anyway, this behavior was frustrating me for a while and I decided to
&lt;br&gt;&amp;gt; suggest a gap buffer based modification to AbstractStringBuilder to solve
&lt;br&gt;&amp;gt; this problem but never had time before to prototype it.
&lt;br&gt;&amp;gt; I tested the original StringBuilder against the prototype. Preliminary
&lt;br&gt;&amp;gt; results for the duration of 100000 insertions of a short string:
&lt;br&gt;&amp;gt;                       Original | Prototype
&lt;br&gt;&amp;gt;            append =&amp;gt;     ~33   |   ~34
&lt;br&gt;&amp;gt;  insert beginning =&amp;gt;   ~32000  |   ~38
&lt;br&gt;&amp;gt;     insert random =&amp;gt;   ~16000  |  ~10000
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; A negligible overhead appears for appending (which could be avoided with
&lt;br&gt;&amp;gt; shortcuts), but lots of performance gain achieved for other cases.
&lt;br&gt;&amp;gt; If we handle insertion at zero as a special case in insert method or if we
&lt;br&gt;&amp;gt; add an another method like 'prepend', the insertion at beginning will show
&lt;br&gt;&amp;gt; exactly same performance characteristics of insertion at the end.
&lt;br&gt;&amp;gt; In my opinion, this is a well-worth modification to string building classes.
&lt;br&gt;&amp;gt; If anybody agrees on sponsoring, I can tidy up code and contribute to
&lt;br&gt;&amp;gt; OpenJDK.
&lt;br&gt;&amp;gt; - Goktug
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; PS: I've used  following code for rough testing:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; private static final int LOOP_COUNT = 100000;
&lt;br&gt;&amp;gt; public static void main(String[] args) {
&lt;br&gt;&amp;gt; long nanoTime = System.nanoTime();
&lt;br&gt;&amp;gt; testStandardAppend();
&lt;br&gt;&amp;gt; //testAppendBeginning();
&lt;br&gt;&amp;gt; //testAppendRandom();
&lt;br&gt;&amp;gt; long span = System.nanoTime() - nanoTime;
&lt;br&gt;&amp;gt; System.out.println(span / 1000000);
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; private static void testStandardAppend() {
&lt;br&gt;&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);
&lt;br&gt;&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {
&lt;br&gt;&amp;gt; builder.append(&amp;quot;tryouts&amp;quot;);
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; private static void testAppendBeginning() {
&lt;br&gt;&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);
&lt;br&gt;&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {
&lt;br&gt;&amp;gt; builder.insert(0, &amp;quot;tryouts&amp;quot;);
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; private static void testAppendRandom() {
&lt;br&gt;&amp;gt; Random random = new Random();
&lt;br&gt;&amp;gt; StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);
&lt;br&gt;&amp;gt; for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {
&lt;br&gt;&amp;gt; builder.insert(random.nextInt(builder.length()), &amp;quot;tryouts&amp;quot;);
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; }
&lt;/div&gt;&lt;br&gt;Hello.
&lt;br&gt;&lt;br&gt;I think there is no point to implement that without size manager for
&lt;br&gt;such resizeable structures because this mean that work will have to be
&lt;br&gt;done twice.
&lt;br&gt;So if any one would like to reimplement AbstractStringBuilder he
&lt;br&gt;should also test how much custom memory management impact on used
&lt;br&gt;memory, including decreasing buffer, and exchange size*=2 capacity
&lt;br&gt;increasing.
&lt;br&gt;Smf like:
&lt;br&gt;if (size&amp;lt;some) size =max(size*2,requested*3/2);
&lt;br&gt;else size = max(size+const,requested+const);
&lt;br&gt;&lt;br&gt;There are many reasons why String cannot share memory with changeable Objects.
&lt;br&gt;If anything can &amp;nbsp;be optimized then in my opinion it is:
&lt;br&gt;Returned String can be hold in Builder using Reference (so it could be
&lt;br&gt;garbaged ) and returned again if no modification were performed, and
&lt;br&gt;on modification Reference should be cleaned.
&lt;br&gt;&lt;br&gt;Following String problems If there are concerns about unnecessary
&lt;br&gt;String creations i suggest add one more Interface as standard rather
&lt;br&gt;than hard to control solutions (need still some analysis):
&lt;br&gt;&lt;br&gt;interface ToStringBuilder{
&lt;br&gt;&amp;nbsp; // Appends current object to given builder, or created new builder
&lt;br&gt;if null is given
&lt;br&gt;&amp;nbsp;StringBuilder &amp;nbsp;appendTo(StringBuilder ret);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;class SampleImplementation implements ToStringBuilder{
&lt;br&gt;&lt;br&gt;&amp;nbsp;String toString(){
&lt;br&gt;&amp;nbsp; &amp;nbsp; return appendTo(null).toString();
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;&amp;nbsp;StringBuilder &amp;nbsp;toBuilder(StringBuilder ret){
&lt;br&gt;&amp;nbsp; &amp;nbsp; if (ret==null) ret= new StringBuilder();
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; return ret;
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;This could get caught up with efficiency.
&lt;br&gt;&lt;br&gt;The only thing which need to be considered is easy way to add some
&lt;br&gt;type of simple transaction on this(but i'm not sure about it):
&lt;br&gt;&lt;br&gt;/* If object is appending data to builder and exception occurs (so
&lt;br&gt;proper endAppendTransation will be not called) then all appends after
&lt;br&gt;this call will be discarded */
&lt;br&gt;public void startAppendTransation(Object key)
&lt;br&gt;&lt;br&gt;public void endAppendTransation(Object key)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Regards.
&lt;br&gt;Lasu aka Marek Kozieł
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://lasu2string.blogspot.com/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lasu2string.blogspot.com/&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26492616.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491200</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-23T22:51:13Z</published>
	<updated>2009-11-23T22:51:13Z</updated>
	<author>
		<name>Goktug Gokdogan</name>
	</author>
	<content type="html">Nobody is interested or everybody is busy?&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Tue, Nov 17, 2009 at 3:16 AM, Goktug Gokdogan &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26491200&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gokdogan@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;Hi.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;As you know, java.lang.StringXXXX classes favor insertion to the end in terms of performance. Adding to beginning or middle of these sequences causes most of the array to be shifted toward the end every time. Every ones in a while I end up changing my algorithms those are based on prefixing strings (ex. building a fully qualified name from class name to root direction). Sometimes these kind of changes could result in less readable code. And I should note that, there are lots of developers out there who does not know the internal details of these classes. &lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Anyway, this behavior was frustrating me for a while and I decided to suggest a gap buffer based modification to AbstractStringBuilder to solve this problem but never had time before to prototype it.&lt;/div&gt;

&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I tested the original StringBuilder against the prototype. Preliminary results for the duration of 100000 insertions of a short string: &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;                      Original | Prototype  &lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;           append =&amp;gt;     ~33   |   ~34&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt; insert beginning =&amp;gt;   ~32000  |   ~38&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;    insert random =&amp;gt;   ~16000  |  ~10000&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;A negligible overhead appears for appending (which could be avoided with shortcuts), but lots of performance gain achieved for other cases. &lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;If we handle insertion at zero as a special case in insert method or if we add an another method like &amp;#39;prepend&amp;#39;, the insertion at beginning will show exactly same performance characteristics of insertion at the end.   &lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;In my opinion, this is a well-worth modification to string building classes. If anybody agrees on sponsoring, I can tidy up code and contribute to OpenJDK.&lt;/font&gt;&lt;/div&gt;

&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family:arial, helvetica, sans-serif&quot;&gt;- Goktug&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;    &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;arial, helvetica, sans-serif&quot;&gt;PS: I&amp;#39;ve used  following code for rough testing:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;&amp;#39;courier new&amp;#39;, monospace&quot;&gt;&lt;div&gt;
&lt;div&gt;private static final int LOOP_COUNT = 100000;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;long nanoTime = System.nanoTime();&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;testStandardAppend();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;//testAppendBeginning();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;//testAppendRandom();&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;long span = System.nanoTime() - nanoTime;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;System.out.println(span / 1000000);&lt;/div&gt;&lt;div&gt;
}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;private static void testStandardAppend() {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;/div&gt;

&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;builder.append(&amp;quot;tryouts&amp;quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;private static void testAppendBeginning() {&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;builder.insert(0, &amp;quot;tryouts&amp;quot;);&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;private static void testAppendRandom() {&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;Random random = new Random();&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;StringBuilder builder = new StringBuilder(&amp;quot;initial&amp;quot;);&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;for (int i = 0; i &amp;lt; LOOP_COUNT; i++) {&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;builder.insert(random.nextInt(builder.length()), &amp;quot;tryouts&amp;quot;);&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/font&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26491200.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491091</id>
	<title>hg: jdk7/tl/langtools: 3 new changesets</title>
	<published>2009-11-23T22:33:47Z</published>
	<updated>2009-11-23T22:33:47Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 4c8c6159159c
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:36 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4c8c6159159c&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/4c8c6159159c&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 8fb9b4be3cb1
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;Changeset: 0398ae15b90a
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-17 10:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/0398ae15b90a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/0398ae15b90a&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;- src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java
&lt;br&gt;- src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java
&lt;br&gt;- src/share/classes/com/sun/tools/classfile/Module_attribute.java
&lt;br&gt;&lt;br&gt;Changeset: b1508b6affd8
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 19:58 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/b1508b6affd8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/langtools/rev/b1508b6affd8&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-langtools%3A-3-new-changesets-tp26491091p26491091.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491065</id>
	<title>hg: jdk7/tl/jdk: 5 new changesets</title>
	<published>2009-11-23T22:28:33Z</published>
	<updated>2009-11-23T22:28:33Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 7916c43cc007
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-04 11:19 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7916c43cc007&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/7916c43cc007&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;! make/java/redist/Makefile
&lt;br&gt;&lt;br&gt;Changeset: 8fb602395be0
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-08 14:49 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8fb602395be0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8fb602395be0&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 941b3fd6c22b
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/941b3fd6c22b&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/941b3fd6c22b&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 8fb602395be0
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;Changeset: c56b9022a4f3
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-17 10:25 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c56b9022a4f3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/c56b9022a4f3&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;- src/share/classes/com/sun/jmx/event/DaemonThreadFactory.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/EventBuffer.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/EventClientFactory.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/EventConnection.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/EventParams.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/LeaseManager.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/LeaseRenewer.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/ReceiverBuffer.java
&lt;br&gt;- src/share/classes/com/sun/jmx/event/RepeatedSingletonJob.java
&lt;br&gt;- src/share/classes/com/sun/jmx/interceptor/DispatchInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/interceptor/DomainDispatchInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/interceptor/MBeanServerInterceptorSupport.java
&lt;br&gt;- src/share/classes/com/sun/jmx/interceptor/NamespaceDispatchInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/interceptor/SingleMBeanForwarder.java
&lt;br&gt;- src/share/classes/com/sun/jmx/mbeanserver/MBeanInjector.java
&lt;br&gt;- src/share/classes/com/sun/jmx/mbeanserver/NotificationMBeanSupport.java
&lt;br&gt;- src/share/classes/com/sun/jmx/mbeanserver/NotifySupport.java
&lt;br&gt;- src/share/classes/com/sun/jmx/mbeanserver/PerThreadGroupPool.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/DomainInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/HandlerInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/NamespaceInterceptor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/ObjectNameRouter.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/RoutingConnectionProxy.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/RoutingMBeanServerConnection.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/RoutingProxy.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/RoutingServerProxy.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/package.html
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/DefaultRewritingProcessor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/IdentityProcessor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/JMXNamespaceContext.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/RewritingProcessor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/RoutingOnlyProcessor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/SerialRewritingProcessor.java
&lt;br&gt;- src/share/classes/com/sun/jmx/namespace/serial/package.html
&lt;br&gt;- src/share/classes/com/sun/jmx/remote/internal/ProxyInputStream.java
&lt;br&gt;- src/share/classes/com/sun/jmx/remote/util/EventClientConnection.java
&lt;br&gt;- src/share/classes/javax/management/ClientContext.java
&lt;br&gt;- src/share/classes/javax/management/Description.java
&lt;br&gt;- src/share/classes/javax/management/DescriptorFields.java
&lt;br&gt;- src/share/classes/javax/management/DynamicWrapperMBean.java
&lt;br&gt;- src/share/classes/javax/management/GenericMBeanException.java
&lt;br&gt;- src/share/classes/javax/management/Impact.java
&lt;br&gt;- src/share/classes/javax/management/MBean.java
&lt;br&gt;- src/share/classes/javax/management/ManagedAttribute.java
&lt;br&gt;- src/share/classes/javax/management/ManagedOperation.java
&lt;br&gt;- src/share/classes/javax/management/NotificationInfo.java
&lt;br&gt;- src/share/classes/javax/management/NotificationInfos.java
&lt;br&gt;- src/share/classes/javax/management/ObjectNameTemplate.java
&lt;br&gt;- src/share/classes/javax/management/QueryNotificationFilter.java
&lt;br&gt;- src/share/classes/javax/management/QueryParser.java
&lt;br&gt;- src/share/classes/javax/management/SendNotification.java
&lt;br&gt;- src/share/classes/javax/management/event/EventClient.java
&lt;br&gt;- src/share/classes/javax/management/event/EventClientDelegate.java
&lt;br&gt;- src/share/classes/javax/management/event/EventClientDelegateMBean.java
&lt;br&gt;- src/share/classes/javax/management/event/EventClientNotFoundException.java
&lt;br&gt;- src/share/classes/javax/management/event/EventConsumer.java
&lt;br&gt;- src/share/classes/javax/management/event/EventForwarder.java
&lt;br&gt;- src/share/classes/javax/management/event/EventReceiver.java
&lt;br&gt;- src/share/classes/javax/management/event/EventRelay.java
&lt;br&gt;- src/share/classes/javax/management/event/EventSubscriber.java
&lt;br&gt;- src/share/classes/javax/management/event/FetchingEventForwarder.java
&lt;br&gt;- src/share/classes/javax/management/event/FetchingEventRelay.java
&lt;br&gt;- src/share/classes/javax/management/event/ListenerInfo.java
&lt;br&gt;- src/share/classes/javax/management/event/NotificationManager.java
&lt;br&gt;- src/share/classes/javax/management/event/RMIPushEventForwarder.java
&lt;br&gt;- src/share/classes/javax/management/event/RMIPushEventRelay.java
&lt;br&gt;- src/share/classes/javax/management/event/RMIPushServer.java
&lt;br&gt;- src/share/classes/javax/management/event/package-info.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXDomain.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXNamespace.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXNamespaceMBean.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXNamespacePermission.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXNamespaceView.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXNamespaces.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXRemoteNamespace.java
&lt;br&gt;- src/share/classes/javax/management/namespace/JMXRemoteNamespaceMBean.java
&lt;br&gt;- src/share/classes/javax/management/namespace/MBeanServerConnectionWrapper.java
&lt;br&gt;- src/share/classes/javax/management/namespace/MBeanServerSupport.java
&lt;br&gt;- src/share/classes/javax/management/namespace/VirtualEventManager.java
&lt;br&gt;- src/share/classes/javax/management/namespace/package-info.java
&lt;br&gt;- src/share/classes/javax/management/openmbean/MXBeanMapping.java
&lt;br&gt;- src/share/classes/javax/management/openmbean/MXBeanMappingClass.java
&lt;br&gt;- src/share/classes/javax/management/openmbean/MXBeanMappingFactory.java
&lt;br&gt;- src/share/classes/javax/management/openmbean/MXBeanMappingFactoryClass.java
&lt;br&gt;- src/share/classes/javax/management/remote/IdentityMBeanServerForwarder.java
&lt;br&gt;- src/share/classes/sun/net/www/protocol/http/HttpLogFormatter.java
&lt;br&gt;- src/share/classes/sun/net/www/protocol/http/NegotiateCallbackHandler.java
&lt;br&gt;- src/share/classes/sun/net/www/protocol/http/NegotiatorImpl.java
&lt;br&gt;- src/share/classes/sun/security/ssl/KerberosPreMasterSecret.java
&lt;br&gt;- src/windows/classes/sun/net/www/protocol/http/NTLMAuthSequence.java
&lt;br&gt;- src/windows/classes/sun/net/www/protocol/http/NTLMAuthentication.java
&lt;br&gt;- src/windows/native/sun/net/www/protocol/http/NTLMAuthSequence.c
&lt;br&gt;- test/javax/management/Introspector/AnnotatedMBeanTest.java
&lt;br&gt;- test/javax/management/Introspector/AnnotatedNotificationInfoTest.java
&lt;br&gt;- test/javax/management/Introspector/ExceptionsDescriptorTest.java
&lt;br&gt;- test/javax/management/Introspector/MBeanDescriptionTest.java
&lt;br&gt;- test/javax/management/Introspector/ObjectNameTemplateTest.java
&lt;br&gt;- test/javax/management/Introspector/ParameterNameTest.java
&lt;br&gt;- test/javax/management/Introspector/ResourceInjectionTest.java
&lt;br&gt;- test/javax/management/MBeanServer/AttributeListMapTest.java
&lt;br&gt;- test/javax/management/MBeanServer/DynamicWrapperMBeanTest.java
&lt;br&gt;- test/javax/management/MBeanServer/InstanceNotFoundExceptionTest.java
&lt;br&gt;- test/javax/management/MBeanServerFactory/NamedMBeanServerTest.java
&lt;br&gt;- test/javax/management/ObjectName/ValueOfTest.java
&lt;br&gt;- test/javax/management/context/ContextForwarderTest.java
&lt;br&gt;- test/javax/management/context/ContextTest.java
&lt;br&gt;- test/javax/management/context/LocaleAwareBroadcasterTest.java
&lt;br&gt;- test/javax/management/context/LocaleTest.java
&lt;br&gt;- test/javax/management/context/LocalizableTest.java
&lt;br&gt;- test/javax/management/context/RemoteContextTest.java
&lt;br&gt;- test/javax/management/context/localizable/MBeanDescriptions.properties
&lt;br&gt;- test/javax/management/context/localizable/MBeanDescriptions_fr.java
&lt;br&gt;- test/javax/management/context/localizable/Whatsit.java
&lt;br&gt;- test/javax/management/context/localizable/WhatsitMBean.java
&lt;br&gt;- test/javax/management/descriptor/DescriptorConstructorTest.java
&lt;br&gt;- test/javax/management/eventService/AddRemoveListenerTest.java
&lt;br&gt;- test/javax/management/eventService/CustomForwarderTest.java
&lt;br&gt;- test/javax/management/eventService/EventClientExecutorTest.java
&lt;br&gt;- test/javax/management/eventService/EventClientThreadTest.java
&lt;br&gt;- test/javax/management/eventService/EventDelegateSecurityTest.java
&lt;br&gt;- test/javax/management/eventService/EventManagerTest.java
&lt;br&gt;- test/javax/management/eventService/FetchingTest.java
&lt;br&gt;- test/javax/management/eventService/LeaseManagerDeadlockTest.java
&lt;br&gt;- test/javax/management/eventService/LeaseTest.java
&lt;br&gt;- test/javax/management/eventService/ListenerTest.java
&lt;br&gt;- test/javax/management/eventService/MyFetchingEventForwarder.java
&lt;br&gt;- test/javax/management/eventService/NotSerializableNotifTest.java
&lt;br&gt;- test/javax/management/eventService/PublishTest.java
&lt;br&gt;- test/javax/management/eventService/ReconnectableConnectorTest.java
&lt;br&gt;- test/javax/management/eventService/SharingThreadTest.java
&lt;br&gt;- test/javax/management/eventService/SubUnsubTest.java
&lt;br&gt;- test/javax/management/eventService/SubscribeTest.java
&lt;br&gt;- test/javax/management/eventService/UsingEventService.java
&lt;br&gt;- test/javax/management/interop/MBeanExceptionInteropTest.java
&lt;br&gt;- test/javax/management/modelmbean/DefaultDescriptorFieldTest.java
&lt;br&gt;- test/javax/management/monitor/InstantiateMonitorNotificationTest.java
&lt;br&gt;- test/javax/management/mxbean/CustomTypeTest.java
&lt;br&gt;- test/javax/management/mxbean/JMXServiceURLTest.java
&lt;br&gt;- test/javax/management/mxbean/customtypes/CustomLongMXBean.java
&lt;br&gt;- test/javax/management/mxbean/customtypes/CustomMXBean.java
&lt;br&gt;- test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java
&lt;br&gt;- test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java
&lt;br&gt;- test/javax/management/mxbean/customtypes/package-info.java
&lt;br&gt;- test/javax/management/namespace/DomainCreationTest.java
&lt;br&gt;- test/javax/management/namespace/EventWithNamespaceControlTest.java
&lt;br&gt;- test/javax/management/namespace/EventWithNamespaceTest.java
&lt;br&gt;- test/javax/management/namespace/ExportNamespaceTest.java
&lt;br&gt;- test/javax/management/namespace/JMXDomainTest.java
&lt;br&gt;- test/javax/management/namespace/JMXNamespaceSecurityTest.java
&lt;br&gt;- test/javax/management/namespace/JMXNamespaceTest.java
&lt;br&gt;- test/javax/management/namespace/JMXNamespaceViewTest.java
&lt;br&gt;- test/javax/management/namespace/JMXNamespacesTest.java
&lt;br&gt;- test/javax/management/namespace/JMXRemoteNamespaceTest.java
&lt;br&gt;- test/javax/management/namespace/JMXRemoteTargetNamespace.java
&lt;br&gt;- test/javax/management/namespace/LazyDomainTest.java
&lt;br&gt;- test/javax/management/namespace/LeadingSeparatorsTest.java
&lt;br&gt;- test/javax/management/namespace/MXBeanRefTest.java
&lt;br&gt;- test/javax/management/namespace/NamespaceController.java
&lt;br&gt;- test/javax/management/namespace/NamespaceControllerMBean.java
&lt;br&gt;- test/javax/management/namespace/NamespaceCreationTest.java
&lt;br&gt;- test/javax/management/namespace/NamespaceNotificationsTest.java
&lt;br&gt;- test/javax/management/namespace/NullDomainObjectNameTest.java
&lt;br&gt;- test/javax/management/namespace/NullObjectNameTest.java
&lt;br&gt;- test/javax/management/namespace/QueryNamesTest.java
&lt;br&gt;- test/javax/management/namespace/RemoveNotificationListenerTest.java
&lt;br&gt;- test/javax/management/namespace/RoutingServerProxyTest.java
&lt;br&gt;- test/javax/management/namespace/SerialParamProcessorTest.java
&lt;br&gt;- test/javax/management/namespace/SourceNamespaceTest.java
&lt;br&gt;- test/javax/management/namespace/VirtualMBeanNotifTest.java
&lt;br&gt;- test/javax/management/namespace/VirtualMBeanTest.java
&lt;br&gt;- test/javax/management/namespace/VirtualNamespaceQueryTest.java
&lt;br&gt;- test/javax/management/namespace/VirtualPropsTest.java
&lt;br&gt;- test/javax/management/namespace/Wombat.java
&lt;br&gt;- test/javax/management/namespace/WombatMBean.java
&lt;br&gt;- test/javax/management/namespace/namespace.policy
&lt;br&gt;- test/javax/management/notification/SupportClearTest.java
&lt;br&gt;- test/javax/management/openmbean/CompositeDataToMapTest.java
&lt;br&gt;- test/javax/management/openmbean/GenericMBeanExceptionTest.java
&lt;br&gt;- test/javax/management/query/QueryDottedAttrTest.java
&lt;br&gt;- test/javax/management/query/QueryNotifFilterTest.java
&lt;br&gt;- test/javax/management/query/QueryParseTest.java
&lt;br&gt;- test/javax/management/remote/mandatory/connectorServer/CloseConnectionTest.java
&lt;br&gt;- test/javax/management/remote/mandatory/connectorServer/ForwarderChainTest.java
&lt;br&gt;- test/javax/management/remote/mandatory/connectorServer/StandardForwardersTest.java
&lt;br&gt;- test/javax/management/remote/mandatory/version/JMXSpecVersionTest.java
&lt;br&gt;- test/javax/management/standardmbean/FindMethodTest.java
&lt;br&gt;- test/javax/management/standardmbean/RegistrationTest.java
&lt;br&gt;&lt;br&gt;Changeset: ea9411ec1458
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 19:57 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ea9411ec1458&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/ea9411ec1458&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;- test/sun/tools/native2ascii/test2
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-5-new-changesets-tp26491065p26491065.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491052</id>
	<title>hg: jdk7/tl/jaxws: 2 new changesets</title>
	<published>2009-11-23T22:27:54Z</published>
	<updated>2009-11-23T22:27:54Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 701ccbf55ae5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/701ccbf55ae5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/701ccbf55ae5&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 765d2077d1e6
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;Changeset: 5b4968c11047
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-17 10:23 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/5b4968c11047&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jaxws/rev/5b4968c11047&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jaxws%3A-2-new-changesets-tp26491052p26491052.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491049</id>
	<title>hg: jdk7/tl/jaxp: 2 new changesets</title>
	<published>2009-11-23T22:27:48Z</published>
	<updated>2009-11-23T22:27:48Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 86cc67d46db5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/86cc67d46db5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/86cc67d46db5&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 233a4871d336
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;Changeset: bfadab8c7b1b
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-17 10:23 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/bfadab8c7b1b&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jaxp/rev/bfadab8c7b1b&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jaxp%3A-2-new-changesets-tp26491049p26491049.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491033</id>
	<title>hg: jdk7/tl/hotspot: 20 new changesets</title>
	<published>2009-11-23T22:25:45Z</published>
	<updated>2009-11-23T22:25:45Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 08780c8a9f04
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;kamg
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-20 16:34 -0400
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/08780c8a9f04&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/08780c8a9f04&lt;/a&gt;&lt;br&gt;&lt;br&gt;6893483: DTrace probe return values for a couple JNI methods are wrong
&lt;br&gt;Summary: Fix the shadowing and incorrect macro usages
&lt;br&gt;Reviewed-by: coleenp
&lt;br&gt;&lt;br&gt;! src/share/vm/prims/jni.cpp
&lt;br&gt;&lt;br&gt;Changeset: a3b9e96881fe
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;xlu
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-23 18:44 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a3b9e96881fe&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a3b9e96881fe&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: d912f17c1ae4
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;xlu
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-28 10:37 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/d912f17c1ae4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/d912f17c1ae4&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 0a46d0c5dccb
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;never
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-15 11:47 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/0a46d0c5dccb&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/0a46d0c5dccb&lt;/a&gt;&lt;br&gt;&lt;br&gt;6891750: deopt blob kills values in O5
&lt;br&gt;Reviewed-by: kvn, twisti
&lt;br&gt;&lt;br&gt;! src/cpu/sparc/vm/sharedRuntime_sparc.cpp
&lt;br&gt;+ test/compiler/6891750/Test6891750.java
&lt;br&gt;&lt;br&gt;Changeset: 71fdc5052e49
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;cfang
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-16 16:14 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/71fdc5052e49&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/71fdc5052e49&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 987e948ebbc8
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;jrose
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-17 19:51 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/987e948ebbc8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/987e948ebbc8&lt;/a&gt;&lt;br&gt;&lt;br&gt;6815692: method handle code needs some cleanup (post-6655638)
&lt;br&gt;Summary: correctly raise exceptions, support safe bitwise &amp;quot;raw&amp;quot; conversions, fix bugs revealed by VerifyMethodHandles, remove dead code, improve debugging support
&lt;br&gt;Reviewed-by: never, twisti
&lt;br&gt;&lt;br&gt;! src/cpu/x86/vm/methodHandles_x86.cpp
&lt;br&gt;! src/cpu/x86/vm/templateInterpreter_x86_32.cpp
&lt;br&gt;! src/share/vm/classfile/javaClasses.hpp
&lt;br&gt;! src/share/vm/classfile/systemDictionary.cpp
&lt;br&gt;! src/share/vm/oops/instanceKlass.cpp
&lt;br&gt;! src/share/vm/oops/instanceKlass.hpp
&lt;br&gt;! src/share/vm/oops/klass.cpp
&lt;br&gt;! src/share/vm/oops/klass.hpp
&lt;br&gt;! src/share/vm/oops/markOop.cpp
&lt;br&gt;! src/share/vm/oops/methodOop.cpp
&lt;br&gt;! src/share/vm/prims/methodHandles.cpp
&lt;br&gt;! src/share/vm/prims/methodHandles.hpp
&lt;br&gt;&lt;br&gt;Changeset: 873ec3787992
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;kvn
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-21 09:15 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/873ec3787992&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/873ec3787992&lt;/a&gt;&lt;br&gt;&lt;br&gt;6892186: SA does not dump debug info for scalar replaced objects
&lt;br&gt;Summary: Implement scalar replaced objects debug info dump in SA.
&lt;br&gt;Reviewed-by: twisti
&lt;br&gt;&lt;br&gt;! agent/make/saenv.sh
&lt;br&gt;! agent/make/saenv64.sh
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/code/PCDesc.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java
&lt;br&gt;! agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js
&lt;br&gt;! src/share/vm/opto/callnode.cpp
&lt;br&gt;! src/share/vm/runtime/vmStructs.cpp
&lt;br&gt;&lt;br&gt;Changeset: f875b4f472f7
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;twisti
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-27 03:00 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f875b4f472f7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/f875b4f472f7&lt;/a&gt;&lt;br&gt;&lt;br&gt;6893554: SPECjvm2008 mpegaudio fails with SecurityException
&lt;br&gt;Summary: The problem occurs with negative numbers, as the 32-bit input values are sign extended into the 64-bit registers.
&lt;br&gt;Reviewed-by: kvn
&lt;br&gt;&lt;br&gt;! src/cpu/sparc/vm/sparc.ad
&lt;br&gt;&lt;br&gt;Changeset: 4926bf2d292f
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;cfang
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-29 08:49 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/4926bf2d292f&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/4926bf2d292f&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: fc06cd9b42c7
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tonyp
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-23 14:34 -0400
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fc06cd9b42c7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fc06cd9b42c7&lt;/a&gt;&lt;br&gt;&lt;br&gt;6886024: G1: assert(recent_avg_pause_time_ratio() &amp;lt; 1.00,&amp;quot;All GC?&amp;quot;)
&lt;br&gt;Summary: the assert is incorrect and can fire incorrectly due to floating point inaccuracy.
&lt;br&gt;Reviewed-by: apetrusenko, ysr, jcoomes
&lt;br&gt;&lt;br&gt;! src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp
&lt;br&gt;&lt;br&gt;Changeset: 6270f80a7331
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tonyp
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-09-30 14:50 -0400
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/6270f80a7331&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/6270f80a7331&lt;/a&gt;&lt;br&gt;&lt;br&gt;6890137: G1: revamp reachable object dump
&lt;br&gt;Summary: Revamp the reachable object dump debugging facility.
&lt;br&gt;Reviewed-by: jmasa, apetrusenko
&lt;br&gt;&lt;br&gt;! src/share/vm/gc_implementation/g1/concurrentMark.cpp
&lt;br&gt;! src/share/vm/gc_implementation/g1/concurrentMark.hpp
&lt;br&gt;! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
&lt;br&gt;! src/share/vm/gc_implementation/g1/g1_globals.hpp
&lt;br&gt;&lt;br&gt;Changeset: fa2f65ebeb08
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;apetrusenko
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-27 02:42 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fa2f65ebeb08&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/fa2f65ebeb08&lt;/a&gt;&lt;br&gt;&lt;br&gt;6870843: G1: G1 GC memory leak
&lt;br&gt;Summary: The fix addresses two memory leaks in G1 code: (1) _evac_failure_scan_stack - a resource object allocated on the C heap was not freed; (2) RSHashTable were linked into deleted list which was only cleared at full GC.
&lt;br&gt;Reviewed-by: tonyp, iveresov
&lt;br&gt;&lt;br&gt;! src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
&lt;br&gt;! src/share/vm/gc_implementation/g1/sparsePRT.cpp
&lt;br&gt;! src/share/vm/gc_implementation/g1/sparsePRT.hpp
&lt;br&gt;&lt;br&gt;Changeset: 72a6752ac432
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ysr
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-28 11:16 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/72a6752ac432&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/72a6752ac432&lt;/a&gt;&lt;br&gt;&lt;br&gt;6818264: Heap dumper unexpectedly adds .hprof suffix
&lt;br&gt;Summary: Restore old behaviour wrt HeapDumpPath; first dump goes to &amp;lt;file&amp;gt;, &amp;lt;n&amp;gt;th dump goes to &amp;lt;file&amp;gt;.&amp;lt;n-1&amp;gt;, with default value of &amp;lt;file&amp;gt; the same as before.
&lt;br&gt;Reviewed-by: alanb, jcoomes, tonyp
&lt;br&gt;&lt;br&gt;! src/share/vm/services/heapDumper.cpp
&lt;br&gt;&lt;br&gt;Changeset: beb8f45ee9f0
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;johnc
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-29 09:42 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/beb8f45ee9f0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/beb8f45ee9f0&lt;/a&gt;&lt;br&gt;&lt;br&gt;6889740: G1: OpenDS fails with &amp;quot;unhandled exception in compiled code&amp;quot;
&lt;br&gt;Summary: Incorrect code was being generated for the store operation in the null case of the aastore bytecode template. The bad code was generated by the store_heap_oop routine which takes a Register as its second argument. Passing NULL_WORD (0) as the second argument causes the value to be converted to Register(0), which is rax. Thus the generated store was &amp;quot;mov (dst), $rax&amp;quot; instead of &amp;quot;mov (dst), $0x0&amp;quot;. Changed calls to store_heap_oop that pass NULL_WORD as the second argument to a new routine store_heap_oop_null.
&lt;br&gt;Reviewed-by: kvn, twisti
&lt;br&gt;&lt;br&gt;! src/cpu/x86/vm/assembler_x86.cpp
&lt;br&gt;! src/cpu/x86/vm/assembler_x86.hpp
&lt;br&gt;! src/cpu/x86/vm/templateTable_x86_64.cpp
&lt;br&gt;&lt;br&gt;Changeset: 29adffcb6a61
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tonyp
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-10-30 13:31 -0400
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/29adffcb6a61&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/29adffcb6a61&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: a6280c71758e
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;trims
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-05 15:44 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a6280c71758e&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/a6280c71758e&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 50c16f09ddf5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;trims
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-05 15:58 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/50c16f09ddf5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/50c16f09ddf5&lt;/a&gt;&lt;br&gt;&lt;br&gt;6898707: Bump the HS17 build number to 05
&lt;br&gt;Summary: Update the HS17 build number to 05
&lt;br&gt;Reviewed-by: jcoomes
&lt;br&gt;&lt;br&gt;! make/hotspot_version
&lt;br&gt;&lt;br&gt;Changeset: 26f1542097f1
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ysr
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-03 16:43 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/26f1542097f1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/26f1542097f1&lt;/a&gt;&lt;br&gt;&lt;br&gt;6801625: CDS: HeapDump tests crash with internal error in compactingPermGenGen.cpp
&lt;br&gt;Summary: Allow iteration over the shared spaces when using CDS, repealing previous proscription. Deferred further required CDS-related cleanups of perm gen to CR 6897789.
&lt;br&gt;Reviewed-by: phh, jmasa
&lt;br&gt;&lt;br&gt;! src/share/vm/memory/compactingPermGenGen.cpp
&lt;br&gt;! src/share/vm/memory/compactingPermGenGen.hpp
&lt;br&gt;! src/share/vm/memory/generation.cpp
&lt;br&gt;&lt;br&gt;Changeset: 9174bb32e934
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;trims
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-06 00:41 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/9174bb32e934&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/9174bb32e934&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 455105fc81d9
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/455105fc81d9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/hotspot/rev/455105fc81d9&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 9174bb32e934
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-hotspot%3A-20-new-changesets-tp26491033p26491033.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491023</id>
	<title>hg: jdk7/tl/corba: 3 new changesets</title>
	<published>2009-11-23T22:24:22Z</published>
	<updated>2009-11-23T22:24:22Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 6995f81e3b53
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-04 11:19 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/corba/rev/6995f81e3b53&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/corba/rev/6995f81e3b53&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 937144222e22
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-08 14:49 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/corba/rev/937144222e22&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/corba/rev/937144222e22&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 086bf925ee95
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/corba/rev/086bf925ee95&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/corba/rev/086bf925ee95&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset 937144222e22
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-corba%3A-3-new-changesets-tp26491023p26491023.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26491015</id>
	<title>hg: jdk7/tl: 4 new changesets</title>
	<published>2009-11-23T22:24:17Z</published>
	<updated>2009-11-23T22:24:17Z</updated>
	<author>
		<name>tim.bell</name>
	</author>
	<content type="html">Changeset: 0619361ff7c5
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-04 11:19 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/rev/0619361ff7c5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/rev/0619361ff7c5&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: c8b63075403d
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-08 14:46 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/rev/c8b63075403d&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/rev/c8b63075403d&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 1f17ca8353ba
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;katleman
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-12 15:35 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/rev/1f17ca8353ba&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/rev/1f17ca8353ba&lt;/a&gt;&lt;br&gt;&lt;br&gt;Added tag jdk7-b76 for changeset c8b63075403d
&lt;br&gt;&lt;br&gt;! .hgtags
&lt;br&gt;&lt;br&gt;Changeset: 08f13b9af1b2
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;tbell
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 19:55 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/rev/08f13b9af1b2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/rev/08f13b9af1b2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl%3A-4-new-changesets-tp26491015p26491015.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26489217</id>
	<title>hg: jdk7/tl/jdk: 3 new changesets</title>
	<published>2009-11-23T17:37:05Z</published>
	<updated>2009-11-23T17:37:05Z</updated>
	<author>
		<name>mandy.chung</name>
	</author>
	<content type="html">Changeset: 2fec95bd2192
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mchung
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 08:21 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/2fec95bd2192&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/2fec95bd2192&lt;/a&gt;&lt;br&gt;&lt;br&gt;6903638: Remove dependency on AuthPermission from SecurityConstants
&lt;br&gt;Summary: Move two static fields from SecurityConstants to javax.security.auth.Subject
&lt;br&gt;Reviewed-by: mullan
&lt;br&gt;&lt;br&gt;! src/share/classes/javax/security/auth/Subject.java
&lt;br&gt;! src/share/classes/sun/security/util/SecurityConstants.java
&lt;br&gt;&lt;br&gt;Changeset: 542a1f9d08be
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mchung
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 10:46 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/542a1f9d08be&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/542a1f9d08be&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;Changeset: 826cc6f77c4a
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mchung
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 14:59 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/826cc6f77c4a&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/826cc6f77c4a&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-3-new-changesets-tp26489217p26489217.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26487618</id>
	<title>hg: jdk7/tl/jdk: 2 new changesets</title>
	<published>2009-11-23T14:55:23Z</published>
	<updated>2009-11-23T14:55:23Z</updated>
	<author>
		<name>Kelly O'Hair</name>
	</author>
	<content type="html">Changeset: 03f841635453
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 09:51 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/03f841635453&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/03f841635453&lt;/a&gt;&lt;br&gt;&lt;br&gt;6902666: Include closed tests in the test/Makefile jdk_* targets
&lt;br&gt;6902667: Fix JT_HOME not working from env in jdk/test/Makefile
&lt;br&gt;Reviewed-by: mullan, dcubed
&lt;br&gt;&lt;br&gt;! test/Makefile
&lt;br&gt;! test/ProblemList.txt
&lt;br&gt;&lt;br&gt;Changeset: 8d555c08e267
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;ohair
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 13:00 -0800
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8d555c08e267&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/8d555c08e267&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-2-new-changesets-tp26487618p26487618.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26484358</id>
	<title>hg: jdk7/tl/jdk: 6888171: JMX Monitor API should not require JavaBeans to be present</title>
	<published>2009-11-23T11:29:15Z</published>
	<updated>2009-11-23T11:29:15Z</updated>
	<author>
		<name>Alan Bateman</name>
	</author>
	<content type="html">Changeset: 1ced99075109
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;alanb
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 19:26 +0000
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1ced99075109&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/1ced99075109&lt;/a&gt;&lt;br&gt;&lt;br&gt;6888171: JMX Monitor API should not require JavaBeans to be present
&lt;br&gt;Reviewed-by: emcmanus
&lt;br&gt;&lt;br&gt;! src/share/classes/com/sun/jmx/mbeanserver/Introspector.java
&lt;br&gt;! src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6888171%3A-JMX-Monitor-API-should-not-require-JavaBeans-to-be-present-tp26484358p26484358.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26483912</id>
	<title>hg: jdk7/tl/jdk: 2 new changesets</title>
	<published>2009-11-23T10:58:09Z</published>
	<updated>2009-11-23T10:58:09Z</updated>
	<author>
		<name>sean.mullan</name>
	</author>
	<content type="html">Changeset: 5d2e63dad298
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mullan
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 12:36 -0500
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5d2e63dad298&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/5d2e63dad298&lt;/a&gt;&lt;br&gt;&lt;br&gt;6899503: Security code issue using Verisign root certificate
&lt;br&gt;Summary: Add support for reordering out-of-order certificate chains
&lt;br&gt;Reviewed-by: vinnie, xuelei
&lt;br&gt;&lt;br&gt;! src/share/classes/sun/security/validator/PKIXValidator.java
&lt;br&gt;&lt;br&gt;Changeset: 38960b705c30
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;mullan
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 13:57 -0500
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/38960b705c30&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/38960b705c30&lt;/a&gt;&lt;br&gt;&lt;br&gt;Merge
&lt;br&gt;&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-2-new-changesets-tp26483912p26483912.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26482608</id>
	<title>hg: jdk7/tl/jdk: 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed</title>
	<published>2009-11-23T09:33:17Z</published>
	<updated>2009-11-23T09:33:17Z</updated>
	<author>
		<name>Daniel D. Daugherty</name>
	</author>
	<content type="html">Changeset: 92198fb7e908
&lt;br&gt;Author: &amp;nbsp; &amp;nbsp;dcubed
&lt;br&gt;Date: &amp;nbsp; &amp;nbsp; &amp;nbsp;2009-11-23 10:29 -0700
&lt;br&gt;URL: &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/92198fb7e908&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://hg.openjdk.java.net/jdk7/tl/jdk/rev/92198fb7e908&lt;/a&gt;&lt;br&gt;&lt;br&gt;6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
&lt;br&gt;Summary: Merge Jim's ShellScaffold.sh fixes with Tim's ShellScaffold.sh fixes.
&lt;br&gt;Reviewed-by: tbell
&lt;br&gt;&lt;br&gt;! test/com/sun/jdi/ShellScaffold.sh
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/hg%3A-jdk7-tl-jdk%3A-6903102%3A-3-3-fixes-in-nightly-testing-version-of-ShellScaffold.sh-need-to-be-committed-tp26482608p26482608.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26477989</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-23T05:25:06Z</published>
	<updated>2009-11-23T05:25:06Z</updated>
	<author>
		<name>Osvaldo Doederlein</name>
	</author>
	<content type="html">Hi Jesús,&lt;br&gt;&lt;br&gt;I&amp;#39;m sorry for the noise, I just forgot to consider the issues of a StringBuilder shared between threads (I&amp;#39;m well aware of the JMM etc). &lt;font face=&quot;&quot;&gt;A partial &amp;quot;fix&amp;quot;&lt;/font&gt; of sharing only StringBuffer seems useless because we&amp;#39;re many years past JDK1.5 and most code uses StringBuilder now; the tradeoff of synchronization versus copying is pretty bad, as you confirmed again.&lt;br&gt;
&lt;br&gt;I agree that getting some help from HotSpot seems to be the only solution. HotSpot is certainly able to detect the easiest case of confinement through EA, and for StringBuilder this should detect virtually all uses. HotSpot would also need to compile toString() as a intrinsic, inlining alternative non-copying code, when it detected that the buffer object is confined.&lt;br&gt;
&lt;br&gt;I would like to see a more general solution; we may have many other cases of potentially great optimizations that are not done just because they&amp;#39;re not thread-safe, but could be done for thread-confined objects. A raw suggestion:&lt;br&gt;
&lt;br&gt;public String toString () {&lt;br&gt;  return Unsafe.isConfined(this) ? optimizedToString() : standardToString();&lt;br&gt;}&lt;br&gt;&lt;br&gt;In this case HotSpot only has to provide one extra helper, isConfined(), that returns true iff the argument can be proven by the compiler to be confined to a single thread. This doesn&amp;#39;t look difficult because it&amp;#39;s not a new operation, just an accessor to information that the optimizer already has. The result is a compile-time constant (per compilation site) so the code generated for toString() has no extra calls or branches, it&amp;#39;s just a straight call (or inlining) of either optimizedToString() or standardToString(). (For the interpreter, C1, or C2 with EA disabled, isConfined() would just always return false.) Now the big advantage of this approach is that the library team doesn&amp;#39;t need to poke the compiler guys to add extra intrinsic compilation for every method that may benefit from optimizations which are only safe for confined objects.&lt;br&gt;
&lt;br&gt;A+&lt;br&gt;Osvaldo&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;2009/11/22 Jesús Viñuales &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26477989&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;serverperformance@...&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;&quot;&gt;
&lt;div class=&quot;im&quot;&gt;Osvaldo Doederlein wrote:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Em 22/11/2009 05:55, Thomas Hawtin escreveu:&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&lt;/div&gt;&lt;div class=&quot;im&quot;&gt;&amp;gt;&amp;gt; There is a security issue there. When multiple threads are involved,&lt;br&gt;
&amp;gt;&amp;gt; it is possible (though not necessily easy) to create a mutable String&lt;br&gt;
&amp;gt;&amp;gt; if the backing char[] is shared.&lt;br&gt;
&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; Tom Hawtin&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; That&amp;#39;s true. But there&amp;#39;s apparently a simple solution&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt;     public String toStringShared() {&lt;br&gt;
&amp;gt;         // createShared() is a package-protected helper/ctor&lt;br&gt;
&amp;gt;         String ret = String.createShared(value, 0, count);&lt;br&gt;
&amp;gt;         // Reset value, so evil user can&amp;#39;t abuse the buffer to change&lt;br&gt;
&amp;gt; the String.&lt;br&gt;
&amp;gt;         value = EMPTY;&lt;br&gt;
&amp;gt;         count = 0;&lt;br&gt;
&amp;gt;         return ret;&lt;br&gt;
&amp;gt;     }&lt;br&gt;
&amp;gt;     private static final char[] EMPTY = new char[0];&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; This solution should be safe, without need of escape/alias analysis,&lt;br&gt;
&amp;gt; because StringBuilder and StringBuffer don&amp;#39;t have any methods that&lt;br&gt;
&amp;gt; return a new mutable object that shares the same char[]. The only APIs&lt;br&gt;
&amp;gt; that aliases the buffer is subSequence(), but this returns a&lt;br&gt;
&amp;gt; CharSequence which is a read-only object.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; A+&lt;br&gt;
&amp;gt; Osvaldo&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;I don&amp;#39;t agree. That solution isn&amp;#39;t safe because the involved methods aren&amp;#39;t&lt;br&gt;
synchronized (in StringBuilder), nor you have any guarantee within the Java&lt;br&gt;
memory model about the visibility to other threads of your changes in the&lt;br&gt;
value and count variables ... except if they are volatile. And if you have&lt;br&gt;
to establish the values for more than one variable (value and count) in an&lt;br&gt;
atomic fashion, the volatile approach doesn&amp;#39;t help you. And also may cause&lt;br&gt;
the String to appear to mutate if one thread calls toString() while another&lt;br&gt;
is between the read of shared and the insert/append/delete operation, or&lt;br&gt;
even worst, executing the operation itself).&lt;br&gt;
&lt;br&gt;
I&amp;#39;m pretty sure that the only solution is a copy-on-write approach based in&lt;br&gt;
a volatile boolean flag, and not a never-copy one as Andrew said (and I&lt;br&gt;
remember that GNU Classpath implementation even addressed the &amp;quot;unused space&lt;br&gt;
consumption problem&amp;quot; evaluating in the toString method how much unused space&lt;br&gt;
had the buffer, and if the underlining char[] is too big, make a copy&lt;br&gt;
instead of sharing it).&lt;br&gt;
&lt;br&gt;
Anyway. Read carefully the evaluation section of&lt;br&gt;
&lt;a href=&quot;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&lt;/a&gt;. Reintroducing&lt;br&gt;
the copy-on-write approach was tested by Sun in 2006 approach, and &amp;quot;It was&lt;br&gt;
discovered that the reintroduction of the sharing code caused a reproducible&lt;br&gt;
regression on the order of 4% in SPECjbb2005 scores&amp;quot;, surely for impacting&lt;br&gt;
the GC or whatever. If you see the prototype description, it is perfect:&lt;br&gt;
using a volatile flag, testing whether to share or to copy the char[] in the&lt;br&gt;
toString method, etc.&lt;br&gt;
&lt;br&gt;
I tried different approaches last year, and even posted one of them in this&lt;br&gt;
forum (as you can see in archives) but with no luck.&lt;br&gt;
&lt;br&gt;
My guess is that this kind of COW optimization is work for the Hotspot via&lt;br&gt;
Escape analysis... or in the end of the chain, work for the MMU of the CPU.&lt;br&gt;
&lt;br&gt;
Regards,&lt;br&gt;
Jesus&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;
</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26477989.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26470017</id>
	<title>RE: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-22T14:01:45Z</published>
	<updated>2009-11-22T14:01:45Z</updated>
	<author>
		<name>Jesús Viñuales</name>
	</author>
	<content type="html">Osvaldo Doederlein wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Em 22/11/2009 05:55, Thomas Hawtin escreveu:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; There is a security issue there. When multiple threads are involved, 
&lt;br&gt;&amp;gt;&amp;gt; it is possible (though not necessily easy) to create a mutable String 
&lt;br&gt;&amp;gt;&amp;gt; if the backing char[] is shared.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Tom Hawtin
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; That's true. But there's apparently a simple solution
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String toStringShared() {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // createShared() is a package-protected helper/ctor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String ret = String.createShared(value, 0, count);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Reset value, so evil user can't abuse the buffer to change 
&lt;br&gt;&amp;gt; the String.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value = EMPTY;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ret;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static final char[] EMPTY = new char[0];
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This solution should be safe, without need of escape/alias analysis, 
&lt;br&gt;&amp;gt; because StringBuilder and StringBuffer don't have any methods that 
&lt;br&gt;&amp;gt; return a new mutable object that shares the same char[]. The only APIs 
&lt;br&gt;&amp;gt; that aliases the buffer is subSequence(), but this returns a 
&lt;br&gt;&amp;gt; CharSequence which is a read-only object.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; A+
&lt;br&gt;&amp;gt; Osvaldo
&lt;/div&gt;&lt;br&gt;I don't agree. That solution isn't safe because the involved methods aren't
&lt;br&gt;synchronized (in StringBuilder), nor you have any guarantee within the Java
&lt;br&gt;memory model about the visibility to other threads of your changes in the
&lt;br&gt;value and count variables ... except if they are volatile. And if you have
&lt;br&gt;to establish the values for more than one variable (value and count) in an
&lt;br&gt;atomic fashion, the volatile approach doesn't help you. And also may cause
&lt;br&gt;the String to appear to mutate if one thread calls toString() while another
&lt;br&gt;is between the read of shared and the insert/append/delete operation, or
&lt;br&gt;even worst, executing the operation itself).
&lt;br&gt;&lt;br&gt;I'm pretty sure that the only solution is a copy-on-write approach based in
&lt;br&gt;a volatile boolean flag, and not a never-copy one as Andrew said (and I
&lt;br&gt;remember that GNU Classpath implementation even addressed the &amp;quot;unused space
&lt;br&gt;consumption problem&amp;quot; evaluating in the toString method how much unused space
&lt;br&gt;had the buffer, and if the underlining char[] is too big, make a copy
&lt;br&gt;instead of sharing it).
&lt;br&gt;&lt;br&gt;Anyway. Read carefully the evaluation section of
&lt;br&gt;&lt;a href=&quot;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&lt;/a&gt;. Reintroducing
&lt;br&gt;the copy-on-write approach was tested by Sun in 2006 approach, and &amp;quot;It was
&lt;br&gt;discovered that the reintroduction of the sharing code caused a reproducible
&lt;br&gt;regression on the order of 4% in SPECjbb2005 scores&amp;quot;, surely for impacting
&lt;br&gt;the GC or whatever. If you see the prototype description, it is perfect:
&lt;br&gt;using a volatile flag, testing whether to share or to copy the char[] in the
&lt;br&gt;toString method, etc.
&lt;br&gt;&lt;br&gt;I tried different approaches last year, and even posted one of them in this
&lt;br&gt;forum (as you can see in archives) but with no luck.
&lt;br&gt;&lt;br&gt;My guess is that this kind of COW optimization is work for the Hotspot via
&lt;br&gt;Escape analysis... or in the end of the chain, work for the MMU of the CPU.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Jesus
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26470017.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26469878</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-22T13:50:02Z</published>
	<updated>2009-11-22T13:50:02Z</updated>
	<author>
		<name>Thomas Hawtin-2</name>
	</author>
	<content type="html">Osvaldo Pinali Doederlein wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; public String toStringShared() {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // createShared() is a package-protected helper/ctor
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String ret = String.createShared(value, 0, count);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Reset value, so evil user can't abuse the buffer to change 
&lt;br&gt;&amp;gt; the String.
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value = EMPTY;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count = 0;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ret;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; private static final char[] EMPTY = new char[0];
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This solution should be safe, without need of escape/alias analysis, 
&lt;br&gt;&amp;gt; because StringBuilder and StringBuffer don't have any methods that 
&lt;br&gt;&amp;gt; return a new mutable object that shares the same char[]. The only APIs 
&lt;br&gt;&amp;gt; that aliases the buffer is subSequence(), but this returns a 
&lt;br&gt;&amp;gt; CharSequence which is a read-only object.
&lt;/div&gt;&lt;br&gt;You will need to look at the Java Memory Model (JMM) (which is not 
&lt;br&gt;sequentially consistent (SC)) to understand why this sort of thing can 
&lt;br&gt;never work without adding synchronized/volatile to String. You can 
&lt;br&gt;synchronize StringBuffer as much as you like, but it still wont work.
&lt;br&gt;&lt;br&gt;Tom Hawtin
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26469878.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26468560</id>
	<title>Re: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-22T11:23:59Z</published>
	<updated>2009-11-22T11:23:59Z</updated>
	<author>
		<name>Osvaldo Doederlein</name>
	</author>
	<content type="html">Em 22/11/2009 05:55, Thomas Hawtin escreveu:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Osvaldo Doederlein wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Looks like good stuff. And it remembers me from another old issue: 
&lt;br&gt;&amp;gt;&amp;gt; patterns of code that demand data copying that could often be 
&lt;br&gt;&amp;gt;&amp;gt; avoided. Every StringBuffer/StringBuilder is ultimately consumed by a 
&lt;br&gt;&amp;gt;&amp;gt; toString() invocation to produce the result String, and in 99% of all 
&lt;br&gt;&amp;gt;&amp;gt; uses, only one such String is produced and the buffer object is 
&lt;br&gt;&amp;gt;&amp;gt; immediately discarded. So, toString() could pass the internal char[] 
&lt;br&gt;&amp;gt;&amp;gt; to the String constructor, instead of forcing its copy. The API is 
&lt;br&gt;&amp;gt;&amp;gt; coded conservatively to always do that copy, because in 1% of cases 
&lt;br&gt;&amp;gt;&amp;gt; people 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There is a security issue there. When multiple threads are involved, 
&lt;br&gt;&amp;gt; it is possible (though not necessily easy) to create a mutable String 
&lt;br&gt;&amp;gt; if the backing char[] is shared.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Tom Hawtin
&lt;/div&gt;&lt;br&gt;That's true. But there's apparently a simple solution
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public String toStringShared() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// createShared() is a package-protected helper/ctor
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String ret = String.createShared(value, 0, count);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Reset value, so evil user can't abuse the buffer to change 
&lt;br&gt;the String.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value = EMPTY;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;count = 0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return ret;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;private static final char[] EMPTY = new char[0];
&lt;br&gt;&lt;br&gt;This solution should be safe, without need of escape/alias analysis, 
&lt;br&gt;because StringBuilder and StringBuffer don't have any methods that 
&lt;br&gt;return a new mutable object that shares the same char[]. The only APIs 
&lt;br&gt;that aliases the buffer is subSequence(), but this returns a 
&lt;br&gt;CharSequence which is a read-only object.
&lt;br&gt;&lt;br&gt;A+
&lt;br&gt;Osvaldo
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26468560.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26466078</id>
	<title>RE: Gap Buffer based AbstractStringBuilder implementation</title>
	<published>2009-11-22T07:12:19Z</published>
	<updated>2009-11-22T07:12:19Z</updated>
	<author>
		<name>Jesús Viñuales</name>
	</author>
	<content type="html">&amp;gt; There is a security issue there. When multiple threads are involved, it 
&lt;br&gt;&amp;gt; is possible (though not necessily easy) to create a mutable String if 
&lt;br&gt;&amp;gt; the backing char[] is shared.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Tom Hawtin
&lt;br&gt;&lt;br&gt;True. I worked in a buffer-sharing / copy-on-write optimization one year
&lt;br&gt;ago, and the main issue was breaking the Java lang specs regarding the
&lt;br&gt;inmutability of threads, surely only a issue in theory, but it is a
&lt;br&gt;brokerage.
&lt;br&gt;&lt;br&gt;Nevertheless, the gaining is not clear in modern systems / hotspot / Oss,
&lt;br&gt;because can be garbage collection issued and memory leaks... and in fact
&lt;br&gt;that optimization was there in JDK 1.4 but it was removed in 1.5 because of
&lt;br&gt;that problem (see
&lt;br&gt;&lt;a href=&quot;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6219959&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;But... I would love it working!!!!
&lt;br&gt;&lt;br&gt;:-) 
&lt;br&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gap-Buffer-based-AbstractStringBuilder-implementation-tp26385969p26466078.html" />
</entry>

</feed>
