MimIR 0.1
MimIR is my Intermediate Representation
|
Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map. More...
#include <mim/rewrite.h>
Public Member Functions | |
Rewriter (std::unique_ptr< World > &&ptr) | |
Rewriter (World &world) | |
void | reset (std::unique_ptr< World > &&ptr) |
void | reset () |
World & | world () |
Stack of Maps | |
virtual void | push () |
virtual void | pop () |
const Def * | map (const Def *old_def, const Def *new_def) |
Map old_def to new_def and returns new_def . | |
const Def * | lookup (const Def *old_def) |
Lookup old_def by searching in reverse through the stack of maps. | |
rewrite | |
Recursively rewrite old Defs. | |
virtual const Def * | rewrite (const Def *) |
virtual const Def * | rewrite_imm (const Def *) |
virtual const Def * | rewrite_mut (Def *) |
virtual const Def * | rewrite_stub (Def *, Def *) |
virtual DefVec | rewrite (Defs) |
virtual const Def * | rewrite_imm_Seq (const Seq *seq) |
virtual const Def * | rewrite_mut_Seq (Seq *seq) |
Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map.
|
inline |
Definition at line 13 of file rewrite.h.
References mim::get(), and push().
Referenced by mim::RWPhase::RWPhase(), mim::VarRewriter::VarRewriter(), and mim::VarRewriter::VarRewriter().
|
inline |
Lookup old_def
by searching in reverse through the stack of maps.
nullptr
if nothing was found. Definition at line 49 of file rewrite.h.
Referenced by rewrite(), and mim::VarRewriter::rewrite().
Map old_def
to new_def
and returns new_def
.
new_def
Definition at line 45 of file rewrite.h.
Referenced by mim::VarRewriter::add(), rewrite_imm(), mim::BetaRedPhase::rewrite_imm_App(), rewrite_mut_Seq(), and rewrite_stub().
|
inlinevirtual |
Reimplemented in mim::VarRewriter.
Definition at line 41 of file rewrite.h.
Referenced by mim::VarRewriter::pop(), reset(), mim::BetaRedPhase::rewrite_imm_App(), and rewrite_mut_Seq().
|
inlinevirtual |
Reimplemented in mim::VarRewriter.
Definition at line 40 of file rewrite.h.
Referenced by mim::VarRewriter::push(), reset(), mim::BetaRedPhase::rewrite_imm_App(), rewrite_mut_Seq(), Rewriter(), and Rewriter().
|
inline |
|
inline |
Reimplemented in mim::VarRewriter.
Definition at line 14 of file rewrite.cpp.
References mim::Def::dbg(), mim::Def::isa_mut(), lookup(), rewrite_imm(), and rewrite_mut().
Referenced by rewrite(), mim::RWPhase::rewrite_annex(), mim::PrefixCleanup::rewrite_external(), mim::RWPhase::rewrite_external(), mim::BetaRedPhase::rewrite_imm_App(), mim::plug::matrix::LowerMatrixLowLevel::rewrite_imm_App(), rewrite_imm_Seq(), rewrite_mut_Seq(), and rewrite_stub().
Definition at line 47 of file rewrite.cpp.
References rewrite().
Definition at line 26 of file rewrite.cpp.
References CODE_IMM, map(), MIM_IMM_NODE, and mim::Def::node().
Referenced by rewrite(), and mim::VarRewriter::rewrite().
Definition at line 121 of file rewrite.cpp.
References mim::Def::arity(), mim::Seq::body(), mim::Def::is_intro(), mim::Lit::isa(), mim::World::prod(), rewrite(), mim::World::seq(), and world().
Reimplemented in mim::VarRewriter.
Definition at line 35 of file rewrite.cpp.
References CODE_MUT, MIM_MUT_NODE, and mim::Def::node().
Referenced by rewrite(), and mim::VarRewriter::rewrite_mut().
Definition at line 127 of file rewrite.cpp.
References mim::Def::arity(), mim::Def::as_mut(), mim::Seq::body(), mim::Def::has_var(), mim::Def::is_intro(), mim::Def::is_set(), mim::Def::is_term(), mim::Lit::isa(), map(), pop(), mim::World::prod(), push(), rewrite(), rewrite_stub(), mim::Def::type(), and world().
Definition at line 152 of file rewrite.cpp.
References mim::Def::immutabilize(), mim::Def::is_set(), map(), mim::Def::num_ops(), mim::Def::op(), rewrite(), and mim::Def::set().
Referenced by rewrite_mut_Seq().
|
inline |
Definition at line 36 of file rewrite.h.
Referenced by mim::RWPhase::new_world(), rewrite_imm_Seq(), mim::VarRewriter::rewrite_mut(), rewrite_mut_Seq(), Rewriter(), mim::VarRewriter::VarRewriter(), and mim::VarRewriter::VarRewriter().