20 #include <glog/logging.h> 
   38     << 
" prefetching " << 
get_name() << 
" from=" << from << 
", to=" << to;
 
   73     for (uint8_t i = 0; i < count; ++i) {
 
   88     for (uint8_t i = 0; i <= count; ++i) {
 
   89       if (i < count && page->get_separator(i) >= from) {
 
   96       for (uint8_t j = 0; j <= minipage.
key_count_; ++j) {
 
  125         reinterpret_cast<Page**>(&child)));
 
ErrorCode prefetch_pages_follow(thread::Thread *context, DualPagePointer *pointer, bool vol_on, bool snp_on, KeySlice from, KeySlice to)
const KeySlice kInfimumSlice
const StorageName & get_name() const 
ErrorCode find_or_read_a_snapshot_page(storage::SnapshotPagePointer page_id, storage::Page **out)
Find the given page in snapshot cache, reading it if not found. 
SlotIndex get_key_count() const __attribute__((always_inline))
physical key count (those keys might be deleted) in this page. 
KeySlice get_slice(SlotIndex index) const __attribute__((always_inline))
ErrorCode install_a_volatile_page(storage::DualPagePointer *pointer, storage::Page **installed_page)
Installs a volatile page to the given dual pointer as a copy of the snapshot page. 
Represents a pointer to another page (usually a child page). 
bool is_empty_range() const __attribute__((always_inline))
An empty-range page, either intermediate or border, never has any entries. 
Page * to_page(const void *address)
super-dirty way to obtain Page the address belongs to. 
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services). 
bool is_border() const __attribute__((always_inline))
Represents one thread running on one NUMA core. 
ThreadId get_thread_id() const 
MiniPage & get_minipage(uint8_t index) __attribute__((always_inline))
Represents one border page in Masstree Storage. 
DualPagePointer * get_next_layer(SlotIndex index) __attribute__((always_inline))
ErrorCode prefetch_pages_normalized(thread::Thread *context, bool install_volatile, bool cache_snapshot, KeySlice from, KeySlice to)
defined in masstree_storage_prefetch.cpp 
uint64_t KeySlice
Each key slice is an 8-byte integer. 
Common base of MasstreeIntermediatePage and MasstreeBorderPage. 
VolatilePagePointer get_foster_minor() const __attribute__((always_inline))
VolatilePagePointer get_foster_major() const __attribute__((always_inline))
KeySlice get_separator(uint8_t index) const __attribute__((always_inline))
DualPagePointer pointers_[kMaxIntermediateMiniSeparators+1]
VolatilePagePointer volatile_pointer_
ErrorCode get_first_root(thread::Thread *context, bool for_write, MasstreeIntermediatePage **root)
Root-node related, such as a method to retrieve 1st-root, to grow, etc. 
uint64_t stop()
Take another current time tick. 
void prefetch_page_l2(const void *page)
Prefetch a page to L2/L3 cache. 
SnapshotPagePointer snapshot_pointer_
Just a marker to denote that the memory region represents a data page. 
P * resolve_cast(storage::VolatilePagePointer ptr) const 
resolve() plus reinterpret_cast 
KeySlice separators_[kMaxIntermediateMiniSeparators]
Same semantics as separators_ in enclosing class. 
bool has_foster_child() const __attribute__((always_inline))
ErrorCode prefetch_pages_normalized_recurse(thread::Thread *context, bool install_volatile, bool cache_snapshot, KeySlice from, KeySlice to, MasstreePage *page)
double elapsed_us() const 
#define CHECK_ERROR_CODE(x)
This macro calls x and checks its returned error code. 
const KeySlice kSupremumSlice
Represents one intermediate page in Masstree Storage. 
#define ASSERT_ND(x)
A warning-free wrapper macro of assert() that has no performance effect in release mode even when 'x'...
A high-resolution stop watch. 
bool does_point_to_layer(SlotIndex index) const __attribute__((always_inline))
ErrorCode
Enum of error codes defined in error_code.xmacro.