To answer my own question - since we already have a changeset with just the new trim-on-copy stuff that is backwards compatible and since this change only adds the new trim method and some overflow protection, we can just go with the previous fix if we decide to backport things. The added value of the new overflow protection is not enough to further split this particular change down...

                        ...jim

On 4/20/15 1:09 PM, Jim Graham wrote:
I've started the CCC process by creating a bug.

One quick question - do we want to port these changes back to 8u60?  If
so, then we would not be able to port the new Path2D method since there
are no API changes allowed in 8u60.  If not, then there is no issue.

Phil?

             ...jim

On 4/17/15 3:09 AM, Laurent Bourgès wrote:
Phil & Jim,

Do you have any feedback (CCC) on this Path2D patch ?

http://cr.openjdk.java.net/~lbourges/path2D/Path2D_needRoom.1/
<http://cr.openjdk.java.net/%7Elbourges/path2D/Path2D_needRoom.1/>

Laurent


Le 10 avr. 2015 20:51, "Jim Graham" <james.gra...@oracle.com
<mailto:james.gra...@oracle.com>> a écrit :

    Hi Laurent,

    Adding a new method is not as simple as just sending a webrev.
    We'll need to do some other internal processes to get approval for
    that...

                     ...jim

    On 4/10/15 8:07 AM, Laurent Bourgès wrote:

        Jim,

        Here is the new webrev:
        http://cr.openjdk.java.net/~lbourges/path2D/Path2D_needRoom.1/

        Changes:
        - needRoom() applies your pseudo-code; see expandPointTypes() and
        expandCoords()
        - added a new public trimToSize() method to Path2D implemented
        by both
        Path2D.Float and Path2D.Double classes

        Cheers,
        Laurent

        2015-04-08 22:53 GMT+02:00 Jim Graham <james.gra...@oracle.com
        <mailto:james.gra...@oracle.com>
        <mailto:james.gra...@oracle.com
<mailto:james.gra...@oracle.com>>>:

             Hi Laurent,

             I'd probably do:

             int newsizemin = oldcount + newitems;
             if (newsizemin < oldcount) {
                  // hard overflow failure - we can't even accommodate
                  // new items without overflowing
                  return failure, throw exception?
             }
             int newsize = <growth algorithm computation>;
             if (newsize < newsizemin) {
                  // overflow in growth algorithm computation
                  newsize = newsizemin;
                  ... OR ...
                  newsize = MAX_INT;
             }
             while (true) {
                  try {
                      allocate newsize;
                      break;  (or return?)
                  } catch (OOME e) {
                      if (newsize == newsizemin) {
                          throw e;
                      }
                  }
                  newsize = newsizemin + (newsize - newsizemin) / 2;
             }




--
--
Laurent Bourgès

Reply via email to