⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 267580 in webkit


Ignore:
Timestamp:
Sep 25, 2020, 11:20:50 AM (6 years ago)
Author:
Alan Coon
Message:

Cherry-pick r266198. rdar://problem/69382901

Avoid unnecessarily copying a Vector in WebCore::transformsForValue
https://bugs.webkit.org/show_bug.cgi?id=215858

Reviewed by Tim Horton.

Avoid copying the Vector of TransformOperations in this helper function by directly appending newly created
transform operations to the given TransformOperations. This does, however, mean that we need to clear these
items in the case where conversion fails and we return false.

  • css/TransformFunctions.cpp: (WebCore::transformsForValue):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266198 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Location:
branches/safari-610-branch/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-610-branch/Source/WebCore/ChangeLog

    r267276 r267580  
     12020-09-22  Alan Coon  <alancoon@apple.com>
     2
     3        Cherry-pick r266198. rdar://problem/69382901
     4
     5    Avoid unnecessarily copying a Vector in WebCore::transformsForValue
     6    https://bugs.webkit.org/show_bug.cgi?id=215858
     7   
     8    Reviewed by Tim Horton.
     9   
     10    Avoid copying the `Vector` of `TransformOperation`s in this helper function by directly appending newly created
     11    transform operations to the given `TransformOperations`. This does, however, mean that we need to clear these
     12    items in the case where conversion fails and we return false.
     13   
     14    * css/TransformFunctions.cpp:
     15    (WebCore::transformsForValue):
     16   
     17   
     18    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266198 268f45cc-cd09-0410-ab3c-d52691b4dbfc
     19
     20    2020-08-26  Wenson Hsieh  <wenson_hsieh@apple.com>
     21
     22            Avoid unnecessarily copying a Vector in WebCore::transformsForValue
     23            https://bugs.webkit.org/show_bug.cgi?id=215858
     24
     25            Reviewed by Tim Horton.
     26
     27            Avoid copying the `Vector` of `TransformOperation`s in this helper function by directly appending newly created
     28            transform operations to the given `TransformOperations`. This does, however, mean that we need to clear these
     29            items in the case where conversion fails and we return false.
     30
     31            * css/TransformFunctions.cpp:
     32            (WebCore::transformsForValue):
     33
    1342020-09-18  Alan Coon  <alancoon@apple.com>
    235
  • branches/safari-610-branch/Source/WebCore/css/TransformFunctions.cpp

    r254703 r267580  
    105105bool transformsForValue(const CSSValue& value, const CSSToLengthConversionData& conversionData, TransformOperations& outOperations)
    106106{
    107     if (!is<CSSValueList>(value)) {
    108         outOperations.clear();
     107    ASSERT(!outOperations.size());
     108    if (!is<CSSValueList>(value))
    109109        return false;
    110     }
    111 
    112     TransformOperations operations;
     110
     111    auto& operations = outOperations.operations();
    113112    for (auto& currentValue : downcast<CSSValueList>(value)) {
    114113        if (!is<CSSFunctionValue>(currentValue))
     
    149148                }
    150149            }
    151             operations.operations().append(ScaleTransformOperation::create(sx, sy, 1.0, transformOperationType(transformValue.name())));
     150            operations.append(ScaleTransformOperation::create(sx, sy, 1.0, transformOperationType(transformValue.name())));
    152151            break;
    153152        }
     
    175174                }
    176175            }
    177             operations.operations().append(ScaleTransformOperation::create(sx, sy, sz, transformOperationType(transformValue.name())));
     176            operations.append(ScaleTransformOperation::create(sx, sy, sz, transformOperationType(transformValue.name())));
    178177            break;
    179178        }
     
    195194            }
    196195
    197             if (tx.isUndefined() || ty.isUndefined())
     196            if (tx.isUndefined() || ty.isUndefined()) {
     197                operations.clear();
    198198                return false;
    199 
    200             operations.operations().append(TranslateTransformOperation::create(tx, ty, Length(0, Fixed), transformOperationType(transformValue.name())));
     199            }
     200
     201            operations.append(TranslateTransformOperation::create(tx, ty, Length(0, Fixed), transformOperationType(transformValue.name())));
    201202            break;
    202203        }
     
    224225            }
    225226
    226             if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined())
     227            if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined()) {
     228                operations.clear();
    227229                return false;
    228 
    229             operations.operations().append(TranslateTransformOperation::create(tx, ty, tz, transformOperationType(transformValue.name())));
     230            }
     231
     232            operations.append(TranslateTransformOperation::create(tx, ty, tz, transformOperationType(transformValue.name())));
    230233            break;
    231234        }
    232235        case CSSValueRotate: {
    233236            double angle = firstValue.computeDegrees();
    234             operations.operations().append(RotateTransformOperation::create(0, 0, 1, angle, transformOperationType(transformValue.name())));
     237            operations.append(RotateTransformOperation::create(0, 0, 1, angle, transformOperationType(transformValue.name())));
    235238            break;
    236239        }
     
    249252            else
    250253                z = 1;
    251             operations.operations().append(RotateTransformOperation::create(x, y, z, angle, transformOperationType(transformValue.name())));
     254            operations.append(RotateTransformOperation::create(x, y, z, angle, transformOperationType(transformValue.name())));
    252255            break;
    253256        }
     
    262265            double z = thirdValue.doubleValue();
    263266            double angle = fourthValue.computeDegrees();
    264             operations.operations().append(RotateTransformOperation::create(x, y, z, angle, transformOperationType(transformValue.name())));
     267            operations.append(RotateTransformOperation::create(x, y, z, angle, transformOperationType(transformValue.name())));
    265268            break;
    266269        }
     
    282285                }
    283286            }
    284             operations.operations().append(SkewTransformOperation::create(angleX, angleY, transformOperationType(transformValue.name())));
     287            operations.append(SkewTransformOperation::create(angleX, angleY, transformOperationType(transformValue.name())));
    285288            break;
    286289        }
     
    294297            double e = conversionData.zoom() * downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(4)).doubleValue();
    295298            double f = conversionData.zoom() * downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(5)).doubleValue();
    296             operations.operations().append(MatrixTransformOperation::create(a, b, c, d, e, f));
     299            operations.append(MatrixTransformOperation::create(a, b, c, d, e, f));
    297300            break;
    298301        }
     
    316319                downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(14)).doubleValue(),
    317320                downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(15)).doubleValue());
    318             operations.operations().append(Matrix3DTransformOperation::create(matrix));
     321            operations.append(Matrix3DTransformOperation::create(matrix));
    319322            break;
    320323        }
     
    329332            }
    330333
    331             if (p.isUndefined())
     334            if (p.isUndefined()) {
     335                operations.clear();
    332336                return false;
    333 
    334             operations.operations().append(PerspectiveTransformOperation::create(p));
     337            }
     338
     339            operations.append(PerspectiveTransformOperation::create(p));
    335340            break;
    336341        }
     
    341346    }
    342347
    343     outOperations = operations;
    344348    return true;
    345349}
Note: See TracChangeset for help on using the changeset viewer.