Confirmed users
156
edits
mNo edit summary |
mNo edit summary |
||
| Line 37: | Line 37: | ||
*[[IonMonkey/Frames]] | *[[IonMonkey/Frames]] | ||
*[[IonMonkey/Bailouts]] | *[[IonMonkey/Bailouts]] | ||
=File Layout= | |||
All IonMonkey files are contained in <tt>js/src/ion</tt>. The entry point is <tt>ion/Ion.cpp</tt>, which mostly contains random assorted small functions. The rest is: | |||
*Helpers: | |||
**BitSet.* - An efficient arbitrary-size bitset implementaton. | |||
**C1Spewer.* - Spew for the C1 visualizer. | |||
**FixedArityList.h - Template for declaring fixed-length vectors. | |||
**InlineList.h - Templates for threading linked lists through objects. | |||
**IonAllocPolicy.h - IonMonkey's pool-based allocator. | |||
**IonSpewer.* - Debug spew helpers. | |||
**JSONSpewer.* - Debug spew in JSON form. | |||
*Data Structures: | |||
**IonCode.h - Declaration for IonCode, IonScript. | |||
**IonCompartment.h - Declaration for IonCompartment.h. | |||
**IonFrames.h - Layout of Ion frames. | |||
*MIR Generation: | |||
**IonBuilder.* - Translation from bytecode to MIR. | |||
**MIR.* - MIR class and instruction hierarchy. | |||
**MIRGenerator.h - Not really anything, this should be renamed. | |||
**MIRGraph.* - Control flow graph and basic blocks. | |||
**MOpcodes.h - MIR opcodes. | |||
*Analyses: | |||
**IonAnalysis.cpp - Small, assorted analysis passes. | |||
**LICM.* - Loop-invariant code motion. | |||
**TypeOracle.h - Interface for type oracles. | |||
**TypePolicy.* - Rules for how MIR is specialized and how conversions are inserted. | |||
**ValueNumbering.* - Global value numbering. | |||
*LIR Generation: | |||
**Lowering.* - Entry point to LIR generation. Contains LIRGenerator. | |||
**IonLIR.* - Interfaces for LIR instructions and their inputs, as well as LIR blocks and graphs. | |||
**LIR-Common.* - LIR instructions shared by all platforms. | |||
**LOpcodes.* - LIR opcodes shared by all platforms. | |||
***shared/Lowering-x86-shared.* - LIR generation that is shared between x86 and x64. | |||
***x86/Lowering-x86.* - LIR generation specific to x86. | |||
***x86/LIR-x86.h - LIR instructions specific to x86. | |||
***x86/LOpcodes-x86.h - LIR opcodes specific to x86. | |||
***x64/Lowering-x64.* - LIR generation specific to x64. | |||
***x64/LIR-x64.h - LIR instructions specific to x64. | |||
***x64/LOpcodes-x64.h - LIR opcodes specific to x64. | |||