CACAO
|
Public Member Functions | |
Value * | read_variable (size_t varindex, size_t bb) |
SSAConstructionPass () | |
virtual bool | run (JITData &JD) |
Run the Pass. More... | |
virtual bool | verify () const |
Verify the Result. More... | |
virtual PassUsage & | get_PassUsage (PassUsage &PU) const |
Set the requirements for the pass. More... | |
![]() | |
Pass () | |
void | set_PassManager (PassManager *PM) |
template<class _PassClass > | |
_PassClass * | get_Pass () const |
Get the result of a previous compiler pass. More... | |
template<class _PassClass > | |
_PassClass * | get_Pass_if_available () const |
Get the result of a previous compiler pass. More... | |
virtual void | initialize () |
Initialize the Pass. More... | |
virtual void | finalize () |
Finalize the Pass. More... | |
virtual | ~Pass () |
Destructor. More... | |
Static Public Attributes | |
static char | ID |
Private Member Functions | |
void | write_variable (size_t varindex, size_t bb, Value *V) |
Value * | read_variable_recursive (size_t varindex, size_t bb) |
Value * | add_phi_operands (size_t varindex, PHIInst *phi) |
Value * | try_remove_trivial_phi (PHIInst *phi) |
void | seal_block (size_t bb) |
bool | try_seal_block (basicblock *bb) |
void | print_current_def () const |
Private Attributes | |
Method * | M |
jitdata * | jd |
alloc::vector< BeginInst * >::type | BB |
alloc::unordered_map < BeginInst *, size_t >::type | beginToIndex |
alloc::vector< alloc::vector < Value * >::type >::type | current_def |
alloc::vector< alloc::vector < PHIInst * >::type >::type | incomplete_phi |
alloc::vector< alloc::list < InVarPhis * >::type >::type | incomplete_in_phi |
alloc::vector< bool >::type | sealed_blocks |
alloc::vector< bool >::type | filled_blocks |
alloc::vector< Type::TypeID >::type | var_type_tbl |
Additional Inherited Members | |
![]() | |
static void * | operator new (std::size_t size) throw (std::bad_alloc) |
normal new More... | |
static void * | operator new (std::size_t size, void *ptr) throw () |
placement new More... | |
static void * | operator new (std::size_t size, const std::nothrow_t &nt) throw () |
nothrow new More... | |
static void | operator delete (void *pMemory) throw () |
normal delete More... | |
static void | operator delete (void *pMemory, void *ptr) throw () |
placement delete More... | |
static void | operator delete (void *pMemory, const std::nothrow_t &) throw () |
nothrow delete More... | |
static void * | operator new[] (std::size_t size) throw (std::bad_alloc) |
normal new[] More... | |
static void * | operator new[] (std::size_t size, void *ptr) throw () |
placement new[] More... | |
static void * | operator new[] (std::size_t size, const std::nothrow_t &nt) throw () |
nothrow new[] More... | |
static void | operator delete[] (void *pMemory) throw () |
normal delete[] More... | |
static void | operator delete[] (void *pMemory, void *ptr) throw () |
placement delete[] More... | |
static void | operator delete[] (void *pMemory, const std::nothrow_t &) throw () |
nothrow delete[] More... | |
This Pass constructs the compiler2 specific SSA based IR from the ICMD_* style IR used in the baseline compiler.
The approach is based on "Simple and Efficient Construction of Static Singe Assignment Form" by Braun et al. 2013 [1].
Definition at line 52 of file SSAConstructionPass.hpp.
|
inline |
Definition at line 78 of file SSAConstructionPass.hpp.
|
private |
|
virtual |
Set the requirements for the pass.
Reimplemented from cacao::jit::compiler2::Pass.
|
private |
Value* cacao::jit::compiler2::SSAConstructionPass::read_variable | ( | size_t | varindex, |
size_t | bb | ||
) |
|
private |
|
virtual |
Run the Pass.
This method implements the compiler pass.
Implements cacao::jit::compiler2::Pass.
|
private |
|
private |
|
virtual |
Verify the Result.
This method is used to verify the result of the pass. It has the same motivation than the assert() statement. It should be only used for debugging purposes and might not be called in release builds.
Reimplemented from cacao::jit::compiler2::Pass.
|
private |
|
private |
Definition at line 56 of file SSAConstructionPass.hpp.
|
private |
Definition at line 57 of file SSAConstructionPass.hpp.
|
private |
Definition at line 58 of file SSAConstructionPass.hpp.
|
private |
Definition at line 66 of file SSAConstructionPass.hpp.
|
static |
Definition at line 77 of file SSAConstructionPass.hpp.
|
private |
Definition at line 62 of file SSAConstructionPass.hpp.
|
private |
Definition at line 60 of file SSAConstructionPass.hpp.
|
private |
Definition at line 55 of file SSAConstructionPass.hpp.
|
private |
Definition at line 54 of file SSAConstructionPass.hpp.
|
private |
Definition at line 64 of file SSAConstructionPass.hpp.
|
private |
Definition at line 67 of file SSAConstructionPass.hpp.