Title: [214781] releases/WebKitGTK/webkit-2.16
- Revision
- 214781
- Author
- carlo...@webkit.org
- Date
- 2017-04-03 06:00:16 -0700 (Mon, 03 Apr 2017)
Log Message
Merge r214272 - [JSC] Use jsNontrivialString for Number toString operations
https://bugs.webkit.org/show_bug.cgi?id=169965
Reviewed by Mark Lam.
JSTests:
* stress/to-string-int32.js: Added.
(shouldBe):
(toString10):
(expected):
Source/_javascript_Core:
After single character check, produced string is always longer than 1.
Thus, we can use jsNontrivialString.
* runtime/NumberPrototype.cpp:
(JSC::int32ToStringInternal):
Modified Paths
Added Paths
Diff
Modified: releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog (214780 => 214781)
--- releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog 2017-04-03 12:59:28 UTC (rev 214780)
+++ releases/WebKitGTK/webkit-2.16/JSTests/ChangeLog 2017-04-03 13:00:16 UTC (rev 214781)
@@ -1,3 +1,15 @@
+2017-03-22 Yusuke Suzuki <utatane....@gmail.com>
+
+ [JSC] Use jsNontrivialString for Number toString operations
+ https://bugs.webkit.org/show_bug.cgi?id=169965
+
+ Reviewed by Mark Lam.
+
+ * stress/to-string-int32.js: Added.
+ (shouldBe):
+ (toString10):
+ (expected):
+
2017-03-21 Yusuke Suzuki <utatane....@gmail.com>
[JSC] Optimize Number.prototype.toString on Int32 / Int52 / Double
Added: releases/WebKitGTK/webkit-2.16/JSTests/stress/to-string-int32.js (0 => 214781)
--- releases/WebKitGTK/webkit-2.16/JSTests/stress/to-string-int32.js (rev 0)
+++ releases/WebKitGTK/webkit-2.16/JSTests/stress/to-string-int32.js 2017-04-03 13:00:16 UTC (rev 214781)
@@ -0,0 +1,59 @@
+function shouldBe(actual, expected)
+{
+ if (actual !== expected)
+ throw new Error(`bad value: expected:(${expected}),actual:(${actual})`);
+}
+
+function toString(value, radix)
+{
+ return value.toString(radix);
+}
+noInline(toString);
+
+function toString10(value)
+{
+ return `${value}`;
+}
+noInline(toString10);
+
+function expected(num, radix)
+{
+ let characters = "0123456789abcdefghijklmnopqrstuvwxyz";
+ let result = "";
+ let negative = false;
+ if (num < 0) {
+ negative = true;
+ num = -num;
+ }
+
+ do {
+ const index = num % radix;
+ result = characters[index] + result;
+ num = (num - index) / radix;
+ } while (num);
+
+ if (negative)
+ return '-' + result;
+ return result;
+}
+
+for (var i = 0; i < 1e4; ++i) {
+ toString(i, 10);
+ toString(i, 36);
+ toString10(i);
+}
+
+for (var radix = 2; radix < 37; ++radix) {
+ for (var lessThanRadix = -2000; lessThanRadix < radix; ++lessThanRadix)
+ shouldBe(toString(lessThanRadix, radix), expected(lessThanRadix, radix));
+ for (var greaterThanRadix = radix; greaterThanRadix < 2000; ++greaterThanRadix)
+ shouldBe(toString(greaterThanRadix, radix), expected(greaterThanRadix, radix));
+}
+
+{
+ var radix = 10;
+ for (var lessThanRadix = -2000; lessThanRadix < radix; ++lessThanRadix)
+ shouldBe(toString10(lessThanRadix), expected(lessThanRadix, radix));
+ for (var greaterThanRadix = radix; greaterThanRadix < 2000; ++greaterThanRadix)
+ shouldBe(toString10(greaterThanRadix), expected(greaterThanRadix, radix));
+}
Modified: releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog (214780 => 214781)
--- releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog 2017-04-03 12:59:28 UTC (rev 214780)
+++ releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/ChangeLog 2017-04-03 13:00:16 UTC (rev 214781)
@@ -1,3 +1,16 @@
+2017-03-22 Yusuke Suzuki <utatane....@gmail.com>
+
+ [JSC] Use jsNontrivialString for Number toString operations
+ https://bugs.webkit.org/show_bug.cgi?id=169965
+
+ Reviewed by Mark Lam.
+
+ After single character check, produced string is always longer than 1.
+ Thus, we can use jsNontrivialString.
+
+ * runtime/NumberPrototype.cpp:
+ (JSC::int32ToStringInternal):
+
2017-03-21 Mark Lam <mark....@apple.com>
The DFG Integer Check Combining phase should force an OSR exit for CheckInBounds on a negative constant min bound.
Modified: releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/NumberPrototype.cpp (214780 => 214781)
--- releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/NumberPrototype.cpp 2017-04-03 12:59:28 UTC (rev 214780)
+++ releases/WebKitGTK/webkit-2.16/Source/_javascript_Core/runtime/NumberPrototype.cpp 2017-04-03 13:00:16 UTC (rev 214781)
@@ -499,7 +499,7 @@
return radix;
}
-static inline JSString* int32ToStringInternal(VM& vm, int32_t value, int32_t radix)
+static ALWAYS_INLINE JSString* int32ToStringInternal(VM& vm, int32_t value, int32_t radix)
{
ASSERT(!(radix < 2 || radix > 36));
// A negative value casted to unsigned would be bigger than 36 (the max radix).
@@ -509,11 +509,10 @@
return vm.smallStrings.singleCharacterString(radixDigits[value]);
}
- if (radix == 10) {
- return jsString(&vm, vm.numericStrings.add(value));
- }
+ if (radix == 10)
+ return jsNontrivialString(&vm, vm.numericStrings.add(value));
- return jsString(&vm, toStringWithRadix(value, radix));
+ return jsNontrivialString(&vm, toStringWithRadix(value, radix));
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes