![Page 1: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/1.jpg)
LLVM IR IN GRAALVM:MULTI-LEVEL, POLYGLOTDEBUGGING WITH SULONG
Jacob Kreindl
2019 European LLVM Developers’ Meeting, April 8-9, 2019
![Page 2: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/2.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
![Page 3: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/3.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
![Page 4: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/4.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
![Page 5: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/5.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
![Page 6: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/6.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
![Page 7: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/7.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
![Page 8: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/8.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
Debuggers for
Native Code
![Page 9: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/9.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
Debuggers for
Native Code
![Page 10: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/10.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
Debuggers for
Native Code
![Page 11: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/11.jpg)
MOTIVATION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 2
LLVM IR
Binary
Debuggers for
Dynamic Languages
Debuggers for
Native Code
![Page 12: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/12.jpg)
GRAALVM
April 9, 2019 Jacob Kreindl, EuroLLVM’19 3
LLVM IR
![Page 13: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/13.jpg)
GRAALVM
April 9, 2019 Jacob Kreindl, EuroLLVM’19 3
LLVM IR
Execute & Debug
![Page 14: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/14.jpg)
GRAALVM
April 9, 2019 Jacob Kreindl, EuroLLVM’19 3
LLVM IR
Execute & Debug
Execute
![Page 15: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/15.jpg)
GRAALVM
April 9, 2019 Jacob Kreindl, EuroLLVM’19 3
LLVM IR
Execute & Debug
Execute & Debug
Debug
![Page 16: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/16.jpg)
GRAALVM FOR DYNAMIC LANGUAGES
April 9, 2019 Jacob Kreindl, EuroLLVM’19 4
![Page 17: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/17.jpg)
GRAALVM FOR DYNAMIC LANGUAGES
April 9, 2019 Jacob Kreindl, EuroLLVM’19 4
Language
Front-End
Language
Front-End
Language
Front-End
![Page 18: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/18.jpg)
GRAALVM FOR DYNAMIC LANGUAGES
April 9, 2019 Jacob Kreindl, EuroLLVM’19 4
Language
Front-End
Language
Front-End
Language
Front-EndLanguage-Agnostic
AST
op1
op2 if
elsethen
op3 op4
Source
Location
![Page 19: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/19.jpg)
GRAALVM FOR DYNAMIC LANGUAGES
April 9, 2019 Jacob Kreindl, EuroLLVM’19 4
Debugger
Back-End
Chrome
Debugger
Netbeans
Debugger
Other
Front-Ends
Language
Front-End
Language
Front-End
Language
Front-EndLanguage-Agnostic
AST
op1
op2 if
elsethen
op3 op4
Source
Location
![Page 20: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/20.jpg)
SULONG – THE LLI IN GRAALVM
April 9, 2019 Jacob Kreindl, EuroLLVM’19 5
LLVM-IR
LLVM Front-End
(Clang, Dragonegg, …)
Sulong
Language-Agnostic
AST (IR-Level)
block
phi %8 store
42getelementptr
%1 4
Debugger
Back-End
![Page 21: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/21.jpg)
SOURCE-LEVEL DEBUGGING WITH SULONG
April 9, 2019 Jacob Kreindl, EuroLLVM’19 6
LLVM-IR Sulong
Language-Agnostic
AST (IR-Level)
+ Run-Time Debug Information
(Source-Level)
LLVM Front-End
(Clang, Dragonegg, …)
Debugger
Back-Endwith Debug
Information+ DebugInfo
Parser
block
phi %8 store
42getelementptr
%1 4
Scope &
LocationValue Tracking
(@llvm.dbg.*) Abstraction to
Source-Level
![Page 22: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/22.jpg)
DEBUGGING NATIVE EXTENSIONS OF DYNAMIC LANGUAGE PROGRAMS
April 9, 2019 Jacob Kreindl, EuroLLVM’19 7
Ruby Program
+ Native Extension
![Page 23: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/23.jpg)
DEBUGGING NATIVE EXTENSIONS OF DYNAMIC LANGUAGE PROGRAMS
April 9, 2019 Jacob Kreindl, EuroLLVM’19 7
One AST
built from multiple language front-ends
LLVM
IR
Ruby Program
+ Native Extension
![Page 24: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/24.jpg)
DEBUGGING NATIVE EXTENSIONS OF DYNAMIC LANGUAGE PROGRAMS
April 9, 2019 Jacob Kreindl, EuroLLVM’19 7
GraalVM
Debugger
Back-End
One AST
built from multiple language front-ends
LLVM
IR
Ruby Program
+ Native Extension
![Page 25: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/25.jpg)
Debugging a C-Extension for a Ruby Program with Sulong/TruffleRuby
DEMO
![Page 26: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/26.jpg)
IR-LEVEL DEBUGGING WITH SULONG
April 9, 2019 Jacob Kreindl, EuroLLVM’19 9
LLVM-IR Sulong
Language-Agnostic
Program Representation
+ Run-Time Debug Information
LLVM Front-End
(Clang, Dragonegg, …)
Debugger
Back-End
+ .ll Parser
op1
op2 if
elsethen
op3 op4
Location
in ll-File
Abstraction to
IR-Level
.bc + .ll File
![Page 27: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/27.jpg)
MEMORY ACCESS IN SULONG
April 9, 2019 Jacob Kreindl, EuroLLVM’19 10
![Page 28: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/28.jpg)
MEMORY ACCESS IN SULONG
Native Mode
All allocations on the native heap
Using java.lang.Unsafe
Accessing illegal memory leads to
Segfault
April 9, 2019 Jacob Kreindl, EuroLLVM’19 10
{ i32, i32 }* 0x00abcdef
42 84
may not be
allocated
![Page 29: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/29.jpg)
MEMORY ACCESS IN SULONG
Native Mode
All allocations on the native heap
Using java.lang.Unsafe
Accessing illegal memory leads to
Segfault
Sandboxed Mode
All allocations as Java objects
Only in GraalVM Enterprise Edition
Guaranteed memory safety
April 9, 2019 Jacob Kreindl, EuroLLVM’19 10
{ i32, i32 }* 0x00abcdef
42 84
{ i32, i32 }* <managed>
{ i32, i32 } <managed>
i32 42
i32 84
may not be
allocated
Always safe
to access
![Page 30: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/30.jpg)
Debugging & Tracing a C-Program at IR-Level with Managed Sulong
DEMO
![Page 31: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/31.jpg)
YOU CAN TRY IT YOURSELF
Download GraalVM at https://www.graalvm.org/
GraalVM Community Edition is Open Source: https://github.com/oracle/graal
April 9, 2019 Jacob Kreindl, EuroLLVM’19 12
![Page 32: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/32.jpg)
IN CONCLUSION
April 9, 2019 Jacob Kreindl, EuroLLVM’19 13
Execute & Debug
LLVM IR
![Page 33: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/33.jpg)
IN CONCLUSION
Same Debugger Front-End
for all Languages
April 9, 2019 Jacob Kreindl, EuroLLVM’19 13
Execute & Debug
LLVM IR
![Page 34: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/34.jpg)
IN CONCLUSION
Same Debugger Front-End
for all Languages
Source-Level Stepping & Breakpoints
April 9, 2019 Jacob Kreindl, EuroLLVM’19 13
Execute & Debug
LLVM IR
![Page 35: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/35.jpg)
IN CONCLUSION
Same Debugger Front-End
for all Languages
Source-Level Stepping & Breakpoints
Cross-Language Symbol Inspection
April 9, 2019 Jacob Kreindl, EuroLLVM’19 13
Execute & Debug
LLVM IR
![Page 36: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/36.jpg)
IN CONCLUSION
Same Debugger Front-End
for all Languages
Source-Level Stepping & Breakpoints
Cross-Language Symbol Inspection
IR-Level Debugging
April 9, 2019 Jacob Kreindl, EuroLLVM’19 13
Execute & Debug
LLVM IR
![Page 37: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/37.jpg)
![Page 38: LLVM IR IN GRAALVM: MULTI-LEVEL, POLYGLOT DEBUGGING …llvm.org/devmtg/2019-04/slides/TechTalk-Kreindl-LLVM_IR... · 2019-10-30 · April 9, 2019 Jacob Kreindl, EuroLLVM’19 15 Truffle](https://reader033.vdocuments.mx/reader033/viewer/2022042114/5e917ce06fbff5345b505a16/html5/thumbnails/38.jpg)
SYSTEM OVERVIEW
April 9, 2019 Jacob Kreindl, EuroLLVM’19 15
Truffle
JVM + Graal
GraalVM
Interpreter for Dynamic Language(TruffleRuby, GraalPython,
Code in Dynamic Language(Ruby, Python,
Sulong
LLVM-IR+ Debug Information
Native Extension(C/C++, Fortran,
Truffle Debugger
Chrome Debugger