Changes between Initial Version and Version 1 of StateofJSC2016


Ignore:
Timestamp:
Oct 26, 2016 1:15:52 PM (5 years ago)
Author:
Jon Davis
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • StateofJSC2016

    v1 v1  
     1= The State of JSC =
     2
     3- Moved from LLVM to B3/Air
     4        - Transition is complete
     5        - FTL Jit in 64-bit platforms
     6        - Big Jetstream improvements
     7        - Big Kraken improvements
     8
     9- Moved from Tracing to Sampling profiler
     10        - Performance is an order of magnitude better in Web Inspector
     11        - 10-20x faster with the sampling profiler
     12
     13- ES6 Feature Complete
     14        - Block Scoping
     15        - Generator Functions
     16
     17- Current work
     18        - ES6 Sample Bench
     19                - Fast Generators
     20                - Fast Map/Set
     21                - gotten 20% faster
     22                - Runs 2 different tests
     23                - Takes geometric mean of tests
     24                - Steady state
     25        - Concurrent Garbage Collection
     26                - Gonna mean pauses in JSC
     27                - Pauses won’t be nearly as long
     28                - Execute JS during GC
     29                - There will be points where you pause the world but it won’t be in high milliseconds
     30        - Working on WebAssembly
     31                - It’s being implemented
     32        - DOM JIT
     33                - Creating an abstraction for the JSC for operations on the DOM
     34                - Be aware of getter accessors of being compiled
     35        - Integrating ES6 Modules in HTML
     36                - <script type=“module”>
     37        - Almost done ES2017
     38                - Support everything buy async/await
     39                - Patches on async/await
     40
     41        - Demo of command line:
     42                - `./Tools/Scripts/run-jsc —release —sample ~/test.js`
     43                - Shows sampling rate
     44                - and the hottest byte code samples
     45                - The hash identifies the code blocks and just
     46                - These tools would be nice for WebContent process
     47                        - Too difficult to use with the sample profiles
     48                - Would be cool to add byte code information in inspector
     49                - At a high level a Heat Map would be nice (being worked on)
     50                - If it is in inspector, it can impact performance and throw off the profile
     51                - `JSC_dumpDFGDisassembly=1 ./Tools/Scripts/run-jsc —release —sample ~/test.js`
     52
     53        - How to async/await
     54                - async func with await is a shorthand for promises
     55                - await automatically wraps the given function in a Promise and returns the promise
     56
     57        - WebAssembly
     58                - Work is underway
     59                - There is a trapping semantic in WebAssembly
     60                - Cant export a function that takes 64-bit integer
     61                - Internally in WebAssembly you can handle 64-bit integers
     62                - You have to check that the memory is in bounds, if not then you have to unwind the webassembly
     63                - Does the exception flatten the webassembly?
     64                        - The plan is to have each WebAssembly frame visible
     65                - You can have import and export in WebAssembly to call from WebAssembly to JS
     66                - Developers would likely have WebAssembly that calls to a JS helper to modify DOM since you can’t modify the DOM from WebAssembly
     67                - There is a lot of debate still happening
     68                - You can use the JS GC for whatever language your using
     69                - How fast is WebAssembly?
     70                        - Significantly faster for common cases of compiling C code
     71                        - WASM is quite slow compared to native codes
     72                        - WebAssembly has more info about how things work that allow for more optimizations
     73                        - Close to native performance
     74                - How do I compile to WebAssembly?
     75                        - Compile through clang, that pass it to LLVM IR then pass it back to WebAssembly
     76                        - It will likely get easier as tools are created