How the JVM compiles bytecode into machine code
HTML-код
- Опубликовано: 12 сен 2024
- Here is a talk on how two completely different compilers (C2 and JRockit) compile JVM bytecode into machine code.
Enjoy! (Click "Show More" below for the list of contents!)
Fredrik Öhrström
0:0 Intro
1:30 The stack frame and the hardware stack
3:37 Bytecode to high level intermediate representation
5:00 Two ways of implementing the intermediate representation (IR)
9:20 Single Static Assignment (SSA) form
11:05 Rewriting the IR in place
11:50 Register allocation
12:45 Example 1: Jrockit
17:00 phi (join) nodes
18:40 Example 1: C2
21:14 Ctrl flow and data flow
23:00 Example 2: profile says: do not inline
25:02 Example 3: profile says: do inline
28:00 Example 3: C2
28:20 C2 has two different ways of inlining
29:35 Example 4: Remove allocations
33:30 Clean memory access
34:12 Localize objects
34:50 Deadcode elimination
35:20 Example 4: C2
36:20 Example 5: Cold code
37:22 Example 5: C2
38:00 The common un-common trap
41:27 Example 6: inlining galore
46:40 Example 6: C2
47:18 Example 7: Boxing removal
48:40 Lets do performance testing...
51:40 Conclusions
I didn't understand anything, but it's quite interesting! Thank you!
In Scandinavia, they don't have servers, they have 'sorvers'.