Trace tree
Appearance
A trace tree is a data structure that is used in the runtime compilation of programming code. Trace trees are used in a type of 'just in time compiler' that traces code executing during hotspots and compiles it. When those hotspots are entered again the compiled code is run instead. It traces each statement executed, including within other function calls, and this entire execution path is compiled. This is different from compiling individual functions. The compiler can gain more information for the optimizer to operate on, and remove some of the overhead of the calls. Anytime the compiled code makes a call to code that has not been jitted, the interpreter is called to continue.
References
- Bala, Vasanth; Duesterwald, Evelyn; Banerjia, Sanjeev (June 1999), Transparent Dynamic Optimization: The Design and Implementation of Dynamo
{{citation}}
: CS1 maint: date and year (link)
- Gal, Andreas; Franz, Michael (November 2006), Incremental Dynamic Code Generation with Trace Trees (PDF)
{{citation}}
: External link in
(help); Unknown parameter|url2=
|url2=
ignored (help)CS1 maint: date and year (link) - Gal, Andreas; Bebenita, Michael; Chang, Mason; Franz, Michael (October 2007), Making the Compilation “Pipeline” Explicit: Dynamic Compilation Using Trace Tree Serialization (PDF)
{{citation}}
: CS1 maint: date and year (link) - Double, Chris (February 2008), Quick Introduction to Tamarin Tracing
{{citation}}
: CS1 maint: date and year (link) - Chang, Mason (January 12, 2009), The Difference Between Extended Basic Blocks and Traces
{{citation}}
: CS1 maint: date and year (link)
- Bolz, Carl Friedrich (March 2, 2009), PyPy Blog: Applying a Tracing JIT to an Interpreter
{{citation}}
: CS1 maint: date and year (link)