[OpenJDK 2D-Dev] [OpenJDK Rasterizer] Path2d needRoom very slow for huge paths

Jim Graham james.graham at oracle.com
Fri Apr 10 18:50:26 UTC 2015


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.graham at oracle.com
> <mailto:james.graham at 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;
>     }
>



More information about the 2d-dev mailing list