CACAO
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
cacao::jit::compiler2::PassManager Class Reference

Manages pass registry and scheduling. More...

Public Types

using ScheduleListTy = alloc::vector< PassInfo::IDTy >::type
 
using PassInfoMapTy = alloc::unordered_map< PassInfo::IDTy, PassInfo * >::type
 

Public Member Functions

const char * get_Pass_name (PassInfo::IDTy ID)
 
ScheduleListTy::const_iterator schedule_begin ()
 
ScheduleListTy::const_iterator schedule_end () const
 
PassInfoMapTy::const_iterator registered_begin () const
 
PassInfoMapTy::const_iterator registered_end () const
 

Static Public Member Functions

static PassManagerget ()
 
static void register_Pass (PassInfo *PI)
 DO NOT CALL THIS MANUALLY. More...
 

Private Member Functions

void schedulePasses ()
 
PassUPtrTy create_Pass (PassInfo::IDTy ID) const
 
 PassManager ()
 

Static Private Member Functions

static PassInfoMapTyregistered_passes ()
 

Private Attributes

ScheduleListTy schedule
 This is the pass schedule. More...
 
bool passes_are_scheduled
 

Friends

class PassRunner
 

Detailed Description

Manages pass registry and scheduling.

PassManager is implemented as a singleton. It holds a list of registered passes and knows how to construct them.

Passes are scheduled the first time the schedule is accessed and the schedule does not change after that.

Running passes and propagating results between passes is handled by the PassRunner.

Definition at line 87 of file PassManager.hpp.

Member Typedef Documentation

Definition at line 90 of file PassManager.hpp.

Definition at line 89 of file PassManager.hpp.

Constructor & Destructor Documentation

cacao::jit::compiler2::PassManager::PassManager ( )
inlineexplicitprivate

Definition at line 107 of file PassManager.hpp.

Member Function Documentation

PassUPtrTy cacao::jit::compiler2::PassManager::create_Pass ( PassInfo::IDTy  ID) const
private

Definition at line 63 of file PassManager.cpp.

static PassManager& cacao::jit::compiler2::PassManager::get ( )
inlinestatic

Definition at line 110 of file PassManager.hpp.

const char* cacao::jit::compiler2::PassManager::get_Pass_name ( PassInfo::IDTy  ID)
inline

Definition at line 124 of file PassManager.hpp.

static void cacao::jit::compiler2::PassManager::register_Pass ( PassInfo PI)
inlinestatic

DO NOT CALL THIS MANUALLY.

ONLY INVOKE VIA RegisterPass.

Definition at line 119 of file PassManager.hpp.

PassInfoMapTy::const_iterator cacao::jit::compiler2::PassManager::registered_begin ( ) const
inline

Definition at line 139 of file PassManager.hpp.

PassInfoMapTy::const_iterator cacao::jit::compiler2::PassManager::registered_end ( ) const
inline

Definition at line 140 of file PassManager.hpp.

static PassInfoMapTy& cacao::jit::compiler2::PassManager::registered_passes ( )
inlinestaticprivate

Definition at line 99 of file PassManager.hpp.

ScheduleListTy::const_iterator cacao::jit::compiler2::PassManager::schedule_begin ( )
inline

Definition at line 130 of file PassManager.hpp.

ScheduleListTy::const_iterator cacao::jit::compiler2::PassManager::schedule_end ( ) const
inline

Definition at line 137 of file PassManager.hpp.

void cacao::jit::compiler2::PassManager::schedulePasses ( )
private

Definition at line 324 of file PassManager.cpp.

Friends And Related Function Documentation

friend class PassRunner
friend

Definition at line 142 of file PassManager.hpp.

Field Documentation

bool cacao::jit::compiler2::PassManager::passes_are_scheduled
private

Definition at line 97 of file PassManager.hpp.

ScheduleListTy cacao::jit::compiler2::PassManager::schedule
private

This is the pass schedule.

A pass may occur more than once.

Definition at line 95 of file PassManager.hpp.


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