8058779: Faster implementation of String.replace(CharSequence, CharSequence) (original) (raw)

Xueming Shen xueming.shen at oracle.com
Sun May 31 07:01:37 UTC 2015


On 5/30/2015 11:38 PM, Peter Levart wrote:

Hi, Yes, this one is much easier to grasp. As I understand the check is to avoid overflow in calculation of StringBuilder initial capacity (newLenHint). If overflow happened, newLenHint would be negative and StringBuilder construction would fail with NegativeArraySizeException. But the calculation of newLenHint: int newLenHint = value.length - targLen + replValue.length; ...considering the following: value.length >= 0 targLength >= 0 replValue.length >= 0 targLength <= value.length in case of overflow, it can only produce a negative value. So the check could simply be: if (newLenHint < 0) { throw new OutOfMemoryError(); } Right? Regards, Peter

agreed.



More information about the core-libs-dev mailing list