Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
thorin::plug::clos::Clos2SJLJ Class Reference

#include <thorin/plug/clos/pass/clos2sjlj.h>

Inheritance diagram for thorin::plug::clos::Clos2SJLJ:
[legend]

Public Member Functions

 Clos2SJLJ (PassMan &man)
 
void enter () override
 Invoked just before Pass::rewriteing PassMan::curr_mut's body.
 
Ref rewrite (Ref) override
 
- Public Member Functions inherited from thorin::RWPass< Clos2SJLJ, Lam >
 RWPass (PassMan &man, std::string_view name)
 
bool inspect () const override
 Should the PassMan even consider this pass?
 
Lamcurr_mut () const
 
- Public Member Functions inherited from thorin::Pass
 Pass (PassMan &, std::string_view name)
 
virtual ~Pass ()=default
 
Worldworld ()
 
PassManman ()
 
const PassManman () const
 
std::string_view name () const
 
size_t index () const
 
virtual Ref rewrite (const Var *var)
 
virtual Ref rewrite (const Proxy *proxy)
 
virtual undo_t analyze (Ref)
 
virtual undo_t analyze (const Var *)
 
virtual undo_t analyze (const Proxy *)
 
virtual bool fixed_point () const
 
virtual void prepare ()
 Invoked once before entering the main rewrite loop.
 
const Proxyproxy (Ref type, Defs ops, u32 tag=0)
 
const Proxyisa_proxy (Ref def, u32 tag=0)
 Check whether given def is a Proxy whose Proxy::pass matches this Pass's IPass::index.
 
const Proxyas_proxy (Ref def, u32 tag=0)
 

Detailed Description

Definition at line 11 of file clos2sjlj.h.

Constructor & Destructor Documentation

◆ Clos2SJLJ()

thorin::plug::clos::Clos2SJLJ::Clos2SJLJ ( PassMan man)
inline

Definition at line 13 of file clos2sjlj.h.

Member Function Documentation

◆ enter()

void thorin::plug::clos::Clos2SJLJ::enter ( )
overridevirtual

Invoked just before Pass::rewriteing PassMan::curr_mut's body.

Note
This is invoked when seeing the inside of a mutable the first time. This is often too late, as you usually want to do something when you see a mutable the first time from the outside. This means that this PassMan::curr_mut has already been encountered elsewhere. Otherwise, we wouldn't have seen PassMan::curr_mut to begin with (unless it is Def::is_external).

Reimplemented from thorin::Pass.

Definition at line 120 of file clos2sjlj.cpp.

References thorin::plug::clos::clos_apply(), thorin::plug::clos::clos_pack(), thorin::plug::clos::clos_type(), thorin::plug::mem::mem_var(), thorin::plug::mem::mut_con(), thorin::plug::mem::op_slot(), thorin::Def::projs(), thorin::plug::core::s, and thorin::Lam::set().

◆ rewrite()

Ref thorin::plug::clos::Clos2SJLJ::rewrite ( Ref  def)
overridevirtual

Reimplemented from thorin::Pass.

Definition at line 167 of file clos2sjlj.cpp.

References thorin::plug::clos::clos_pack(), and thorin::plug::clos::isa_clos_lit().


The documentation for this class was generated from the following files: