Changeset 242713 in webkit
- Timestamp:
- Mar 11, 2019, 10:11:13 AM (7 years ago)
- Location:
- trunk/Source
- Files:
-
- 37 edited
-
JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp (modified) (7 diffs)
-
JavaScriptCore/ChangeLog (modified) (1 diff)
-
JavaScriptCore/runtime/NumberPrototype.cpp (modified) (1 diff)
-
JavaScriptCore/runtime/Options.cpp (modified) (1 diff)
-
WTF/ChangeLog (modified) (1 diff)
-
WTF/wtf/Logger.h (modified) (1 diff)
-
WTF/wtf/MediaTime.cpp (modified) (1 diff)
-
WTF/wtf/text/ValueToString.h (modified) (1 diff)
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/accessibility/AccessibilityNodeObject.cpp (modified) (2 diffs)
-
WebCore/accessibility/AccessibilityScrollbar.cpp (modified) (1 diff)
-
WebCore/css/CSSFontVariationValue.cpp (modified) (1 diff)
-
WebCore/css/CSSGradientValue.cpp (modified) (2 diffs)
-
WebCore/css/CSSKeyframeRule.cpp (modified) (1 diff)
-
WebCore/css/CSSTimingFunctionValue.cpp (modified) (2 diffs)
-
WebCore/css/parser/CSSParserToken.cpp (modified) (1 diff)
-
WebCore/html/HTMLImageElement.cpp (modified) (1 diff)
-
WebCore/inspector/InspectorOverlay.cpp (modified) (2 diffs)
-
WebCore/loader/ResourceLoadStatistics.cpp (modified) (2 diffs)
-
WebCore/page/PrintContext.cpp (modified) (1 diff)
-
WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm (modified) (1 diff)
-
WebCore/platform/LayoutUnit.h (modified) (1 diff)
-
WebCore/platform/graphics/Color.cpp (modified) (1 diff)
-
WebCore/platform/graphics/ExtendedColor.cpp (modified) (1 diff)
-
WebCore/svg/SVGAngleValue.cpp (modified) (1 diff)
-
WebCore/svg/SVGNumberListValues.cpp (modified) (1 diff)
-
WebCore/svg/SVGPathStringBuilder.cpp (modified) (2 diffs)
-
WebCore/svg/SVGPointListValues.cpp (modified) (1 diff)
-
WebCore/svg/SVGTransformValue.cpp (modified) (5 diffs)
-
WebCore/svg/properties/SVGPropertyTraits.h (modified) (3 diffs)
-
WebCore/testing/Internals.cpp (modified) (2 diffs)
-
WebCore/xml/XPathValue.cpp (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/NetworkProcess/cache/NetworkCache.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp (modified) (2 diffs)
-
WebKit/Shared/Gamepad/GamepadData.cpp (modified) (2 diffs)
-
WebKit/UIProcess/WebPageProxy.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/tests/ExecutionTimeLimitTest.cpp
r236032 r242713 195 195 StringBuilder scriptBuilder; 196 196 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 197 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());197 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 198 198 scriptBuilder.appendLiteral(") break; } } foo();"); 199 199 … … 236 236 "if (i % 1000 === 0) {" 237 237 "if (currentCPUTime() - startTime >"); 238 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());238 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 239 239 scriptBuilder.appendLiteral(" ) { return; }"); 240 240 scriptBuilder.appendLiteral(" }"); … … 276 276 StringBuilder scriptBuilder; 277 277 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); try { while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 278 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());278 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 279 279 scriptBuilder.appendLiteral(") break; } } catch(e) { } } foo();"); 280 280 … … 315 315 StringBuilder scriptBuilder; 316 316 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 317 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());317 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 318 318 scriptBuilder.appendLiteral(") break; } } foo();"); 319 319 … … 354 354 StringBuilder scriptBuilder; 355 355 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 356 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());356 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 357 357 scriptBuilder.appendLiteral(") break; } } foo();"); 358 358 … … 393 393 StringBuilder scriptBuilder; 394 394 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 395 scriptBuilder.append Number(maxBusyLoopTime.seconds()); // in seconds.395 scriptBuilder.appendFixedPrecisionNumber(maxBusyLoopTime.seconds()); // in seconds. 396 396 scriptBuilder.appendLiteral(") break; } } foo();"); 397 397 … … 436 436 StringBuilder scriptBuilder; 437 437 scriptBuilder.appendLiteral("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > "); 438 scriptBuilder.append Number(timeAfterWatchdogShouldHaveFired.seconds());438 scriptBuilder.appendFixedPrecisionNumber(timeAfterWatchdogShouldHaveFired.seconds()); 439 439 scriptBuilder.appendLiteral(") break; } } foo();"); 440 440 -
trunk/Source/JavaScriptCore/ChangeLog
r242699 r242713 1 2019-03-11 Darin Adler <darin@apple.com> 2 3 Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior 4 https://bugs.webkit.org/show_bug.cgi?id=195533 5 6 Reviewed by Brent Fulgham. 7 8 * API/tests/ExecutionTimeLimitTest.cpp: 9 (testExecutionTimeLimit): Use appendFixedPrecisionNumber. 10 * runtime/NumberPrototype.cpp: 11 (JSC::numberProtoFuncToPrecision): Use numberToStringFixedPrecision. 12 * runtime/Options.cpp: 13 (JSC::Option::dump const): Use appendFixedPrecisionNumber. 14 1 15 2019-03-10 Ross Kirsling <ross.kirsling@sony.com> 2 16 -
trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp
r242330 r242713 506 506 return throwVMError(exec, scope, createRangeError(exec, "toPrecision() argument must be between 1 and 21"_s)); 507 507 508 return JSValue::encode(jsString(exec, String::number (x, significantFigures, KeepTrailingZeros)));508 return JSValue::encode(jsString(exec, String::numberToStringFixedPrecision(x, significantFigures, KeepTrailingZeros))); 509 509 } 510 510 -
trunk/Source/JavaScriptCore/runtime/Options.cpp
r241769 r242713 907 907 break; 908 908 case Options::Type::doubleType: 909 builder.append Number(m_entry.doubleVal);909 builder.appendFixedPrecisionNumber(m_entry.doubleVal); 910 910 break; 911 911 case Options::Type::int32Type: -
trunk/Source/WTF/ChangeLog
r242706 r242713 1 2019-03-11 Darin Adler <darin@apple.com> 2 3 Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior 4 https://bugs.webkit.org/show_bug.cgi?id=195533 5 6 Reviewed by Brent Fulgham. 7 8 Soon, we will change String::number and StringBuilder::appendNumber for floating 9 point to use "shortest form" serialization instead of the current default, which is 10 "6-digit fixed precision stripping trailing zeros". To prepare to do this safely 11 without accidentally changing any behavior, changing callers to call the explicit 12 versions. Later, we may want to return and change many of them to use shortest form 13 instead, but that may require rebaselining tests, and in some extreme cases, getting 14 rid of flawed logic that converts between different single and double precision 15 floating point; such problems may be hidden by fixed precision serialization. 16 17 Since "shortest form" is already the behavior for AtomicString::number and 18 for makeString, no changes required for clients of either of those. 19 20 * wtf/Logger.h: 21 (WTF::LogArgument::toString): Use numberToStringFixedPrecision. 22 * wtf/MediaTime.cpp: 23 (WTF::MediaTime::toString const): Use appendFixedPrecisionNumber. 24 * wtf/text/ValueToString.h: 25 (WTF::ValueToString<float>::string): Use numberToStringFixedPrecision. 26 (WTF::ValueToString<double>::string): Ditto. 27 1 28 2019-03-11 Truitt Savell <tsavell@apple.com> 2 29 -
trunk/Source/WTF/wtf/Logger.h
r241751 r242713 37 37 template<typename U = T> static typename std::enable_if<std::is_same<U, unsigned long>::value, String>::type toString(unsigned long argument) { return String::number(argument); } 38 38 template<typename U = T> static typename std::enable_if<std::is_same<U, long>::value, String>::type toString(long argument) { return String::number(argument); } 39 template<typename U = T> static typename std::enable_if<std::is_same<U, float>::value, String>::type toString(float argument) { return String::number (argument); }40 template<typename U = T> static typename std::enable_if<std::is_same<U, double>::value, String>::type toString(double argument) { return String::number (argument); }39 template<typename U = T> static typename std::enable_if<std::is_same<U, float>::value, String>::type toString(float argument) { return String::numberToStringFixedPrecision(argument); } 40 template<typename U = T> static typename std::enable_if<std::is_same<U, double>::value, String>::type toString(double argument) { return String::numberToStringFixedPrecision(argument); } 41 41 template<typename U = T> static typename std::enable_if<std::is_same<typename std::remove_reference<U>::type, AtomicString>::value, String>::type toString(const AtomicString& argument) { return argument.string(); } 42 42 template<typename U = T> static typename std::enable_if<std::is_same<typename std::remove_reference<U>::type, String>::value, String>::type toString(String argument) { return argument; } -
trunk/Source/WTF/wtf/MediaTime.cpp
r241148 r242713 594 594 builder.appendLiteral(" = "); 595 595 } 596 builder.append Number(toDouble());596 builder.appendFixedPrecisionNumber(toDouble()); 597 597 builder.append('}'); 598 598 return builder.toString(); -
trunk/Source/WTF/wtf/text/ValueToString.h
r220621 r242713 36 36 namespace WTF { 37 37 38 template<class T> 39 struct ValueToString; 38 template<typename> struct ValueToString; 40 39 41 template <> 42 struct ValueToString<int> { 43 static String string(const int value) { return String::number(value); } 40 template<> struct ValueToString<int> { 41 static String string(int value) { return String::number(value); } 44 42 }; 45 43 46 template <> 47 struct ValueToString<float> { 48 static String string(const float value) { return String::number(value); } 44 template<> struct ValueToString<float> { 45 static String string(float value) { return String::numberToStringFixedPrecision(value); } 49 46 }; 50 47 51 template <> 52 struct ValueToString<double> { 53 static String string(const double value) { return String::number(value); } 48 template<> struct ValueToString<double> { 49 static String string(double value) { return String::numberToStringFixedPrecision(value); } 54 50 }; 55 51 -
trunk/Source/WebCore/ChangeLog
r242703 r242713 1 2019-03-11 Darin Adler <darin@apple.com> 2 3 Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior 4 https://bugs.webkit.org/show_bug.cgi?id=195533 5 6 Reviewed by Brent Fulgham. 7 8 * accessibility/AccessibilityNodeObject.cpp: 9 (WebCore::AccessibilityNodeObject::changeValueByStep): Use numberToStringFixedPrecision. 10 (WebCore::AccessibilityNodeObject::changeValueByPercent): Ditto. 11 * accessibility/AccessibilityScrollbar.cpp: 12 (WebCore::AccessibilityScrollbar::setValue): Ditto. 13 * css/CSSFontVariationValue.cpp: 14 (WebCore::CSSFontVariationValue::customCSSText const): Use appendFixedPrecisionNumber. 15 * css/CSSGradientValue.cpp: 16 (WebCore::CSSLinearGradientValue::customCSSText const): Ditto. 17 (WebCore::CSSRadialGradientValue::customCSSText const): Ditto. 18 * css/CSSKeyframeRule.cpp: 19 (WebCore::StyleRuleKeyframe::keyText const): Ditto. 20 * css/CSSTimingFunctionValue.cpp: 21 (WebCore::CSSCubicBezierTimingFunctionValue::customCSSText const): Ditto. 22 (WebCore::CSSSpringTimingFunctionValue::customCSSText const): Ditto. 23 * css/parser/CSSParserToken.cpp: 24 (WebCore::CSSParserToken::serialize const): Ditto. 25 * html/HTMLImageElement.cpp: 26 (WebCore::HTMLImageElement::completeURLsInAttributeValue const): Ditto. 27 * inspector/InspectorOverlay.cpp: 28 (WebCore::InspectorOverlay::drawRulers): Use numberToStringFixedPrecision. 29 * loader/ResourceLoadStatistics.cpp: 30 (WebCore::ResourceLoadStatistics::toString const): Use appendFixedPrecisionNumber. 31 * page/PrintContext.cpp: 32 (WebCore::PrintContext::pageProperty): Use numberToStringFixedPrecision. 33 * page/cocoa/ResourceUsageOverlayCocoa.mm: 34 (WebCore::gcTimerString): Use numberToStringFixedPrecision. 35 * platform/LayoutUnit.h: 36 (WTF::ValueToString<WebCore::LayoutUnit>::string): Ditto. 37 * platform/graphics/Color.cpp: 38 (WebCore::Color::cssText const): Use appendFixedPrecisionNumber. 39 * platform/graphics/ExtendedColor.cpp: 40 (WebCore::ExtendedColor::cssText const): Ditto. 41 * svg/SVGAngleValue.cpp: 42 (WebCore::SVGAngleValue::valueAsString const): Use numberToStringFixedPrecision. 43 * svg/SVGNumberListValues.cpp: 44 (WebCore::SVGNumberListValues::valueAsString const): Use appendFixedPrecisionNumber. 45 * svg/SVGPathStringBuilder.cpp: 46 (WebCore::appendNumber): Ditto. 47 (WebCore::appendPoint): Ditto. 48 * svg/SVGPointListValues.cpp: 49 (WebCore::SVGPointListValues::valueAsString const): Ditto. 50 * svg/SVGTransformValue.cpp: 51 (WebCore::SVGTransformValue::valueAsString const): Ditto. 52 * svg/properties/SVGPropertyTraits.h: 53 (WebCore::SVGPropertyTraits<float>::toString): Use numberToStringFixedPrecision. 54 (WebCore::SVGPropertyTraits<FloatPoint>::toString): Use appendFixedPrecisionNumber. 55 (WebCore::SVGPropertyTraits<FloatRect>::toString): Ditto. 56 * testing/Internals.cpp: 57 (WebCore::Internals::dumpMarkerRects): Use appendFixedPrecisionNumber. 58 (WebCore::Internals::getCurrentCursorInfo): Ditto. 59 * xml/XPathValue.cpp: 60 (WebCore::XPath::Value::toString const): Use numberToStringFixedPrecision. 61 1 62 2019-03-11 Philippe Normand <pnormand@igalia.com> 2 63 -
trunk/Source/WebCore/accessibility/AccessibilityNodeObject.cpp
r241989 r242713 1099 1099 value += increase ? step : -step; 1100 1100 1101 setValue(String::number (value));1101 setValue(String::numberToStringFixedPrecision(value)); 1102 1102 1103 1103 axObjectCache()->postNotification(node(), AXObjectCache::AXValueChanged); … … 1111 1111 1112 1112 // Make sure the specified percent will cause a change of one integer step or larger. 1113 if ( fabs(step) < 1)1114 step = fabs(percentChange) * (1 / percentChange);1113 if (std::abs(step) < 1) 1114 step = std::abs(percentChange) * (1 / percentChange); 1115 1115 1116 1116 value += step; 1117 setValue(String::number (value));1117 setValue(String::numberToStringFixedPrecision(value)); 1118 1118 1119 1119 axObjectCache()->postNotification(node(), AXObjectCache::AXValueChanged); -
trunk/Source/WebCore/accessibility/AccessibilityScrollbar.cpp
r229112 r242713 99 99 100 100 float newValue = value * m_scrollbar->maximum(); 101 if (dispatchAccessibleSetValueEvent(String::number (newValue)))101 if (dispatchAccessibleSetValueEvent(String::numberToStringFixedPrecision(newValue))) 102 102 return; 103 103 m_scrollbar->scrollableArea().scrollToOffsetWithoutAnimation(m_scrollbar->orientation(), newValue); -
trunk/Source/WebCore/css/CSSFontVariationValue.cpp
r231165 r242713 48 48 builder.append(c); 49 49 builder.appendLiteral("\" "); 50 builder.append Number(m_value);50 builder.appendFixedPrecisionNumber(m_value); 51 51 return builder.toString(); 52 52 } -
trunk/Source/WebCore/css/CSSGradientValue.cpp
r235999 r242713 694 694 } else { 695 695 result.appendLiteral("color-stop("); 696 result.append Number(position);696 result.appendFixedPrecisionNumber(position); 697 697 result.appendLiteral(", "); 698 698 result.append(stop.m_color->cssText()); … … 975 975 } else { 976 976 result.appendLiteral("color-stop("); 977 result.append Number(position);977 result.appendFixedPrecisionNumber(position); 978 978 result.appendLiteral(", "); 979 979 result.append(stop.m_color->cssText()); -
trunk/Source/WebCore/css/CSSKeyframeRule.cpp
r223728 r242713 64 64 if (i) 65 65 keyText.append(','); 66 keyText.append Number(m_keys.at(i) * 100);66 keyText.appendFixedPrecisionNumber(m_keys.at(i) * 100); 67 67 keyText.append('%'); 68 68 } -
trunk/Source/WebCore/css/CSSTimingFunctionValue.cpp
r236998 r242713 35 35 StringBuilder builder; 36 36 builder.appendLiteral("cubic-bezier("); 37 builder.append Number(m_x1);37 builder.appendFixedPrecisionNumber(m_x1); 38 38 builder.appendLiteral(", "); 39 builder.append Number(m_y1);39 builder.appendFixedPrecisionNumber(m_y1); 40 40 builder.appendLiteral(", "); 41 builder.append Number(m_x2);41 builder.appendFixedPrecisionNumber(m_x2); 42 42 builder.appendLiteral(", "); 43 builder.append Number(m_y2);43 builder.appendFixedPrecisionNumber(m_y2); 44 44 builder.append(')'); 45 45 return builder.toString(); … … 72 72 StringBuilder builder; 73 73 builder.appendLiteral("spring("); 74 builder.append Number(m_mass);74 builder.appendFixedPrecisionNumber(m_mass); 75 75 builder.append(' '); 76 builder.append Number(m_stiffness);76 builder.appendFixedPrecisionNumber(m_stiffness); 77 77 builder.append(' '); 78 builder.append Number(m_damping);78 builder.appendFixedPrecisionNumber(m_damping); 79 79 builder.append(' '); 80 builder.append Number(m_initialVelocity);80 builder.appendFixedPrecisionNumber(m_initialVelocity); 81 81 builder.append(')'); 82 82 return builder.toString(); -
trunk/Source/WebCore/css/parser/CSSParserToken.cpp
r241256 r242713 420 420 if (m_numericSign == PlusSign) 421 421 builder.append('+'); 422 builder.append Number(numericValue());422 builder.appendFixedPrecisionNumber(numericValue()); 423 423 break; 424 424 case PercentageToken: 425 builder.append Number(numericValue());425 builder.appendFixedPrecisionNumber(numericValue()); 426 426 builder.append('%'); 427 427 break; 428 428 case DimensionToken: 429 429 // This will incorrectly serialize e.g. 4e3e2 as 4000e2 430 builder.append Number(numericValue());430 builder.appendFixedPrecisionNumber(numericValue()); 431 431 serializeIdentifier(value().toString(), builder); 432 432 break; -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r242391 r242713 552 552 if (candidate.density != UninitializedDescriptor) { 553 553 result.append(' '); 554 result.append Number(candidate.density);554 result.appendFixedPrecisionNumber(candidate.density); 555 555 result.append('x'); 556 556 } -
trunk/Source/WebCore/inspector/InspectorOverlay.cpp
r242019 r242713 783 783 GraphicsContextStateSaver verticalLabelStateSaver(context); 784 784 context.translate(zoom(x) + 0.5f, scrollY); 785 context.drawText(font, TextRun(String::number (x)), { 2, rulerLabelSize });785 context.drawText(font, TextRun(String::numberToStringFixedPrecision(x)), { 2, rulerLabelSize }); 786 786 } 787 787 … … 793 793 context.translate(scrollX, zoom(y) + 0.5f); 794 794 context.rotate(-piOverTwoFloat); 795 context.drawText(font, TextRun(String::number (y)), { 2, rulerLabelSize });795 context.drawText(font, TextRun(String::numberToStringFixedPrecision(y)), { 2, rulerLabelSize }); 796 796 } 797 797 } -
trunk/Source/WebCore/loader/ResourceLoadStatistics.cpp
r242603 r242713 413 413 builder.append('\n'); 414 414 builder.appendLiteral(" lastSeen: "); 415 builder.append Number(lastSeen.secondsSinceEpoch().value());415 builder.appendFixedPrecisionNumber(lastSeen.secondsSinceEpoch().value()); 416 416 builder.append('\n'); 417 417 … … 420 420 builder.append('\n'); 421 421 builder.appendLiteral(" mostRecentUserInteraction: "); 422 builder.append Number(mostRecentUserInteractionTime.secondsSinceEpoch().value());422 builder.appendFixedPrecisionNumber(mostRecentUserInteractionTime.secondsSinceEpoch().value()); 423 423 builder.append('\n'); 424 424 appendBoolean(builder, "grandfathered", grandfathered); -
trunk/Source/WebCore/page/PrintContext.cpp
r241244 r242713 327 327 if (style->marginLeft().isAuto()) 328 328 return "auto"_s; 329 return String::number (style->marginLeft().value());329 return String::numberToStringFixedPrecision(style->marginLeft().value()); 330 330 } 331 331 if (!strcmp(propertyName, "line-height")) 332 return String::number (style->lineHeight().value());332 return String::numberToStringFixedPrecision(style->lineHeight().value()); 333 333 if (!strcmp(propertyName, "font-size")) 334 334 return String::number(style->fontDescription().computedPixelSize()); -
trunk/Source/WebCore/page/cocoa/ResourceUsageOverlayCocoa.mm
r242308 r242713 440 440 if (std::isnan(timerFireDate)) 441 441 return "[not scheduled]"_s; 442 return String::number ((timerFireDate - now).seconds());442 return String::numberToStringFixedPrecision((timerFireDate - now).seconds()); 443 443 } 444 444 -
trunk/Source/WebCore/platform/LayoutUnit.h
r238463 r242713 834 834 835 835 #ifndef NDEBUG 836 836 837 namespace WTF { 838 837 839 // This structure is used by PODIntervalTree for debugging. 838 template <> 839 struct ValueToString<WebCore::LayoutUnit> { 840 static String string(const WebCore::LayoutUnit value) { return String::number(value.toFloat()); } 840 template<> struct ValueToString<WebCore::LayoutUnit> { 841 static String string(WebCore::LayoutUnit value) { return String::numberToStringFixedPrecision(value.toFloat()); } 841 842 }; 842 843 843 844 } // namespace WTF 845 844 846 #endif -
trunk/Source/WebCore/platform/graphics/Color.cpp
r242316 r242713 378 378 if (colorHasAlpha) { 379 379 builder.appendLiteral(", "); 380 builder.append Number(alpha() / 255.0f);380 builder.appendFixedPrecisionNumber(alpha() / 255.0f); 381 381 } 382 382 -
trunk/Source/WebCore/platform/graphics/ExtendedColor.cpp
r241244 r242713 57 57 } 58 58 59 builder.append Number(red());59 builder.appendFixedPrecisionNumber(red()); 60 60 builder.append(' '); 61 61 62 builder.append Number(green());62 builder.appendFixedPrecisionNumber(green()); 63 63 builder.append(' '); 64 64 65 builder.append Number(blue());65 builder.appendFixedPrecisionNumber(blue()); 66 66 if (!WTF::areEssentiallyEqual(alpha(), 1.0f)) { 67 67 builder.appendLiteral(" / "); 68 builder.append Number(alpha());68 builder.appendFixedPrecisionNumber(alpha()); 69 69 } 70 70 builder.append(')'); -
trunk/Source/WebCore/svg/SVGAngleValue.cpp
r241244 r242713 74 74 case SVG_ANGLETYPE_UNSPECIFIED: 75 75 case SVG_ANGLETYPE_UNKNOWN: 76 return String::number (m_valueInSpecifiedUnits);76 return String::numberToStringFixedPrecision(m_valueInSpecifiedUnits); 77 77 } 78 78 -
trunk/Source/WebCore/svg/SVGNumberListValues.cpp
r208863 r242713 53 53 builder.append(' '); 54 54 55 builder.append Number(at(i));55 builder.appendFixedPrecisionNumber(at(i)); 56 56 } 57 57 -
trunk/Source/WebCore/svg/SVGPathStringBuilder.cpp
r223728 r242713 58 58 static void appendNumber(StringBuilder& stringBuilder, float number) 59 59 { 60 stringBuilder.append Number(number);60 stringBuilder.appendFixedPrecisionNumber(number); 61 61 stringBuilder.append(' '); 62 62 } … … 64 64 static void appendPoint(StringBuilder& stringBuilder, const FloatPoint& point) 65 65 { 66 stringBuilder.append Number(point.x());66 stringBuilder.appendFixedPrecisionNumber(point.x()); 67 67 stringBuilder.append(' '); 68 stringBuilder.append Number(point.y());68 stringBuilder.appendFixedPrecisionNumber(point.y()); 69 69 stringBuilder.append(' '); 70 70 } -
trunk/Source/WebCore/svg/SVGPointListValues.cpp
r208863 r242713 37 37 38 38 const auto& point = at(i); 39 builder.append Number(point.x());39 builder.appendFixedPrecisionNumber(point.x()); 40 40 builder.append(' '); 41 builder.append Number(point.y());41 builder.appendFixedPrecisionNumber(point.y()); 42 42 } 43 43 -
trunk/Source/WebCore/svg/SVGTransformValue.cpp
r223728 r242713 168 168 StringBuilder builder; 169 169 builder.append(prefix); 170 builder.append Number(m_matrix.a());171 builder.append(' '); 172 builder.append Number(m_matrix.b());173 builder.append(' '); 174 builder.append Number(m_matrix.c());175 builder.append(' '); 176 builder.append Number(m_matrix.d());177 builder.append(' '); 178 builder.append Number(m_matrix.e());179 builder.append(' '); 180 builder.append Number(m_matrix.f());170 builder.appendFixedPrecisionNumber(m_matrix.a()); 171 builder.append(' '); 172 builder.appendFixedPrecisionNumber(m_matrix.b()); 173 builder.append(' '); 174 builder.appendFixedPrecisionNumber(m_matrix.c()); 175 builder.append(' '); 176 builder.appendFixedPrecisionNumber(m_matrix.d()); 177 builder.append(' '); 178 builder.appendFixedPrecisionNumber(m_matrix.e()); 179 builder.append(' '); 180 builder.appendFixedPrecisionNumber(m_matrix.f()); 181 181 builder.append(')'); 182 182 return builder.toString(); … … 185 185 StringBuilder builder; 186 186 builder.append(prefix); 187 builder.append Number(m_matrix.e());188 builder.append(' '); 189 builder.append Number(m_matrix.f());187 builder.appendFixedPrecisionNumber(m_matrix.e()); 188 builder.append(' '); 189 builder.appendFixedPrecisionNumber(m_matrix.f()); 190 190 builder.append(')'); 191 191 return builder.toString(); … … 194 194 StringBuilder builder; 195 195 builder.append(prefix); 196 builder.append Number(m_matrix.xScale());197 builder.append(' '); 198 builder.append Number(m_matrix.yScale());196 builder.appendFixedPrecisionNumber(m_matrix.xScale()); 197 builder.append(' '); 198 builder.appendFixedPrecisionNumber(m_matrix.yScale()); 199 199 builder.append(')'); 200 200 return builder.toString(); … … 208 208 StringBuilder builder; 209 209 builder.append(prefix); 210 builder.append Number(m_angle);210 builder.appendFixedPrecisionNumber(m_angle); 211 211 if (cx || cy) { 212 212 builder.append(' '); 213 builder.append Number(cx);213 builder.appendFixedPrecisionNumber(cx); 214 214 builder.append(' '); 215 builder.append Number(cy);215 builder.appendFixedPrecisionNumber(cy); 216 216 } 217 217 builder.append(')'); … … 222 222 StringBuilder builder; 223 223 builder.append(prefix); 224 builder.append Number(m_angle);224 builder.appendFixedPrecisionNumber(m_angle); 225 225 builder.append(')'); 226 226 return builder.toString(); -
trunk/Source/WebCore/svg/properties/SVGPropertyTraits.h
r239427 r242713 104 104 return number; 105 105 } 106 static String toString(float type) { return String::number (type); }106 static String toString(float type) { return String::numberToStringFixedPrecision(type); } 107 107 }; 108 108 … … 141 141 { 142 142 StringBuilder builder; 143 builder.append Number(type.x());143 builder.appendFixedPrecisionNumber(type.x()); 144 144 builder.append(' '); 145 builder.append Number(type.y());145 builder.appendFixedPrecisionNumber(type.y()); 146 146 return builder.toString(); 147 147 } … … 168 168 { 169 169 StringBuilder builder; 170 builder.append Number(type.x());170 builder.appendFixedPrecisionNumber(type.x()); 171 171 builder.append(' '); 172 builder.append Number(type.y());172 builder.appendFixedPrecisionNumber(type.y()); 173 173 builder.append(' '); 174 builder.append Number(type.width());174 builder.appendFixedPrecisionNumber(type.width()); 175 175 builder.append(' '); 176 builder.append Number(type.height());176 builder.appendFixedPrecisionNumber(type.height()); 177 177 return builder.toString(); 178 178 } -
trunk/Source/WebCore/testing/Internals.cpp
r242155 r242713 1607 1607 for (const auto& rect : rects) { 1608 1608 rectString.append('('); 1609 rectString.append Number(rect.x());1609 rectString.appendFixedPrecisionNumber(rect.x()); 1610 1610 rectString.appendLiteral(", "); 1611 rectString.append Number(rect.y());1611 rectString.appendFixedPrecisionNumber(rect.y()); 1612 1612 rectString.appendLiteral(", "); 1613 rectString.append Number(rect.width());1613 rectString.appendFixedPrecisionNumber(rect.width()); 1614 1614 rectString.appendLiteral(", "); 1615 rectString.append Number(rect.height());1615 rectString.appendFixedPrecisionNumber(rect.height()); 1616 1616 rectString.appendLiteral(") "); 1617 1617 } … … 3329 3329 FloatSize size = cursor.image()->size(); 3330 3330 result.appendLiteral(" image="); 3331 result.append Number(size.width());3331 result.appendFixedPrecisionNumber(size.width()); 3332 3332 result.append('x'); 3333 result.append Number(size.height());3333 result.appendFixedPrecisionNumber(size.height()); 3334 3334 } 3335 3335 #if ENABLE(MOUSE_CURSOR_SCALE) 3336 3336 if (cursor.imageScaleFactor() != 1) { 3337 3337 result.appendLiteral(" scale="); 3338 result.append Number(cursor.imageScaleFactor(), 8);3338 result.appendFixedPrecisionNumber(cursor.imageScaleFactor(), 8); 3339 3339 } 3340 3340 #endif -
trunk/Source/WebCore/xml/XPathValue.cpp
r233122 r242713 127 127 if (std::isinf(m_number)) 128 128 return std::signbit(m_number) ? "-Infinity"_s : "Infinity"_s; 129 return String::number (m_number);129 return String::numberToStringFixedPrecision(m_number); 130 130 case BooleanValue: 131 131 return m_bool ? "true"_s : "false"_s; -
trunk/Source/WebKit/ChangeLog
r242712 r242713 1 2019-03-11 Darin Adler <darin@apple.com> 2 3 Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior 4 https://bugs.webkit.org/show_bug.cgi?id=195533 5 6 Reviewed by Brent Fulgham. 7 8 * NetworkProcess/cache/NetworkCache.cpp: 9 (WebKit::NetworkCache::Cache::dumpContentsToFile): Use appendFixedPrecisionNumber. 10 * NetworkProcess/cache/NetworkCacheEntry.cpp: 11 (WebKit::NetworkCache::Entry::asJSON const): Ditto. 12 * Shared/Gamepad/GamepadData.cpp: 13 (WebKit::GamepadData::loggingString const): Ditto. 14 * UIProcess/WebPageProxy.cpp: 15 (WebKit::WebPageProxy::logDiagnosticMessageWithValue): Use numberToStringFixedPrecision. 16 1 17 2019-03-11 John Wilander <wilander@apple.com> 2 18 -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
r240437 r242713 550 550 epilogue.appendLiteral(",\n"); 551 551 epilogue.appendLiteral("\"averageWorth\": "); 552 epilogue.append Number(totals.count ? totals.worth / totals.count : 0);552 epilogue.appendFixedPrecisionNumber(totals.count ? totals.worth / totals.count : 0); 553 553 epilogue.appendLiteral("\n"); 554 554 epilogue.appendLiteral("}\n}\n"); -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp
r239671 r242713 220 220 json.appendLiteral(",\n"); 221 221 json.appendLiteral("\"worth\": "); 222 json.append Number(info.worth);222 json.appendFixedPrecisionNumber(info.worth); 223 223 json.appendLiteral(",\n"); 224 224 json.appendLiteral("\"partition\": "); … … 226 226 json.appendLiteral(",\n"); 227 227 json.appendLiteral("\"timestamp\": "); 228 json.append Number(m_timeStamp.secondsSinceEpoch().milliseconds());228 json.appendFixedPrecisionNumber(m_timeStamp.secondsSinceEpoch().milliseconds()); 229 229 json.appendLiteral(",\n"); 230 230 json.appendLiteral("\"URL\": "); -
trunk/Source/WebKit/Shared/Gamepad/GamepadData.cpp
r239427 r242713 101 101 builder.appendNumber(i); 102 102 builder.appendLiteral(": "); 103 builder.append Number(m_axisValues[i]);103 builder.appendFixedPrecisionNumber(m_axisValues[i]); 104 104 } 105 105 … … 109 109 builder.appendNumber(i); 110 110 builder.appendLiteral(": "); 111 builder.append Number(m_buttonValues[i]);111 builder.appendFixedPrecisionNumber(m_buttonValues[i]); 112 112 } 113 113 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r242705 r242713 6443 6443 return; 6444 6444 6445 effectiveClient->logDiagnosticMessageWithValue(this, message, description, String::number (value, significantFigures));6445 effectiveClient->logDiagnosticMessageWithValue(this, message, description, String::numberToStringFixedPrecision(value, significantFigures)); 6446 6446 } 6447 6447
Note:
See TracChangeset
for help on using the changeset viewer.