aboutsummaryrefslogtreecommitdiff
path: root/build2/algorithm.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/algorithm.cxx')
-rw-r--r--build2/algorithm.cxx34
1 files changed, 8 insertions, 26 deletions
diff --git a/build2/algorithm.cxx b/build2/algorithm.cxx
index fa9787b..5e18441 100644
--- a/build2/algorithm.cxx
+++ b/build2/algorithm.cxx
@@ -19,32 +19,6 @@ using namespace butl;
namespace build2
{
- const target*
- search_existing (const prerequisite& p)
- {
- assert (phase == run_phase::match); // Could be relaxed.
-
- const target* r (p.target.load (memory_order_consume));
-
- if (r == nullptr)
- {
- const prerequisite_key& pk (p.key ());
- r = pk.proj ? import_existing (pk) : search_existing_target (pk);
-
- if (r != nullptr)
- {
- const target* e (nullptr);
- if (!p.target.compare_exchange_strong (
- e, r,
- memory_order_release,
- memory_order_consume))
- assert (e == r);
- }
- }
-
- return r;
- }
-
const target&
search (const target& t, const prerequisite_key& pk)
{
@@ -62,6 +36,14 @@ namespace build2
return create_new_target (pk);
}
+ const target*
+ search_existing (const prerequisite_key& pk)
+ {
+ assert (phase == run_phase::match || phase == run_phase::execute);
+
+ return pk.proj ? import_existing (pk) : search_existing_target (pk);
+ }
+
const target&
search (const target& t, name n, const scope& s)
{