ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
structure to store additional information with a function pointer to the translated code More...
#include <Translation.h>
Public Member Functions | |
BlockLink (etiss::uint64 start, etiss::uint64 end, ExecBlockCall execBlock, std::shared_ptr< void > lib) | |
~BlockLink () | |
Static Public Member Functions | |
static void | incrRef (BlockLink *link) |
increase reference count to a BlockLink More... | |
static void | decrRef (BlockLink *&link) |
decrease reference count to a BlockLink and delete the instance if no other references exist More... | |
static void | updateRef (BlockLink *&link, BlockLink *newValue) |
change the value of a BlockLink pointer. More... | |
Public Attributes | |
const etiss::uint64 | start |
start instruction index More... | |
const etiss::uint64 | end |
end instruction index (excluded) More... | |
BlockLink * | next |
next block; ONLY MODIFY WITH updateRef More... | |
BlockLink * | branch |
last branch block; ONLY MODIFY WITH updateRef More... | |
unsigned | refcount |
number of references to this instance; DO NOT MODIFY More... | |
const ExecBlockCall | execBlock |
function pointer More... | |
bool | valid |
true if the associated function implements current code More... | |
const std::shared_ptr< void > | jitlib |
library of the associated function More... | |
structure to store additional information with a function pointer to the translated code
Definition at line 62 of file Translation.h.
etiss::BlockLink::BlockLink | ( | etiss::uint64 | start, |
etiss::uint64 | end, | ||
ExecBlockCall | execBlock, | ||
std::shared_ptr< void > | lib | ||
) |
etiss::BlockLink::~BlockLink | ( | ) |
Definition at line 58 of file Translation.cpp.
References branch, decrRef(), and next.
|
inlinestatic |
decrease reference count to a BlockLink and delete the instance if no other references exist
link | MAY NOT BE 0 |
Definition at line 84 of file Translation.h.
References refcount, and unlikely.
Referenced by etiss::Translation::getBlock(), etiss::Translation::unloadBlocks(), and ~BlockLink().
|
inlinestatic |
increase reference count to a BlockLink
link | MAY NOT BE 0 |
Definition at line 79 of file Translation.h.
References refcount.
Referenced by etiss::Translation::getBlock(), and updateRef().
change the value of a BlockLink pointer.
handles reference count updates and cleanup of unreferenced BlockLinks
link | may be 0 |
newValue | may be 0 |
Definition at line 99 of file Translation.h.
References incrRef(), likely, refcount, and unlikely.
Referenced by etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), and etiss::Translation::unloadBlocks().
BlockLink* etiss::BlockLink::branch |
last branch block; ONLY MODIFY WITH updateRef
Definition at line 68 of file Translation.h.
Referenced by BlockLink(), etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), etiss::Translation::unloadBlocks(), and ~BlockLink().
const etiss::uint64 etiss::BlockLink::end |
end instruction index (excluded)
Definition at line 66 of file Translation.h.
Referenced by etiss::CPUCore::execute(), etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), and etiss::Translation::unloadBlocks().
const ExecBlockCall etiss::BlockLink::execBlock |
function pointer
Definition at line 70 of file Translation.h.
Referenced by etiss::CPUCore::execute().
const std::shared_ptr<void> etiss::BlockLink::jitlib |
library of the associated function
Definition at line 72 of file Translation.h.
BlockLink* etiss::BlockLink::next |
next block; ONLY MODIFY WITH updateRef
Definition at line 67 of file Translation.h.
Referenced by BlockLink(), etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), etiss::Translation::unloadBlocks(), and ~BlockLink().
unsigned etiss::BlockLink::refcount |
number of references to this instance; DO NOT MODIFY
Definition at line 69 of file Translation.h.
Referenced by BlockLink(), decrRef(), incrRef(), and updateRef().
const etiss::uint64 etiss::BlockLink::start |
start instruction index
Definition at line 65 of file Translation.h.
Referenced by etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), and etiss::Translation::unloadBlocks().
bool etiss::BlockLink::valid |
true if the associated function implements current code
Definition at line 71 of file Translation.h.
Referenced by BlockLink(), etiss_CPUCore_handleException(), etiss::Translation::getBlock(), etiss::Translation::getBlockFast(), and etiss::Translation::unloadBlocks().