Overview
Explore the intricacies of translating Dart to efficient JavaScript in this 58-minute conference talk from GOTO Aarhus 2012. Dive into the Dart programming language, its deployment options, and the challenges of optimizing Dart-to-JavaScript compilation. Learn about the compiler's goals, intermediate representations, and various optimization techniques including tree shaking, global value numbering, and speculative optimizations. Discover how user-definable operators, compact class definitions, and closures are handled in the compilation process. Examine the performance implications and code size considerations when converting Dart to JavaScript. Gain insights into the SSA representation, dominator trees, and profile-guided optimizations used to bridge the gap between Dart's low-level operators and JavaScript's built-in primitives.
Syllabus
Introduction
What is Dart?
Dart execution and deployment
Dart-to-JavaScript compiler goals
Example: What's the point?
Code after tree shaking
User-definable operators
Compiled JavaScript code
Compact class definitions
Closures
Source code in Dart
Intermediate representations
SSA: Basic block graph
SSA: Dominator tree
Global value numbering 1
Global value numbering algorithm
Speculative optimizations
Profile guided optimizations
Dealing with control flow
Code size
Performance
Conclusions
Taught by
GOTO Conferences