# # # patch "cmd_merging.cc" # from [89f42ba29c37619121bfaaa4a0912fd890d9549c] # to [8e41c7945842d6fb763442c1bd0d49198785bbae] # # patch "cmd_netsync.cc" # from [8bf20313954aa7e71da03ee5e9280bbd6b34cfb5] # to [345f4a1de0c39d33ff215969e85884cd67f3f255] # # patch "cmd_ws_commit.cc" # from [eeb3a84d8e43c532cd3888bd844454a961b0c7f2] # to [f2de0b9981eccd52be3dedd1a8a6df1268541a5a] # # patch "database.hh" # from [0cf5bf163523720b681afd1739903947c8d8af65] # to [06b5ded87a551927072f092bde8b6eb20dcecfb7] # # patch "diff_patch.cc" # from [cf2d7cc5e009af8cb256384d9ff70ec8d537b3df] # to [40f9c7d5b2bed90ea48f4104591b5dc6fae8997d] # # patch "roster.cc" # from [e36b1e83bf7a5a3538f0a882feaccb9f32250118] # to [a669689fe53c7f4bbe048fbdea18f547bb6e99b6] # # patch "roster.hh" # from [2a6c8163373bb6edd8ad291fc333c007e364b194] # to [e7edf72c5072ee37d3616544fee37b94a73283cb] # # patch "work.cc" # from [831ef4d2dbcada1d37de642e99dd4d55dbe4f975] # to [9dce7b32e4ae4bdc1d8f8c04c24232ef678baa51] # ============================================================ --- cmd_merging.cc 89f42ba29c37619121bfaaa4a0912fd890d9549c +++ cmd_merging.cc 8e41c7945842d6fb763442c1bd0d49198785bbae @@ -246,13 +246,13 @@ update(app_state & app, commands::comman temp_node_id_source nis; // Get the OLD roster, and finish getting the WORKING roster - database::roster_t_cp old_roster + roster_t_cp old_roster = parent_cached_roster(parents.begin()).first; MM(*old_roster); app.work.update_current_roster_from_filesystem(working_roster); // Get the CHOSEN roster - database::cached_roster chosen_roster; + cached_roster chosen_roster; app.db.get_roster(chosen_rid, chosen_roster); MM(*chosen_roster.first); @@ -686,7 +686,7 @@ CMD(merge_into_workspace, "merge_into_wo options::opts::none) { revision_id left_id, right_id; - database::cached_roster left, right; + cached_roster left, right; roster_t working_roster; if (args.size() != 1) @@ -732,7 +732,7 @@ CMD(merge_into_workspace, "merge_into_wo merge_result); revision_id lca_id; - database::cached_roster lca; + cached_roster lca; find_common_ancestor_for_merge(left_id, right_id, lca_id, app); app.db.get_roster(lca_id, lca); ============================================================ --- cmd_netsync.cc 8bf20313954aa7e71da03ee5e9280bbd6b34cfb5 +++ cmd_netsync.cc 345f4a1de0c39d33ff215969e85884cd67f3f255 @@ -414,7 +414,7 @@ CMD(clone, "clone", "", CMD_REF(network) } shared_ptr empty_roster = shared_ptr(new roster_t()); - database::cached_roster current_roster; + cached_roster current_roster; L(FL("checking out revision %s to directory %s") % ident % workspace_dir); app.db.get_roster(ident, current_roster); ============================================================ --- cmd_ws_commit.cc eeb3a84d8e43c532cd3888bd844454a961b0c7f2 +++ cmd_ws_commit.cc f2de0b9981eccd52be3dedd1a8a6df1268541a5a @@ -598,7 +598,7 @@ CMD(checkout, "checkout", "co", CMD_REF( app.create_workspace(dir); L(FL("checking out revision %s to directory %s") % revid % dir); - database::cached_roster current_roster; + cached_roster current_roster; app.db.get_roster(revid, current_roster); parent_map parents; safe_insert(parents, std::make_pair(revid, current_roster)); @@ -1178,7 +1178,7 @@ commit(app_state & app, commands::comman // the work roster is now whatever changes remain on top of the revision // we just checked in. { - database::cached_roster new_parent; + cached_roster new_parent; app.db.get_roster(restricted_rev_id, new_parent); parent_map new_parents; safe_insert(new_parents, std::make_pair(restricted_rev_id, new_parent)); ============================================================ --- database.hh 0cf5bf163523720b681afd1739903947c8d8af65 +++ database.hh 06b5ded87a551927072f092bde8b6eb20dcecfb7 @@ -163,10 +163,6 @@ private: // --== Write-buffering -- tied into transaction ==-- // --== machinery and delta compression machinery ==-- // -public: - typedef boost::shared_ptr roster_t_cp; - typedef boost::shared_ptr marking_map_cp; - typedef std::pair cached_roster; private: struct roster_size_estimator { @@ -594,56 +590,6 @@ public: revision_t const & rev); }; -// Parent maps are used in a number of places to keep track of all the -// parent rosters of a given revision. -typedef std::map -parent_map; - -typedef parent_map::value_type -parent_entry; - -inline revision_id const & parent_id(parent_entry const & p) -{ - return p.first; -} - -inline revision_id const & parent_id(parent_map::const_iterator i) -{ - return i->first; -} - -inline database::cached_roster const & -parent_cached_roster(parent_entry const & p) -{ - return p.second; -} - -inline database::cached_roster const & -parent_cached_roster(parent_map::const_iterator i) -{ - return i->second; -} - -inline roster_t const & parent_roster(parent_entry const & p) -{ - return *(p.second.first); -} - -inline roster_t const & parent_roster(parent_map::const_iterator i) -{ - return *(i->second.first); -} - -inline marking_map const & parent_marking(parent_entry const & p) -{ - return *(p.second.second); -} - -inline marking_map const & parent_marking(parent_map::const_iterator i) -{ - return *(i->second.second); -} - // Transaction guards nest. Acquire one in any scope you'd like // transaction-protected, and it'll make sure the db aborts a transaction // if there's any exception before you call commit(). ============================================================ --- diff_patch.cc cf2d7cc5e009af8cb256384d9ff70ec8d537b3df +++ diff_patch.cc 40f9c7d5b2bed90ea48f4104591b5dc6fae8997d @@ -538,7 +538,7 @@ load_and_cache_roster(revision_id const rout = i->second; else { - database::cached_roster cr; + cached_roster cr; app.db.get_roster(rid, cr); safe_insert(rmap, make_pair(rid, cr.first)); rout = cr.first; ============================================================ --- roster.cc e36b1e83bf7a5a3538f0a882feaccb9f32250118 +++ roster.cc a669689fe53c7f4bbe048fbdea18f547bb6e99b6 @@ -1876,7 +1876,7 @@ namespace { cset const & right_cs = edge_changes(i); I(!null_id(left_rid) && !null_id(right_rid)); - database::cached_roster left_cached, right_cached; + cached_roster left_cached, right_cached; db.get_roster(left_rid, left_cached); db.get_roster(right_rid, right_cached); @@ -4821,7 +4821,7 @@ create_random_unification_task(roster_t editable_roster_base & right_erb, editable_roster_for_merge & left_erm, editable_roster_for_merge & right_erm, - randomizer & rng) + randomizer & rng) { size_t n_nodes = 20 + rng.uniform(60); ============================================================ --- roster.hh 2a6c8163373bb6edd8ad291fc333c007e364b194 +++ roster.hh e7edf72c5072ee37d3616544fee37b94a73283cb @@ -320,6 +320,61 @@ template <> void dump(roster_t const & v template <> void dump(roster_t const & val, std::string & out); +// Const, shareable types for rosters (used in the db cache, for instance). +typedef boost::shared_ptr roster_t_cp; +typedef boost::shared_ptr marking_map_cp; +typedef std::pair cached_roster; + +// Parent maps are used in a number of places to keep track of all the +// parent rosters of a given revision. +typedef std::map +parent_map; + +typedef parent_map::value_type +parent_entry; + +inline revision_id const & parent_id(parent_entry const & p) +{ + return p.first; +} + +inline revision_id const & parent_id(parent_map::const_iterator i) +{ + return i->first; +} + +inline cached_roster const & +parent_cached_roster(parent_entry const & p) +{ + return p.second; +} + +inline cached_roster const & +parent_cached_roster(parent_map::const_iterator i) +{ + return i->second; +} + +inline roster_t const & parent_roster(parent_entry const & p) +{ + return *(p.second.first); +} + +inline roster_t const & parent_roster(parent_map::const_iterator i) +{ + return *(i->second.first); +} + +inline marking_map const & parent_marking(parent_entry const & p) +{ + return *(p.second.second); +} + +inline marking_map const & parent_marking(parent_map::const_iterator i) +{ + return *(i->second.second); +} + class app_state; class database; struct revision_t; ============================================================ --- work.cc 831ef4d2dbcada1d37de642e99dd4d55dbe4f975 +++ work.cc 9dce7b32e4ae4bdc1d8f8c04c24232ef678baa51 @@ -155,7 +155,7 @@ get_roster_for_rid(revision_id const & r static void get_roster_for_rid(revision_id const & rid, - database::cached_roster & cr, + cached_roster & cr, database & db) { // We may be asked for a roster corresponding to the null rid, which @@ -184,7 +184,7 @@ workspace::get_parent_rosters(parent_map parents.clear(); for (edge_map::const_iterator i = rev.edges.begin(); i != rev.edges.end(); i++) { - database::cached_roster cr; + cached_roster cr; get_roster_for_rid(edge_old_revision(i), cr, db); safe_insert(parents, make_pair(edge_old_revision(i), cr)); }