Description[builtins] Rewrite uri.js as builtin functions.
Rewrite decodeURI and decodeURIComponent as builtin functions
and install them in the bootstrapper.
Delete unused runtime functions:
- TruncateString
- NewString
- OneByteSeqStringGetChar
- OneByteSeqStringSetChar
- TwoByteSeqStringGetChar
- TwoByteSeqStringSetChar
Add regression test for decoding large strings. Clusterfuzz detected
a problem with %TruncateString, see
https://bugs.chromium.org/p/chromium/issues/detail?id=612109#c6
This is automatically fixed by this rewrite because %TruncateString
is deleted anyways.
Crude benchmark on 585 decodeURI and decodeURIComponent tests
averaged over five runs:
* builtin functions
real 0m9.69s
user 2m39.8816s
sys 0m12.6398s
* JS functions calling into the runtime e.g., for %TruncateString
real 0m11.0598s
user 3m6.7026s
sys 0m13.5756s
By running:
$ time tools/run-tests.py --arch=x64 --mode=Release --buildbot
test262/built-ins/decodeURI* mjsunit/uri
>>> Running tests for x64.Release
BUG=v8:4912, chromium:612109
R=yangguo@chromium.org, bmeurer@chromium.org
Committed: https://crrev.com/8c31bd81f2919aafb4d586f39aa729cdbff23c44
Cr-Commit-Position: refs/heads/master@{#36543}
Patch Set 1 #Patch Set 2 : Remove test for previously removed runtime function #Patch Set 3 : Rebase ToT and minor refactoring #Patch Set 4 : Add regression test for issue 612109 (detected by clusterfuzz) #Patch Set 5 : Formatting, Replace magic numbers with constants #Patch Set 6 : Fix bug with values that are too large #Patch Set 7 : Use Utf8::Encode() and ValueOf() #
Total comments: 10
Patch Set 8 : Address review comments #
Total comments: 23
Patch Set 9 : Fix more review comments #Patch Set 10 : Move new test 612109.js to regress/ #
Total comments: 6
Patch Set 11 : Another round of review changes #Patch Set 12 : Rebase #Patch Set 13 : Change order of decode/encode #Patch Set 14 : Rebase #Messages
Total messages: 28 (13 generated)
|