LibRegex: Set a signpost on every executed regular expression

This commit is contained in:
Ali Mohammad Pur 2021-09-12 00:20:07 +04:30 committed by Ali Mohammad Pur
parent 246ab432ff
commit e4b1c0b8b1
Notes: sideshowbarker 2024-07-18 04:46:35 +09:00

View file

@ -11,6 +11,10 @@
#include <LibRegex/RegexMatcher.h>
#include <LibRegex/RegexParser.h>
#ifdef __serenity__
# include <serenity.h>
#endif
#if REGEX_DEBUG
# include <LibRegex/RegexDebug.h>
#endif
@ -115,6 +119,11 @@ RegexResult Matcher<Parser>::match(RegexStringView const& view, Optional<typenam
template<typename Parser>
RegexResult Matcher<Parser>::match(Vector<RegexStringView> const& views, Optional<typename ParserTraits<Parser>::OptionsType> regex_options) const
{
#ifdef __serenity__
auto perf_string_id = perf_register_string(m_pattern->pattern_value.characters(), m_pattern->pattern_value.length());
perf_event(PERF_EVENT_SIGNPOST, perf_string_id, 0);
#endif
// If the pattern *itself* isn't stateful, reset any changes to start_offset.
if (!((AllFlags)m_regex_options.value() & AllFlags::Internal_Stateful))
m_pattern->start_offset = 0;