| | 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 |