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
On this page of the site you can watch the video online How the JVM compiles bytecode into machine code with a duration of hours minute second in good quality, which was uploaded by the user Teach Yourself Basic 03 December 2016, share the link with friends and acquaintances, this video has already been watched 6,640 times on youtube and it was liked by 130 viewers. Enjoy your viewing!