Changeset 267580 in webkit
- Timestamp:
- Sep 25, 2020, 11:20:50 AM (6 years ago)
- Location:
- branches/safari-610-branch/Source/WebCore
- Files:
-
- 2 edited
-
ChangeLog (modified) (1 diff)
-
css/TransformFunctions.cpp (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-610-branch/Source/WebCore/ChangeLog
r267276 r267580 1 2020-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 1 34 2020-09-18 Alan Coon <alancoon@apple.com> 2 35 -
branches/safari-610-branch/Source/WebCore/css/TransformFunctions.cpp
r254703 r267580 105 105 bool transformsForValue(const CSSValue& value, const CSSToLengthConversionData& conversionData, TransformOperations& outOperations) 106 106 { 107 if (!is<CSSValueList>(value)) {108 outOperations.clear();107 ASSERT(!outOperations.size()); 108 if (!is<CSSValueList>(value)) 109 109 return false; 110 } 111 112 TransformOperations operations; 110 111 auto& operations = outOperations.operations(); 113 112 for (auto& currentValue : downcast<CSSValueList>(value)) { 114 113 if (!is<CSSFunctionValue>(currentValue)) … … 149 148 } 150 149 } 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()))); 152 151 break; 153 152 } … … 175 174 } 176 175 } 177 operations. operations().append(ScaleTransformOperation::create(sx, sy, sz, transformOperationType(transformValue.name())));176 operations.append(ScaleTransformOperation::create(sx, sy, sz, transformOperationType(transformValue.name()))); 178 177 break; 179 178 } … … 195 194 } 196 195 197 if (tx.isUndefined() || ty.isUndefined()) 196 if (tx.isUndefined() || ty.isUndefined()) { 197 operations.clear(); 198 198 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()))); 201 202 break; 202 203 } … … 224 225 } 225 226 226 if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined()) 227 if (tx.isUndefined() || ty.isUndefined() || tz.isUndefined()) { 228 operations.clear(); 227 229 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()))); 230 233 break; 231 234 } 232 235 case CSSValueRotate: { 233 236 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()))); 235 238 break; 236 239 } … … 249 252 else 250 253 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()))); 252 255 break; 253 256 } … … 262 265 double z = thirdValue.doubleValue(); 263 266 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()))); 265 268 break; 266 269 } … … 282 285 } 283 286 } 284 operations. operations().append(SkewTransformOperation::create(angleX, angleY, transformOperationType(transformValue.name())));287 operations.append(SkewTransformOperation::create(angleX, angleY, transformOperationType(transformValue.name()))); 285 288 break; 286 289 } … … 294 297 double e = conversionData.zoom() * downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(4)).doubleValue(); 295 298 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)); 297 300 break; 298 301 } … … 316 319 downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(14)).doubleValue(), 317 320 downcast<CSSPrimitiveValue>(*transformValue.itemWithoutBoundsCheck(15)).doubleValue()); 318 operations. operations().append(Matrix3DTransformOperation::create(matrix));321 operations.append(Matrix3DTransformOperation::create(matrix)); 319 322 break; 320 323 } … … 329 332 } 330 333 331 if (p.isUndefined()) 334 if (p.isUndefined()) { 335 operations.clear(); 332 336 return false; 333 334 operations.operations().append(PerspectiveTransformOperation::create(p)); 337 } 338 339 operations.append(PerspectiveTransformOperation::create(p)); 335 340 break; 336 341 } … … 341 346 } 342 347 343 outOperations = operations;344 348 return true; 345 349 }
Note:
See TracChangeset
for help on using the changeset viewer.