• franzih's avatar
    [builtins] Rewrite uri.js as builtin functions. · 8c31bd81
    franzih authored
    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
    
    Review-Url: https://codereview.chromium.org/1994733003
    Cr-Commit-Position: refs/heads/master@{#36543}
    8c31bd81
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
fuzzer Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
ignition.gyp Loading commit data...
ignition.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...