libfoedus-core
FOEDUS Core Library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
foedus::storage::masstree::MasstreeIntermediatePage::MiniPage Struct Reference

Detailed Description

Definition at line 265 of file masstree_page_impl.hpp.

#include <masstree_page_impl.hpp>

Collaboration diagram for foedus::storage::masstree::MasstreeIntermediatePage::MiniPage:

Public Member Functions

 MiniPage ()=delete
 
 MiniPage (const MiniPage &other)=delete
 
MiniPageoperator= (const MiniPage &other)=delete
 
void prefetch () const
 prefetch upto separators. More...
 
uint8_t find_pointer (KeySlice slice) const __attribute__((always_inline))
 Navigates a searching key-slice to one of pointers in this mini-page. More...
 

Public Attributes

uint8_t key_count_
 
uint8_t reserved_ [7]
 
KeySlice separators_ [kMaxIntermediateMiniSeparators]
 Same semantics as separators_ in enclosing class. More...
 
DualPagePointer pointers_ [kMaxIntermediateMiniSeparators+1]
 

Constructor & Destructor Documentation

foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::MiniPage ( )
delete
foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::MiniPage ( const MiniPage other)
delete

Member Function Documentation

uint8_t foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::find_pointer ( KeySlice  slice) const
inline

Navigates a searching key-slice to one of pointers in this mini-page.

Definition at line 287 of file masstree_page_impl.hpp.

References ASSERT_ND, and key_count_.

Referenced by foedus::storage::masstree::MasstreeStoragePimpl::fatify_first_root_double(), foedus::storage::masstree::MasstreeStoragePimpl::find_border_physical(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_next_layer(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_this_layer_recurse(), foedus::storage::masstree::Adopt::run(), and foedus::storage::masstree::MasstreeBorderPage::track_moved_record_next_layer().

287  {
288  uint8_t key_count = key_count_;
290  for (uint8_t i = 0; i < key_count; ++i) {
291  if (slice < separators_[i]) {
292  return i;
293  }
294  }
295  return key_count;
296  }
const uint16_t kMaxIntermediateMiniSeparators
Max number of separators stored in the second level of intermediate pages.
KeySlice separators_[kMaxIntermediateMiniSeparators]
Same semantics as separators_ in enclosing class.
#define ASSERT_ND(x)
A warning-free wrapper macro of assert() that has no performance effect in release mode even when 'x'...
Definition: assert_nd.hpp:72

Here is the caller graph for this function:

MiniPage& foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::operator= ( const MiniPage other)
delete
void foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::prefetch ( ) const
inline

prefetch upto separators.

Definition at line 281 of file masstree_page_impl.hpp.

References foedus::assorted::prefetch_cachelines().

Referenced by foedus::storage::masstree::MasstreeStoragePimpl::find_border_physical(), foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_next_layer(), and foedus::storage::masstree::MasstreeStoragePimpl::peek_volatile_page_boundaries_this_layer_recurse().

281  {
283  }
void prefetch_cachelines(const void *address, int cacheline_count)
Prefetch multiple contiguous cachelines to L1 cache.
Definition: cacheline.hpp:66

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

uint8_t foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::key_count_

Definition at line 271 of file masstree_page_impl.hpp.

Referenced by foedus::storage::masstree::Adopt::adopt_case_b(), foedus::storage::masstree::MasstreeIntermediatePage::append_minipage_snapshot(), foedus::storage::masstree::MasstreeIntermediatePage::append_pointer_snapshot(), foedus::storage::masstree::MasstreeComposer::construct_root(), foedus::storage::masstree::count_children_approximate(), foedus::storage::masstree::design_partition_first_parallel_recurse(), foedus::storage::masstree::MasstreeIntermediatePage::extract_separators_common(), find_pointer(), foedus::storage::masstree::MasstreeIntermediatePointerIterator::get_high_key(), foedus::storage::masstree::grow_case_b_common(), foedus::storage::masstree::MasstreeIntermediatePage::initialize_snapshot_page(), foedus::storage::masstree::MasstreeIntermediatePage::initialize_volatile_page(), foedus::storage::masstree::MasstreeIntermediatePage::is_full_snapshot(), foedus::storage::masstree::MasstreeIntermediatePointerIterator::is_valid(), foedus::storage::masstree::MasstreeIntermediatePointerIterator::next(), foedus::storage::masstree::operator<<(), foedus::storage::masstree::MasstreeStoragePimpl::prefetch_pages_normalized_recurse(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive(), foedus::storage::masstree::MasstreeIntermediatePage::release_pages_recursive_parallel(), foedus::storage::masstree::MasstreeIntermediatePage::verify_separators(), and foedus::storage::masstree::MasstreeStoragePimpl::verify_single_thread_intermediate().

uint8_t foedus::storage::masstree::MasstreeIntermediatePage::MiniPage::reserved_[7]

Definition at line 272 of file masstree_page_impl.hpp.


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