From c7d946a3d97bf3e9a76111c082b6350487b8805d Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Wed, 31 Aug 2011 13:40:52 +0100 Subject: [PATCH] simplify clone to just be an increment --- btree.tcc | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/btree.tcc b/btree.tcc index 3ff83b9..09e5210 100644 --- a/btree.tcc +++ b/btree.tcc @@ -401,30 +401,8 @@ template typename btree::ptr btree::clone() const { - using namespace btree_detail; - ro_spine spine(tm_); - - spine.step(root_); - write_ref new_root = tm_->new_block(); - - internal_node o = spine.template get_node(); - if (o.get_type() == INTERNAL) { - internal_node n = to_node(new_root); - ::memcpy(n.raw(), o.raw(), MD_BLOCK_SIZE); - - typename uint64_traits::ref_counter rc(internal_rc_); - n.inc_children(rc); - } else { - leaf_node n = to_node(new_root); - ::memcpy(n.raw(), o.raw(), MD_BLOCK_SIZE); - - typename ValueTraits::ref_counter rc(rc_); - n.inc_children(rc); - } - - return btree::ptr( - new btree( - tm_, new_root.get_location(), rc_)); + tm_->get_sm()->inc(root_); + return ptr(new btree(tm_, root_, rc_)); } #if 0