• 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
bootstrapper.cc 158 KB