• jarin's avatar
    [turbofan] Fix lazy deopt for JSToNumber conversions in binary operations. · 6f559b7e
    jarin authored
    This slightly hacky change provides lazy deopt points for to-number conversions in binops: When we deopt from a to-number conversion, we create a frame state with the already-converted value(s) so that we do not repeat the side effect of the conversion.
    
    Embenchen numbers are below. It is not quite clear what happened to fasta - the hot code looks nearly identical.
    
    Current: EmbenchenBox2d(RunTime): 12746 ms.
    d8-master: EmbenchenBox2d(RunTime): 13861 ms.
    ----------- bullet.js
    Current: EmbenchenBullet(RunTime): 17680 ms.
    d8-master: EmbenchenBullet(RunTime): 19170 ms.
    ----------- copy.js
    Current: EmbenchenCopy(RunTime): 4939 ms.
    d8-master: EmbenchenCopy(RunTime): 4943 ms.
    ----------- corrections.js
    Current: EmbenchenCorrections(RunTime): 6639 ms.
    d8-master: EmbenchenCorrections(RunTime): 6728 ms.
    ----------- fannkuch.js
    Current: EmbenchenFannkuch(RunTime): 4630 ms.
    d8-master: EmbenchenFannkuch(RunTime): 4872 ms.
    ----------- fasta.js
    Current: EmbenchenFasta(RunTime): 10209 ms.
    d8-master: EmbenchenFasta(RunTime): 9673 ms.
    ----------- lua_binarytrees.js
    Current: EmbenchenLuaBinaryTrees(RunTime): 12936 ms.
    d8-master: EmbenchenLuaBinaryTrees(RunTime): 15529 ms.
    ----------- memops.js
    Current: EmbenchenMemOps(RunTime): 7357 ms.
    d8-master: EmbenchenMemOps(RunTime): 7340 ms.
    ----------- primes.js
    Current: EmbenchenPrimes(RunTime): 7530 ms.
    d8-master: EmbenchenPrimes(RunTime): 7457 ms.
    ----------- skinning.js
    Current: EmbenchenSkinning(RunTime): 15832 ms.
    d8-master: EmbenchenSkinning(RunTime): 15630 ms.
    ----------- zlib.js
    Current: EmbenchenZLib(RunTime): 11176 ms.
    d8-master: EmbenchenZLib(RunTime): 11324 ms.
    
    BUG=
    
    Review URL: https://codereview.chromium.org/985713003
    
    Cr-Commit-Position: refs/heads/master@{#27071}
    6f559b7e
deopt-tonumber-binop.js 761 Bytes