Главная
Study mode:
on
1
Intro
2
JOA EBERT JVM/IS
3
aot vs jit
4
different optimizations
5
OPTIMISTIC ASSUMPTIONS
6
DEOPTIMIZATIONS
7
CLASSLOADER SUPPORT
8
workers RUN COSTLY OPTIMIZATIONS IN BACKGROUND
9
browser concentrates on user code
10
java is statically typed
11
we have a tracing compiler
12
scales across platforms
13
LABELED BLOCKS CONSIDERED EVIL!!11!
14
#SEMANTICS
15
impl jvm semantics for js
16
don't add too much overhead
17
class initializer
18
instance initialization
19
numerics
20
SIMPLIFY SIMPLIFY SIMPLIFY
21
10fps difference in v8
22
prototype voodoo
23
undefined === null //?
24
5x in firefox for richards benchmark
25
MORAL OF THE STORY?
26
should mimic
27
cleanup and simplify
28
take shortcuts
29
ABuse what's available
30
test and measure
31
MEASURE!
32
#OPTIMIZER
33
which one to use?
34
blink, servo, firefox ...
35
spec bugs & inconsistencies
36
always check for types
37
#DISPLAYLIST
38
optimize based on heuristic
39
cache vertices and culling information
40
COMANCHE
41
HEISENBERG
Description:
Explore the intricacies of compiling Java bytecode to JavaScript in this JSConf EU 2015 talk by Joa Ebert. Delve into the differences between JSVMs and their performance implications, examine the state of WebIDL and its significance, and uncover the relationship between types and optimizing compilers in AOT compilation. Learn about self-optimizing display lists, WebGL, and the WebAudio API in real-world applications. Gain insights into optimistic assumptions, deoptimizations, classloader support, and the benefits of running costly optimizations in the background. Discover the importance of simplifying JVM semantics for JavaScript, optimizing numeric operations, and the impact of prototype manipulation on performance across different browsers. Understand the significance of testing, measuring, and adapting to various browser optimizers. Explore techniques for optimizing display lists based on heuristics and caching vertices and culling information.

Compiling Java Bytecode to JavaScript - An Interesting Problem

JSConf
Add to list
0:00 / 0:00