IonMonkey/MIR: Difference between revisions

Jump to navigation Jump to search
No change in size ,  20 October 2016
no edit summary
No edit summary
 
Line 14: Line 14:
=Control-Flow Graphs=
=Control-Flow Graphs=


''Found in: <tt>ion/MIRGraph.*</tt>
''Found in: <tt>jit/MIRGraph.*</tt>


The control-flow graph for MIR is represented via basic blocks (<tt>MBasicBlock</tt>). Basic blocks are collected in a <tt>MIRGraph</tt>, in reverse postorder.  
The control-flow graph for MIR is represented via basic blocks (<tt>MBasicBlock</tt>). Basic blocks are collected in a <tt>MIRGraph</tt>, in reverse postorder.  
Line 31: Line 31:
=MIR Nodes=
=MIR Nodes=


''Found in: <tt>ion/MIR.*</tt>
''Found in: <tt>jit/MIR.*</tt>


MIR objects are organized into the following class hierarchy:
MIR objects are organized into the following class hierarchy:
Line 53: Line 53:
=Building MIR=
=Building MIR=


''Found in: <tt>ion/IonBuilder.*</tt>''
''Found in: <tt>jit/IonBuilder.*</tt>''


==Parsing Bytecode==
==Parsing Bytecode==
Line 99: Line 99:
==Graph Fixups==
==Graph Fixups==


''Found in: <tt>ion/IonAnalysis.*</tt>''
''Found in: <tt>jit/IonAnalysis.*</tt>''


After building MIR, a few passes are run to make the graph suitable for future analyses and optimizations:
After building MIR, a few passes are run to make the graph suitable for future analyses and optimizations:
Line 122: Line 122:
==Respecialization==
==Respecialization==


''Found in: <tt>ion/IonAnalysis.cpp, ion/TypePolicy.*</tt>''
''Found in: <tt>jit/IonAnalysis.cpp, jit/TypePolicy.*</tt>''


After MIR is built, each instruction is analyzed in postorder. If the instruction exposes a <tt>TypePolicy</tt>, it is asked to perform two tasks:
After MIR is built, each instruction is analyzed in postorder. If the instruction exposes a <tt>TypePolicy</tt>, it is asked to perform two tasks:
Confirmed users
24

edits

Navigation menu