Nanotrace: Remove ObjectToken

There is no direct support in Perfetto. It can be simulated by
asynchronous tokens but then asynchronous tokens can be used directly.

Task-number: QDS-11952
Change-Id: I62dff6e8c1e93b71ccdc7b1678817d1909afa37c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2024-02-15 11:59:05 +01:00
parent 6fa00b8129
commit 12ad750d16
2 changed files with 0 additions and 115 deletions

View File

@@ -724,101 +724,6 @@ using StringViewWithStringArgumentsCategory = Category<StringViewWithStringArgum
using DisabledToken = Token<StringViewCategory<Tracing::IsDisabled>, Tracing::IsDisabled>;
template<typename Category, Tracing isEnabled>
class ObjectToken : public BasicDisabledToken
{
public:
using ArgumentType = typename Category::ArgumentType;
ObjectToken() = default;
ObjectToken(const ObjectToken &) = delete;
ObjectToken &operator=(const ObjectToken &) = delete;
ObjectToken(ObjectToken &&other) noexcept = default;
ObjectToken &operator=(ObjectToken &&other) noexcept = default;
~ObjectToken() = default;
template<typename... Arguments>
void change(ArgumentType, Arguments &&...)
{}
};
template<typename Category>
class ObjectToken<Category, Tracing::IsEnabled> : public BasicEnabledToken
{
using CategoryFunctionPointer = typename Category::CategoryFunctionPointer;
ObjectToken(std::string_view name, std::size_t id, CategoryFunctionPointer category)
: m_name{name}
, m_id{id}
, m_category{category}
{}
public:
using StringType = typename Category::StringType;
using ArgumentType = typename Category::ArgumentType;
friend Category;
ObjectToken(const ObjectToken &other)
: m_name{other.m_name}
, m_category{other.m_category}
{
if (other.m_id)
m_id = m_category().beginObject(m_name).m_id;
}
ObjectToken &operator=(const ObjectToken &other)
{
if (this != &other) {
~ObjectToken();
if (other.m_id) {
m_category = other.m_category;
m_name = other.m_name;
m_id = other.m_category->beginObject(other.m_name).m_id;
}
}
}
ObjectToken(ObjectToken &&other) noexcept
: m_name{std::move(other.m_name)}
, m_id{std::exchange(other.m_id, 0)}
, m_category{std::exchange(other.m_category, nullptr)}
{}
ObjectToken &operator=(ObjectToken &&other) noexcept
{
if (&other != this) {
m_name = std::move(other.m_name);
m_id = std::exchange(other.m_id, 0);
m_category = std::exchange(other.m_category, nullptr);
}
return *this;
}
~ObjectToken()
{
if (m_id)
m_category().end('e', m_id, std::move(m_name));
m_id = 0;
}
template<typename... Arguments>
void change(ArgumentType name, Arguments &&...arguments)
{
if (m_id) {
m_category().tick(
'n', m_id, std::move(name), 0, IsFlow::No, std::forward<Arguments>(arguments)...);
}
}
private:
StringType m_name;
std::size_t m_id = 0;
CategoryFunctionPointer m_category = nullptr;
};
template<typename Category, Tracing isEnabled>
class AsynchronousToken : public BasicDisabledToken
{
@@ -1184,7 +1089,6 @@ public:
using ArgumentType = typename TraceEvent::ArgumentType;
using ArgumentsStringType = typename TraceEvent::ArgumentsStringType;
using AsynchronousTokenType = AsynchronousToken<Category, Tracing::IsDisabled>;
using ObjectTokenType = ObjectToken<Category, Tracing::IsDisabled>;
using FlowTokenType = FlowToken<Category, Tracing::IsDisabled>;
using TracerType = Tracer<Category, std::false_type>;
using TokenType = Token<Category, Tracing::IsDisabled>;
@@ -1206,12 +1110,6 @@ public:
ArgumentType, Arguments &&...)
{}
template<typename... Arguments>
[[nodiscard]] ObjectTokenType beginObject(ArgumentType, Arguments &&...)
{
return {};
}
template<typename... Arguments>
[[nodiscard]] TracerType beginDuration(ArgumentType, Arguments &&...)
{
@@ -1240,14 +1138,12 @@ public:
using ArgumentsStringType = typename TraceEvent::ArgumentsStringType;
using StringType = typename TraceEvent::StringType;
using AsynchronousTokenType = AsynchronousToken<Category, Tracing::IsEnabled>;
using ObjectTokenType = ObjectToken<Category, Tracing::IsEnabled>;
using FlowTokenType = FlowToken<Category, Tracing::IsEnabled>;
using TracerType = Tracer<Category, std::true_type>;
using TokenType = Token<Category, Tracing::IsEnabled>;
using CategoryFunctionPointer = Category &(*) ();
friend AsynchronousTokenType;
friend ObjectTokenType;
friend TokenType;
friend FlowTokenType;
friend TracerType;
@@ -1292,16 +1188,6 @@ public:
std::forward_as_tuple(PrivateTag{}, traceName, bindId, m_self)};
}
template<typename... Arguments>
[[nodiscard]] ObjectTokenType beginObject(ArgumentType traceName, Arguments &&...arguments)
{
std::size_t id = createId();
begin('b', id, std::move(traceName), 0, IsFlow::No, std::forward<Arguments>(arguments)...);
return {traceName, id, m_self};
}
template<typename... Arguments>
[[nodiscard]] TracerType beginDuration(ArgumentType traceName, Arguments &&...arguments)
{

View File

@@ -38,7 +38,6 @@ constexpr NanotraceHR::Tracing tracingStatus()
}
using Category = NanotraceHR::StringViewWithStringArgumentsCategory<tracingStatus()>;
using ObjectTraceToken = Category::ObjectTokenType;
using AsynchronousToken = Category::AsynchronousTokenType;
QMLDESIGNERCORE_EXPORT Category &category();