CACAO
Data Structures | Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
cacao::jit::compiler2::Segment< Tag, RefCategory > Class Template Reference

A segment of the code memory. More...

Data Structures

struct  IdxTy
 Prevent mixing indices. More...
 

Public Types

typedef SegRef< Tag, RefCategory > Ref
 

Public Member Functions

 Segment (CodeMemory *CM)
 Constructor. More...
 
 Segment (CodeMemory *CM, IdxTy capacity)
 Constructor with default capacity. More...
 
CodeMemoryget_CodeMemory () const
 Get containing CodeMemory. More...
 
CodeMemoryget_CodeMemory ()
 
std::size_t size () const
 get size More...
 
IdxTy get_following_index () const
 Get the start index of next Reference in line. More...
 
u1get_start ()
 get start address More...
 
u1get_end ()
 get end address More...
 
u1operator[] (IdxTy i)
 write content More...
 
u1operator[] (std::size_t i)
 
u1 at (std::size_t i) const
 get content More...
 
void reverse ()
 reverse content More...
 
Ref get_Ref (std::size_t t)
 get a new reference to the segment More...
 
Ref get_Ref (IdxTy idx, std::size_t t)
 get a reference to the segment More...
 
template<typename Tag2 >
IdxTy insert_tag (Tag2 tag, const Ref &ref)
 insert tag More...
 
template<typename Tag2 >
IdxTy insert_tag (Tag2 tag)
 insert tag More...
 
template<typename Tag2 >
bool contains_tag (Tag2 tag) const
 contains tag More...
 
template<typename Tag2 >
IdxTy get_index (Tag2 tag) const
 get the index of a tag More...
 
OStreamprint (OStream &OS) const
 
virtual ~Segment ()
 

Static Public Member Functions

static bool is_invalid (IdxTy idx)
 is invalid index More...
 

Private Types

typedef alloc::map< SegmentTag
< Tag > *, IdxTy, classcomp
< Tag > >::type 
EntriesTy
 

Private Member Functions

IdxTy insert_tag (SegmentTag< Tag > *tag, IdxTy o)
 insert tag More...
 
bool contains_tag_intern (SegmentTag< Tag > *tag) const
 contains tag More...
 
IdxTy get_index_intern (SegmentTag< Tag > *tag) const
 get index More...
 

Static Private Member Functions

static IdxTy invalid_index ()
 invalid index More...
 

Private Attributes

CodeMemoryCM
 
alloc::vector< u1 >::type content
 content of the segment More...
 
EntriesTy entries
 tagged entries More...
 

Friends

class SegRef< Tag, RefCategory >
 

Detailed Description

template<typename Tag, typename RefCategory>
class cacao::jit::compiler2::Segment< Tag, RefCategory >

A segment of the code memory.

Definition at line 78 of file Segment.hpp.

Member Typedef Documentation

template<typename Tag, typename RefCategory>
typedef alloc::map<SegmentTag<Tag>*,IdxTy,classcomp<Tag> >::type cacao::jit::compiler2::Segment< Tag, RefCategory >::EntriesTy
private

Definition at line 114 of file Segment.hpp.

template<typename Tag, typename RefCategory>
typedef SegRef<Tag,RefCategory> cacao::jit::compiler2::Segment< Tag, RefCategory >::Ref

Definition at line 112 of file Segment.hpp.

Constructor & Destructor Documentation

template<typename Tag, typename RefCategory>
cacao::jit::compiler2::Segment< Tag, RefCategory >::Segment ( CodeMemory CM)
inline

Constructor.

Definition at line 139 of file Segment.hpp.

template<typename Tag, typename RefCategory>
cacao::jit::compiler2::Segment< Tag, RefCategory >::Segment ( CodeMemory CM,
IdxTy  capacity 
)
inline

Constructor with default capacity.

Definition at line 141 of file Segment.hpp.

template<typename Tag, typename RefCategory>
virtual cacao::jit::compiler2::Segment< Tag, RefCategory >::~Segment ( )
inlinevirtual

Definition at line 273 of file Segment.hpp.

Member Function Documentation

template<typename Tag, typename RefCategory>
u1 cacao::jit::compiler2::Segment< Tag, RefCategory >::at ( std::size_t  i) const
inline

get content

Definition at line 194 of file Segment.hpp.

template<typename Tag, typename RefCategory>
template<typename Tag2 >
bool cacao::jit::compiler2::Segment< Tag, RefCategory >::contains_tag ( Tag2  tag) const
inline

contains tag

Definition at line 245 of file Segment.hpp.

template<typename Tag, typename RefCategory>
bool cacao::jit::compiler2::Segment< Tag, RefCategory >::contains_tag_intern ( SegmentTag< Tag > *  tag) const
inlineprivate

contains tag

Definition at line 128 of file Segment.hpp.

template<typename Tag, typename RefCategory>
CodeMemory* cacao::jit::compiler2::Segment< Tag, RefCategory >::get_CodeMemory ( ) const
inline

Get containing CodeMemory.

Definition at line 145 of file Segment.hpp.

template<typename Tag, typename RefCategory>
CodeMemory& cacao::jit::compiler2::Segment< Tag, RefCategory >::get_CodeMemory ( )
inline

Definition at line 146 of file Segment.hpp.

template<typename Tag, typename RefCategory>
u1* cacao::jit::compiler2::Segment< Tag, RefCategory >::get_end ( )
inline

get end address

Deprecated:
this should only be available in the closed variant

Definition at line 181 of file Segment.hpp.

template<typename Tag, typename RefCategory>
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::get_following_index ( ) const
inline

Get the start index of next Reference in line.

Note that the index may or may not be already present. In the later case the index of the future Reference will be returned

Definition at line 164 of file Segment.hpp.

template<typename Tag, typename RefCategory>
template<typename Tag2 >
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::get_index ( Tag2  tag) const
inline

get the index of a tag

Returns
the index of the tag or end() if not found

Definition at line 254 of file Segment.hpp.

template<typename Tag, typename RefCategory>
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::get_index_intern ( SegmentTag< Tag > *  tag) const
inlineprivate

get index

Definition at line 132 of file Segment.hpp.

template<typename Tag, typename RefCategory>
Ref cacao::jit::compiler2::Segment< Tag, RefCategory >::get_Ref ( std::size_t  t)
inline

get a new reference to the segment

Definition at line 208 of file Segment.hpp.

template<typename Tag, typename RefCategory>
Ref cacao::jit::compiler2::Segment< Tag, RefCategory >::get_Ref ( IdxTy  idx,
std::size_t  t 
)
inline

get a reference to the segment

Todo:
replace with getter for tag

Definition at line 219 of file Segment.hpp.

template<typename Tag, typename RefCategory>
u1* cacao::jit::compiler2::Segment< Tag, RefCategory >::get_start ( )
inline

get start address

Deprecated:
this should only be available in the closed variant

Definition at line 173 of file Segment.hpp.

template<typename Tag, typename RefCategory>
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::insert_tag ( SegmentTag< Tag > *  tag,
IdxTy  o 
)
inlineprivate

insert tag

Definition at line 123 of file Segment.hpp.

template<typename Tag, typename RefCategory>
template<typename Tag2 >
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::insert_tag ( Tag2  tag,
const Ref ref 
)
inline

insert tag

Definition at line 225 of file Segment.hpp.

template<typename Tag, typename RefCategory>
template<typename Tag2 >
IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::insert_tag ( Tag2  tag)
inline

insert tag

Definition at line 230 of file Segment.hpp.

template<typename Tag, typename RefCategory>
static IdxTy cacao::jit::compiler2::Segment< Tag, RefCategory >::invalid_index ( )
inlinestaticprivate

invalid index

Definition at line 120 of file Segment.hpp.

template<typename Tag, typename RefCategory>
static bool cacao::jit::compiler2::Segment< Tag, RefCategory >::is_invalid ( IdxTy  idx)
inlinestatic

is invalid index

Definition at line 156 of file Segment.hpp.

template<typename Tag, typename RefCategory>
u1& cacao::jit::compiler2::Segment< Tag, RefCategory >::operator[] ( IdxTy  i)
inline

write content

Definition at line 185 of file Segment.hpp.

template<typename Tag, typename RefCategory>
u1& cacao::jit::compiler2::Segment< Tag, RefCategory >::operator[] ( std::size_t  i)
inline

Definition at line 188 of file Segment.hpp.

template<typename Tag, typename RefCategory>
OStream& cacao::jit::compiler2::Segment< Tag, RefCategory >::print ( OStream OS) const
inline

Definition at line 263 of file Segment.hpp.

template<typename Tag, typename RefCategory>
void cacao::jit::compiler2::Segment< Tag, RefCategory >::reverse ( )
inline

reverse content

Deprecated:
this should only be available in the closed variant

Definition at line 203 of file Segment.hpp.

template<typename Tag, typename RefCategory>
std::size_t cacao::jit::compiler2::Segment< Tag, RefCategory >::size ( ) const
inline

get size

Deprecated:
this should only be available in the closed variant

Definition at line 153 of file Segment.hpp.

Friends And Related Function Documentation

template<typename Tag, typename RefCategory>
friend class SegRef< Tag, RefCategory >
friend

Definition at line 280 of file Segment.hpp.

Field Documentation

template<typename Tag, typename RefCategory>
CodeMemory* cacao::jit::compiler2::Segment< Tag, RefCategory >::CM
private

Definition at line 115 of file Segment.hpp.

template<typename Tag, typename RefCategory>
alloc::vector<u1>::type cacao::jit::compiler2::Segment< Tag, RefCategory >::content
private

content of the segment

Definition at line 116 of file Segment.hpp.

template<typename Tag, typename RefCategory>
EntriesTy cacao::jit::compiler2::Segment< Tag, RefCategory >::entries
private

tagged entries

Definition at line 117 of file Segment.hpp.


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