Changes between Initial Version and Version 1 of TheStateofJSC2019


Ignore:
Timestamp:
Nov 1, 2019 3:59:26 PM (3 years ago)
Author:
Ross Kirsling
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TheStateofJSC2019

    v1 v1  
     1by Saam Barati, Michael Saboff, Tadeu Zagallo, Yusuke Suzuki, Robin Morisset
     2
     3== Now:
     4
     5- New Bytecode
     6  - reduced bytecode size by 65%
     7  - 12-13% less memory usage on a page like Facebook
     8  - can be cached (not being done in Safari yet)
     9
     10- JetStream 2
     11  - join JS benchmarks together into a single suite (JetStream 1, ARES-6, RexBench, ...)
     12  - 64 subtests emphasizing startup perf, peak throughput perf, worst-case perf
     13
     14- RAMification
     15  - memory benchmark for JS
     16  - leverages JetStream 2 tests, measures peak & current usage
     17
     18- ExecState -> GlobalObject refactor
     19  - less error prone; most cases that were passing call frames didn't really need to be
     20  - prereq for IsoSubspace work
     21
     22- WASM Interpreter
     23  - improves startup time (3x), neutral on throughput
     24  - perf is now similar to V8 / SM
     25
     26- Fuzz Zero
     27  - improve security & stability by fuzzing
     28  - fix all bugs and allow no regressions
     29
     30== 2020+:
     31
     32- BigInt
     33  - ship
     34  - JIT improvements
     35  - new benchmark
     36
     37- Turbo DFG:
     38  - vs. llint: baseline 2x, DFG 11x, FTL 17x
     39  - DFG does not impact page load tests
     40  - version of DFG that's less optimized but quicker to compile may help
     41
     42- Fast for-of:
     43  - as fast as old-school for!
     44  - involves inline caching for next iteration
     45
     46- IsoHeap Everything
     47  - allocate like types together, prevent type confusion attacks
     48  - do this for all JSObjects
     49  - avoid memory/perf regression
     50
     51- Software Verified JIT
     52  - constrain where calls/jumps go
     53  - create a whitelist for far calls
     54  - known near calls (e.g. for slow paths) can be whitelisted too
     55  - pointer authentication