CACAO
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | Static Private Attributes
cacao::jit::compiler2::MachineOperand Class Referenceabstract

Operands that can be directly used by the machine (register, memory, stackslot) More...

Inheritance diagram for cacao::jit::compiler2::MachineOperand:
cacao::jit::compiler2::memory::ManagerMixin< MachineOperand > cacao::jit::compiler2::Address cacao::jit::compiler2::Immediate cacao::jit::compiler2::ManagedStackSlot cacao::jit::compiler2::Register cacao::jit::compiler2::StackSlot cacao::jit::compiler2::VoidOperand cacao::jit::compiler2::MachineAddress cacao::jit::compiler2::MachineRegister cacao::jit::compiler2::UnassignedReg cacao::jit::compiler2::VirtualRegister cacao::jit::compiler2::x86_64::NativeAddress cacao::jit::compiler2::x86_64::NativeRegister cacao::jit::compiler2::x86_64::X86_64ModRMOperand

Public Types

enum  OperandID {
  MachineOperandID, RegisterID, StackSlotID, ManagedStackSlotID,
  ImmediateID, AddressID, VoidOperandID
}
 
typedef const voidIdentifyTy
 
typedef std::size_t IdentifyOffsetTy
 
typedef std::size_t IdentifySizeTy
 
typedef alloc::vector
< EmbeddedMachineOperand >
::type 
embedded_operand_list
 
typedef
embedded_operand_list::iterator 
operand_iterator
 
typedef
embedded_operand_list::const_iterator 
const_operand_iterator
 

Public Member Functions

std::size_t get_id () const
 
 MachineOperand (OperandID op_id, Type::TypeID type)
 
OperandID get_OperandID () const
 
Type::TypeID get_type () const
 
virtual const char * get_name () const =0
 
virtual ~MachineOperand ()
 
virtual MachineOperandto_MachineOperand ()
 
virtual VoidOperandto_VoidOperand ()
 
virtual Registerto_Register ()
 
virtual StackSlotto_StackSlot ()
 
virtual ManagedStackSlotto_ManagedStackSlot ()
 
virtual Immediateto_Immediate ()
 
virtual Addressto_Address ()
 
bool is_MachineOperand () const
 
bool is_VoidOperand () const
 
bool is_Register () const
 
bool is_StackSlot () const
 
bool is_ManagedStackSlot () const
 
bool is_Immediate () const
 
bool is_Address () const
 
bool is_stackslot () const
 
bool aquivalence_less (const MachineOperand &MO) const
 
bool aquivalent (const MachineOperand &MO) const
 
virtual bool is_virtual () const
 True if operand is virtual and must be assigned during register allocation. More...
 
virtual bool needs_allocation () const
 Return true if operand is processed during register allocation. More...
 
bool has_embedded_operands ()
 
std::size_t op_size () const
 
EmbeddedMachineOperandoperator[] (std::size_t i)
 
const EmbeddedMachineOperandget (std::size_t i) const
 
EmbeddedMachineOperandget (std::size_t i)
 
operand_iterator begin ()
 
operand_iterator end ()
 
operand_iterator find (MachineOperand *op)
 
EmbeddedMachineOperandfront ()
 
EmbeddedMachineOperandback ()
 
const_operand_iterator begin () const
 
const_operand_iterator end () const
 
virtual OStreamprint (OStream &OS) const
 

Protected Member Functions

virtual IdentifyTy id_base () const
 
virtual IdentifyOffsetTy id_offset () const
 
virtual IdentifySizeTy id_size () const
 

Protected Attributes

embedded_operand_list embedded_operands
 TODO describe. More...
 

Private Attributes

std::size_t id
 
OperandID op_id
 
Type::TypeID type
 

Static Private Attributes

static std::size_t id_counter = 0
 

Additional Inherited Members

- Static Public Member Functions inherited from cacao::jit::compiler2::memory::ManagerMixin< MachineOperand >
static voidoperator new (std::size_t size) throw (std::bad_alloc)
 normal new More...
 
static voidoperator new (std::size_t size, void *ptr) throw ()
 placement new More...
 
static voidoperator 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 voidoperator new[] (std::size_t size) throw (std::bad_alloc)
 normal new[] More...
 
static voidoperator new[] (std::size_t size, void *ptr) throw ()
 placement new[] More...
 
static voidoperator 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...
 

Detailed Description

Operands that can be directly used by the machine (register, memory, stackslot)

Definition at line 72 of file MachineOperand.hpp.

Member Typedef Documentation

typedef embedded_operand_list::const_iterator cacao::jit::compiler2::MachineOperand::const_operand_iterator

Definition at line 88 of file MachineOperand.hpp.

Definition at line 86 of file MachineOperand.hpp.

Definition at line 84 of file MachineOperand.hpp.

Definition at line 85 of file MachineOperand.hpp.

Definition at line 83 of file MachineOperand.hpp.

typedef embedded_operand_list::iterator cacao::jit::compiler2::MachineOperand::operand_iterator

Definition at line 87 of file MachineOperand.hpp.

Member Enumeration Documentation

Enumerator
MachineOperandID 
RegisterID 
StackSlotID 
ManagedStackSlotID 
ImmediateID 
AddressID 
VoidOperandID 

Definition at line 74 of file MachineOperand.hpp.

Constructor & Destructor Documentation

cacao::jit::compiler2::MachineOperand::MachineOperand ( OperandID  op_id,
Type::TypeID  type 
)
inlineexplicit

Definition at line 105 of file MachineOperand.hpp.

virtual cacao::jit::compiler2::MachineOperand::~MachineOperand ( )
inlinevirtual

Definition at line 113 of file MachineOperand.hpp.

Member Function Documentation

bool cacao::jit::compiler2::MachineOperand::aquivalence_less ( const MachineOperand MO) const
inline

Definition at line 134 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::aquivalent ( const MachineOperand MO) const
inline

Definition at line 140 of file MachineOperand.hpp.

EmbeddedMachineOperand& cacao::jit::compiler2::MachineOperand::back ( )
inline

Definition at line 188 of file MachineOperand.hpp.

operand_iterator cacao::jit::compiler2::MachineOperand::begin ( )
inline

Definition at line 172 of file MachineOperand.hpp.

const_operand_iterator cacao::jit::compiler2::MachineOperand::begin ( ) const
inline

Definition at line 191 of file MachineOperand.hpp.

operand_iterator cacao::jit::compiler2::MachineOperand::end ( )
inline

Definition at line 175 of file MachineOperand.hpp.

const_operand_iterator cacao::jit::compiler2::MachineOperand::end ( ) const
inline

Definition at line 194 of file MachineOperand.hpp.

operand_iterator cacao::jit::compiler2::MachineOperand::find ( MachineOperand op)
inline

Definition at line 178 of file MachineOperand.hpp.

EmbeddedMachineOperand& cacao::jit::compiler2::MachineOperand::front ( )
inline

Definition at line 185 of file MachineOperand.hpp.

const EmbeddedMachineOperand& cacao::jit::compiler2::MachineOperand::get ( std::size_t  i) const
inline

Definition at line 164 of file MachineOperand.hpp.

EmbeddedMachineOperand& cacao::jit::compiler2::MachineOperand::get ( std::size_t  i)
inline

Definition at line 168 of file MachineOperand.hpp.

std::size_t cacao::jit::compiler2::MachineOperand::get_id ( ) const
inline

Definition at line 103 of file MachineOperand.hpp.

virtual const char* cacao::jit::compiler2::MachineOperand::get_name ( ) const
pure virtual
OperandID cacao::jit::compiler2::MachineOperand::get_OperandID ( ) const
inline

Definition at line 108 of file MachineOperand.hpp.

Type::TypeID cacao::jit::compiler2::MachineOperand::get_type ( ) const
inline

Definition at line 109 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::has_embedded_operands ( )
inline

Definition at line 156 of file MachineOperand.hpp.

virtual IdentifyTy cacao::jit::compiler2::MachineOperand::id_base ( ) const
inlineprotectedvirtual

Reimplemented in cacao::jit::compiler2::x86_64::NativeRegister.

Definition at line 99 of file MachineOperand.hpp.

virtual IdentifyOffsetTy cacao::jit::compiler2::MachineOperand::id_offset ( ) const
inlineprotectedvirtual

Reimplemented in cacao::jit::compiler2::x86_64::NativeRegister.

Definition at line 100 of file MachineOperand.hpp.

virtual IdentifySizeTy cacao::jit::compiler2::MachineOperand::id_size ( ) const
inlineprotectedvirtual

Reimplemented in cacao::jit::compiler2::x86_64::NativeRegister.

Definition at line 101 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_Address ( ) const
inline

Definition at line 128 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_Immediate ( ) const
inline

Definition at line 127 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_MachineOperand ( ) const
inline

Definition at line 122 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_ManagedStackSlot ( ) const
inline

Definition at line 126 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_Register ( ) const
inline

Definition at line 124 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_StackSlot ( ) const
inline

Definition at line 125 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_stackslot ( ) const
inline

Definition at line 130 of file MachineOperand.hpp.

virtual bool cacao::jit::compiler2::MachineOperand::is_virtual ( ) const
inlinevirtual

True if operand is virtual and must be assigned during register allocation.

Reimplemented in cacao::jit::compiler2::VirtualRegister.

Definition at line 148 of file MachineOperand.hpp.

bool cacao::jit::compiler2::MachineOperand::is_VoidOperand ( ) const
inline

Definition at line 123 of file MachineOperand.hpp.

virtual bool cacao::jit::compiler2::MachineOperand::needs_allocation ( ) const
inlinevirtual

Return true if operand is processed during register allocation.

This implies is_virtual().

See Also
is_virtual()

Reimplemented in cacao::jit::compiler2::Register.

Definition at line 155 of file MachineOperand.hpp.

std::size_t cacao::jit::compiler2::MachineOperand::op_size ( ) const
inline

Definition at line 157 of file MachineOperand.hpp.

EmbeddedMachineOperand& cacao::jit::compiler2::MachineOperand::operator[] ( std::size_t  i)
inline

Definition at line 160 of file MachineOperand.hpp.

virtual OStream& cacao::jit::compiler2::MachineOperand::print ( OStream OS) const
inlinevirtual
virtual Address* cacao::jit::compiler2::MachineOperand::to_Address ( )
inlinevirtual

Reimplemented in cacao::jit::compiler2::Address.

Definition at line 120 of file MachineOperand.hpp.

virtual Immediate* cacao::jit::compiler2::MachineOperand::to_Immediate ( )
inlinevirtual

Reimplemented in cacao::jit::compiler2::Immediate.

Definition at line 119 of file MachineOperand.hpp.

virtual MachineOperand* cacao::jit::compiler2::MachineOperand::to_MachineOperand ( )
inlinevirtual

Definition at line 114 of file MachineOperand.hpp.

virtual ManagedStackSlot* cacao::jit::compiler2::MachineOperand::to_ManagedStackSlot ( )
inlinevirtual

Reimplemented in cacao::jit::compiler2::ManagedStackSlot.

Definition at line 118 of file MachineOperand.hpp.

virtual Register* cacao::jit::compiler2::MachineOperand::to_Register ( )
inlinevirtual

Reimplemented in cacao::jit::compiler2::Register.

Definition at line 116 of file MachineOperand.hpp.

virtual StackSlot* cacao::jit::compiler2::MachineOperand::to_StackSlot ( )
inlinevirtual
virtual VoidOperand* cacao::jit::compiler2::MachineOperand::to_VoidOperand ( )
inlinevirtual

Reimplemented in cacao::jit::compiler2::VoidOperand.

Definition at line 115 of file MachineOperand.hpp.

Field Documentation

embedded_operand_list cacao::jit::compiler2::MachineOperand::embedded_operands
protected

TODO describe.

Definition at line 98 of file MachineOperand.hpp.

std::size_t cacao::jit::compiler2::MachineOperand::id
private

Definition at line 91 of file MachineOperand.hpp.

std::size_t cacao::jit::compiler2::MachineOperand::id_counter = 0
staticprivate

Definition at line 90 of file MachineOperand.hpp.

OperandID cacao::jit::compiler2::MachineOperand::op_id
private

Definition at line 92 of file MachineOperand.hpp.

Type::TypeID cacao::jit::compiler2::MachineOperand::type
private

Definition at line 93 of file MachineOperand.hpp.


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