JavaScript:Compiler References: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(→SSA) |
||
(32 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== JIT == | == JIT == | ||
* [http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2010-how-to-compile-python-x86-assembly-the-python-way-3283367 PyCon 2010:How to Compile Python x86 Assembly, the Python Way (3h talk)] | |||
* [http://codespeak.net/pypy/extradoc/talk/icooolps2009/bolz-tracing-jit.pdf Tracing the meta-level: PyPy's tracing JIT compiler] | |||
* [http://people.mozilla.org/~gal/compressed.tracemonkey-pldi-09.pdf Trace-based Just-in-Time Type Specialization for Dynamic Languages] | |||
* [http://kryptoslogic.com/download/JIT_Mitigations.pdf JIT spraying and mitigations] | |||
* [http://wingolog.org/archives/2011/06/21/security-implications-of-jit-compilation security implications of jit compilation] | |||
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.78.1412&rep=rep1&type=pdf Fast, effective code generation in a just-in-time Java compiler] | |||
== SSA == | == SSA == | ||
Line 7: | Line 13: | ||
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.8877&rep=rep1&type=pdf Value numbering] | * [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.8877&rep=rep1&type=pdf Value numbering] | ||
* [http://www.christianwimmer.at/Publications/Wimmer10a/Wimmer10a.pdf Linear Scan Register Allocation on SSA Form] | * [http://www.christianwimmer.at/Publications/Wimmer10a/Wimmer10a.pdf Linear Scan Register Allocation on SSA Form] | ||
* [http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.45.4503&rep=rep1&type=pdf Single-Pass Generation of Static Single Assignment Form for Structured Languages] | |||
* http://llvm.cs.illinois.edu/~vadve/CS526/public_html/Papers/ | * http://llvm.cs.illinois.edu/~vadve/CS526/public_html/Papers/ | ||
Line 12: | Line 19: | ||
== VM == | == VM == | ||
* [http://www.lua.org/doc/jucs05.pdf The Implementation of Lua 5.0] | * [http://www.lua.org/doc/jucs05.pdf The Implementation of Lua 5.0] | ||
* Language-Independent Sandboxing of Just-In-Time Compilation and Self-Modifying Code (see http://groups.google.com/group/mozilla.dev.tech.js-engine.internals/browse_thread/thread/4a63ab71f6c50fce) | * Language-Independent Sandboxing of Just-In-Time Compilation and Self-Modifying Code (see http://groups.google.com/group/mozilla.dev.tech.js-engine.internals/browse_thread/thread/4a63ab71f6c50fce) | ||
* [http://www.usenix.org/events/woot10/tech/full_papers/Blazakis.pdf Interpreter Exploitation] | |||
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.4394&rep=rep1&type=pdf Representing type information in dynamically typed languages] | |||
* [http://evilpie.github.com/sayrer-fatval-backup/cache.aspx.htm Mozilla’s New JavaScript Value Representation] (NaN boxing, mirrored by me) | |||
* [http://wingolog.org/archives/2011/05/18/value-representation-in-javascript-implementations value-representation-in-javascript-implementations] | |||
* [http://www.cs.tcd.ie/David.Gregg/papers/Gregg-SoCP-2005.pdf The Case for Virtual Register Machines] | |||
* [http://db.usenix.org/events/vee05/full_papers/p153-yunhe.pdf Virtual Machine Showdown: Stack Versus Registers] | |||
* [http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=181EEF66EB411F4277C009A1D492CF75?doi=10.1.1.14.9450&rep=rep1&type=pdf Ropes: an Alternative to Strings] | |||
* [http://domino.research.ibm.com/library/cyberdig.nsf/papers/D08914EA5DED51398525739F000896EF/$File/RT0550.pdf Array Bounds Check Elimination Utilizing a Page Protection Mechanism] | |||
== Garbage Collection == | == Garbage Collection == | ||
* Waste Not, Want Not Resource-based Garbage Collection in a Shared Environment (see http://groups.google.com/group/mozilla.dev.tech.js-engine.internals/browse_thread/thread/4a63ab71f6c50fce) | * Waste Not, Want Not Resource-based Garbage Collection in a Shared Environment (see [http://groups.google.com/group/mozilla.dev.tech.js-engine.internals/browse_thread/thread/4a63ab71f6c50fce this post]) | ||
* [http://www.cs.utexas.edu/users/mckinley/395Tmm/talks/May-4-MMTk.ppt Myths & | * [http://www.cs.utexas.edu/users/mckinley/395Tmm/talks/May-4-MMTk.ppt Myths & Realities The Performance Impact of Garbage Collection] | ||
* [http://www.research.ibm.com/mre05/Click.pdf Pauseless GC in the Azul JVM] | |||
* [http://www.usenix.org/events/vee05/full_papers/p46-click.pdf The Pauseless GC Algorithm] | |||
* [http://www.iecc.com/gclist/GC-faq.html GC FAQ] | |||
* [http://blogs.msdn.com/b/abhinaba/archive/2009/01/25/back-to-basic-series-on-dynamic-memory-management.aspx Back to basic: Series on dynamic memory management] | |||
* [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.4370&rep=rep1&type=pdf A fast write barrier for generational garbage collectors] | |||
* [http://www.cs.kent.ac.uk/people/staff/rej/gc.html#Book Garbage Collection: algorithms for automatic dynamic memory management] (the definitive book on GC as of 1996) | |||
* [http://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795/#The Garbage Collection Handbook] (new GC book by Jones, Hosking and Moss, coming out at the end of August 2011) | |||
* [http://www.cse.nd.edu/~dthain/courses/cse40243/spring2006/gc-survey.pdf Uniprocessor Garbage Collection Techniques] | |||
== Assembly == | |||
* [http://www.agner.org/optimize/optimizing_assembly.pdf Optimizing subroutines in assembly language] | |||
* [http://www.agner.org/optimize/microarchitecture.pdf The microarchitecture of Intel, AMD and VIA CPUs An optimization guide for assembly programmers and compiler makers] | |||
* [https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF7785256996007558C6/$file/cwg.pdf The PowerPC Compiler Writer’s Guide] | |||
== Other == | |||
* [http://www.cs.usfca.edu/~galles/compilerdesign/ Modern Compiler Design] | |||
* http://www.hackersdelight.org/ | |||
* http://reddit.com/r/compilers |
Latest revision as of 23:14, 7 October 2011
JIT
- PyCon 2010:How to Compile Python x86 Assembly, the Python Way (3h talk)
- Tracing the meta-level: PyPy's tracing JIT compiler
- Trace-based Just-in-Time Type Specialization for Dynamic Languages
- JIT spraying and mitigations
- security implications of jit compilation
- Fast, effective code generation in a just-in-time Java compiler
SSA
- SSA-based Compiler Design Book
- SCC-Based Value Numbering
- Efficiently Computing Static Single Assignment Form and the Control Dependence Graph
- Value numbering
- Linear Scan Register Allocation on SSA Form
- Single-Pass Generation of Static Single Assignment Form for Structured Languages
VM
- The Implementation of Lua 5.0
- Language-Independent Sandboxing of Just-In-Time Compilation and Self-Modifying Code (see http://groups.google.com/group/mozilla.dev.tech.js-engine.internals/browse_thread/thread/4a63ab71f6c50fce)
- Interpreter Exploitation
- Representing type information in dynamically typed languages
- Mozilla’s New JavaScript Value Representation (NaN boxing, mirrored by me)
- value-representation-in-javascript-implementations
- The Case for Virtual Register Machines
- Virtual Machine Showdown: Stack Versus Registers
- Ropes: an Alternative to Strings
- Array Bounds Check Elimination Utilizing a Page Protection Mechanism
Garbage Collection
- Waste Not, Want Not Resource-based Garbage Collection in a Shared Environment (see this post)
- Myths & Realities The Performance Impact of Garbage Collection
- Pauseless GC in the Azul JVM
- The Pauseless GC Algorithm
- GC FAQ
- Back to basic: Series on dynamic memory management
- A fast write barrier for generational garbage collectors
- Garbage Collection: algorithms for automatic dynamic memory management (the definitive book on GC as of 1996)
- Garbage Collection Handbook (new GC book by Jones, Hosking and Moss, coming out at the end of August 2011)
- Uniprocessor Garbage Collection Techniques
Assembly
- Optimizing subroutines in assembly language
- The microarchitecture of Intel, AMD and VIA CPUs An optimization guide for assembly programmers and compiler makers
- The PowerPC Compiler Writer’s Guide