LRDE Tiger Compiler
1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
|
"Allocate-registers" functor. More...
#include <regallocator.hh>
Public Types | |
typedef assem::Visitor | super_type |
Public Member Functions | |
virtual void | operator() (assem::ProcFrag &frag) override |
Allocate registers. | |
temp::TempMap | allocation_get () const |
The result. | |
const misc::timer & | timer_get () const |
The timer. | |
virtual void | operator() (typename Const< ProcFrag >::type &a) |
Visit an assembly procedure fragment. | |
virtual void | operator() (typename Const< DataFrag >::type &a) |
Visit an assembly data fragment. | |
template<class E > | |
void | operator() (E *e) |
To enable the use of standard algorithm on containers of pointers. | |
virtual void | operator() (typename Const< Fragments >::type &fs) |
Visit a list of assembly fragments. | |
template<template< typename > class Const> | |
void | operator() (typename Const< ast::Ast >::type &e) |
Ctor & Dtor | |
RegisterAllocator (const target::Target &target, const temp::TempMap &tempmap, bool coalesce_p=true, bool trace_p=false) | |
Construct a RegisterAllocator. |
Private Member Functions | |
void | remove_useless_moves (assem::Instrs &instrs) |
Private Attributes | |
const target::Target & | target_ |
The current target. | |
temp::TempMap | tempmap_ |
The allocation itself. | |
bool | coalesce_p_ |
Shall we coalesce registers. | |
bool | trace_p_ |
Produce detailed logs on register allocation. | |
misc::timer | timer_ |
Register allocation timer. |
"Allocate-registers" functor.
regalloc::RegisterAllocator::RegisterAllocator | ( | const target::Target & | target, |
const temp::TempMap & | tempmap, | ||
bool | coalesce_p = true , |
||
bool | trace_p = false |
||
) |
Construct a RegisterAllocator.
temp::TempMap regalloc::RegisterAllocator::allocation_get | ( | ) | const |
|
inherited |
|
virtualinherited |
Visit an assembly procedure fragment.
|
virtualinherited |
Visit an assembly data fragment.
|
inherited |
To enable the use of standard algorithm on containers of pointers.
|
virtualinherited |
Visit a list of assembly fragments.
References misc::for_each().
|
overridevirtual |
Allocate registers.
References coalesce_p_, target::Target::codegen_get(), target::Target::cpu_get(), misc::map< T, N >::insert(), assem::ProcFrag::instrs_get(), temp::Identifier< Traits_ >::map, remove_useless_moves(), target::Codegen::rewrite_program(), misc::xalloc< StoredType >::swap(), target_, tempmap_, timer_, and trace_p_.
|
private |
Referenced by operator()().
const misc::timer & regalloc::RegisterAllocator::timer_get | ( | ) | const |
|
private |
Shall we coalesce registers.
Referenced by operator()().
|
private |
The current target.
Referenced by operator()().
|
private |
The allocation itself.
Referenced by allocation_get(), and operator()().
|
private |
Register allocation timer.
Referenced by operator()(), and timer_get().
|
private |
Produce detailed logs on register allocation.
Referenced by operator()().