20 #include <glog/logging.h>
34 o <<
"<PageVersionStatus><flags>"
38 <<
"</PageVersionStatus>";
43 o <<
"<PageVersion><locked>"
54 o << std::endl <<
"<page_id>"
65 o << std::endl <<
"<storage_id_>" << v.
storage_id_ <<
"</storage_id_>";
66 o <<
"<checksum_>" << v.
checksum_ <<
"</checksum_>";
67 o <<
"<page_type_>" <<
static_cast<int>(v.
page_type_) <<
"</page_type_>";
68 o << std::endl <<
"<snapshot_>" << v.
snapshot_ <<
"</snapshot_>";
69 o <<
"<key_count_>" << v.
key_count_ <<
"</key_count_>";
70 o <<
"<masstree_layer_>" <<
static_cast<int>(v.
masstree_layer_) <<
"</masstree_layer_>";
72 <<
"</masstree_in_layer_level_>";
73 o <<
"<hotness_>" <<
static_cast<int>(v.
hotness_.
value_) <<
"</hotness_>";
75 <<
"</stat_last_updater_node_>";
87 const void* address) {
88 const Page* page =
to_page(reinterpret_cast<const void*>(address));
98 ASSERT_ND(!same_page->get_header().snapshot_);
xct::Xct & get_current_xct()
Returns the transaction that is currently running on this thread.
void describe_volatile_pointer(std::ostream *o, VolatilePagePointer pointer)
Page * to_page(const void *address)
super-dirty way to obtain Page the address belongs to.
bool is_retired() const __attribute__((always_inline))
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
Represents one thread running on one NUMA core.
bool is_moved() const __attribute__((always_inline))
Represents a pointer to a volatile page with modification count for preventing ABA.
uint8_t value_
Log arithmic counter of aborts.
Just a synonym of XctId to be used as a page lock mechanism.
bool is_moved() const __attribute__((always_inline))
uint16_t get_hot_threshold_for_this_xct() const
void assert_within_valid_volatile_page_impl(const memory::GlobalVolatilePageResolver &resolver, const void *address)
Just a marker to denote that the memory region represents a data page.
uint32_t get_version_counter() const __attribute__((always_inline))
void describe_snapshot_pointer(std::ostream *o, SnapshotPagePointer pointer)
PageVersionStatus status_
VolatilePagePointer construct_volatile_page_pointer(uint64_t word)
Convenient way of writing hex integers to stream.
PageHeader & get_header()
At least the basic header exists in all pages.
std::ostream & operator<<(std::ostream &o, const Composer &v)
bool is_retired() const __attribute__((always_inline))
#define ASSERT_ND(x)
A warning-free wrapper macro of assert() that has no performance effect in release mode even when 'x'...
bool is_locked() const __attribute__((always_inline))