SkPath: Avoid calls to reserve 0 points or verbs on SkPathRef.

When de-serializing paths, we have a pattern that causes extra re-allocations as in
the following example:

  For each path, reserve known size e.g. SkPath::incReserve(11)
    -> Reserves internal SkTArray verb & point space 11.
    -> Verb & Point SkTarray::fReserved is set to true.

  For each verb:
    SkPathRef::Editor::Editor() calls SkPathRef::incReserve(0, 0)
       -> SkTArray::reserve_back(0) sets fReserved to false.

    SkPathRef::growForVerb() pushes points & verbs
       -> SkTArray::checkRealloc() shrinks the allocation because fReserved == false.

  Eventually SkPathRef::growForVerb() needs to grow the array again.

This change avoids the SkTArray::reserve_back(0) calls.

Bug: skia:13817
Change-Id: I5ad3fa3ef79f4c0265b19e7459aafe3baace8700
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/592336
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Herb Derby <herb@google.com>
1 file changed