Remove scheduled optimization from ThreadedRegexVM
This does not seem to actually speed up execution as threads will be dropped on next step anyway
This commit is contained in:
parent
3150e9b3cd
commit
762064dc68
|
@ -873,7 +873,7 @@ private:
|
||||||
const auto res = m_program.instructions.size();
|
const auto res = m_program.instructions.size();
|
||||||
if (res >= max_instructions)
|
if (res >= max_instructions)
|
||||||
throw regex_error(format("regex compiled to more than {} instructions", max_instructions));
|
throw regex_error(format("regex compiled to more than {} instructions", max_instructions));
|
||||||
m_program.instructions.push_back({ op, false, 0, param });
|
m_program.instructions.push_back({ op, 0, param });
|
||||||
return OpIndex(res);
|
return OpIndex(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,9 +112,7 @@ struct CompiledRegex : RefCountable, UseMemoryDomain<MemoryDomain::Regex>
|
||||||
struct Instruction
|
struct Instruction
|
||||||
{
|
{
|
||||||
Op op;
|
Op op;
|
||||||
// Those mutables are used during execution
|
mutable uint16_t last_step; // mutable as used during execution
|
||||||
mutable bool scheduled;
|
|
||||||
mutable uint16_t last_step;
|
|
||||||
Param param;
|
Param param;
|
||||||
};
|
};
|
||||||
static_assert(sizeof(Instruction) == 8);
|
static_assert(sizeof(Instruction) == 8);
|
||||||
|
@ -349,9 +347,6 @@ private:
|
||||||
release_saves(thread.saves);
|
release_saves(thread.saves);
|
||||||
};
|
};
|
||||||
auto consumed = [this, &thread]() {
|
auto consumed = [this, &thread]() {
|
||||||
if (m_program.instructions[thread.inst].scheduled)
|
|
||||||
return release_saves(thread.saves);
|
|
||||||
m_program.instructions[thread.inst].scheduled = true;
|
|
||||||
m_threads.push_next(thread);
|
m_threads.push_next(thread);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -479,9 +474,6 @@ private:
|
||||||
while (not m_threads.current_is_empty())
|
while (not m_threads.current_is_empty())
|
||||||
step_thread(pos, current_step, m_threads.pop_current(), config);
|
step_thread(pos, current_step, m_threads.pop_current(), config);
|
||||||
|
|
||||||
for (auto& thread : m_threads.next_threads())
|
|
||||||
m_program.instructions[thread.inst].scheduled = false;
|
|
||||||
|
|
||||||
if (pos == config.end or
|
if (pos == config.end or
|
||||||
(m_threads.next_is_empty() and (not search or m_found_match)) or
|
(m_threads.next_is_empty() and (not search or m_found_match)) or
|
||||||
(m_found_match and any_match))
|
(m_found_match and any_match))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user