modify build setup
[c11concurrency-benchmarks.git] / silo / txn.cc
1 #include "macros.h"
2 #include "amd64.h"
3 #include "txn.h"
4 #include "txn_proto2_impl.h"
5 #include "txn_btree.h"
6 #include "lockguard.h"
7 #include "scopedperf.hh"
8
9 #include <algorithm>
10 #include <iostream>
11 #include <sstream>
12 #include <vector>
13 #include <utility>
14
15 using namespace std;
16 using namespace util;
17
18 static string
19 proto1_version_str(uint64_t v) UNUSED;
20 static string
21 proto1_version_str(uint64_t v)
22 {
23   ostringstream b;
24   b << v;
25   return b.str();
26 }
27
28 static string
29 proto2_version_str(uint64_t v) UNUSED;
30 static string
31 proto2_version_str(uint64_t v)
32 {
33   ostringstream b;
34   b << "[core=" << transaction_proto2_static::CoreId(v) << " | n="
35     << transaction_proto2_static::NumId(v) << " | epoch="
36     << transaction_proto2_static::EpochId(v) << "]";
37   return b.str();
38 }
39
40 // XXX(stephentu): hacky!
41 string (*g_proto_version_str)(uint64_t v) = proto2_version_str;
42
43 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe0, g_txn_commit_probe0_cg);
44 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe1, g_txn_commit_probe1_cg);
45 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe2, g_txn_commit_probe2_cg);
46 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe3, g_txn_commit_probe3_cg);
47 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe4, g_txn_commit_probe4_cg);
48 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe5, g_txn_commit_probe5_cg);
49 CLASS_STATIC_COUNTER_IMPL(transaction_base, scopedperf::tsc_ctr, g_txn_commit_probe6, g_txn_commit_probe6_cg);
50
51 #define EVENT_COUNTER_IMPL_X(x) \
52   event_counter transaction_base::g_ ## x ## _ctr(#x);
53 ABORT_REASONS(EVENT_COUNTER_IMPL_X)
54 #undef EVENT_COUNTER_IMPL_X
55
56 event_counter transaction_base::g_evt_read_logical_deleted_node_search
57     ("read_logical_deleted_node_search");
58 event_counter transaction_base::g_evt_read_logical_deleted_node_scan
59     ("read_logical_deleted_node_scan");
60 event_counter transaction_base::g_evt_dbtuple_write_search_failed
61     ("dbtuple_write_search_failed");
62 event_counter transaction_base::g_evt_dbtuple_write_insert_failed
63     ("dbtuple_write_insert_failed");
64
65 event_counter transaction_base::evt_local_search_lookups("local_search_lookups");
66 event_counter transaction_base::evt_local_search_write_set_hits("local_search_write_set_hits");
67 event_counter transaction_base::evt_dbtuple_latest_replacement("dbtuple_latest_replacement");