mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-08 05:27:14 +09:00
LibRegex: Use ReadonlySpan to peek into OpCode_Compare LUTs
By the time we're executing bytecode, we know the the bytecode will be flattened. This means we can use ReadonlySpan to look into it instead of DisjointChunks::spans(), which allocates.
This commit is contained in:
parent
c1c3b01a6c
commit
87ec5b32b0
Notes:
github-actions[bot]
2025-04-14 15:41:09 +00:00
Author: https://github.com/awesomekling
Commit: 87ec5b32b0
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4351
2 changed files with 7 additions and 1 deletions
|
@ -357,6 +357,12 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] ReadonlySpan<T> flat_data() const
|
||||||
|
{
|
||||||
|
VERIFY(m_chunks.size() <= 1);
|
||||||
|
return m_chunks.is_empty() ? ReadonlySpan<T> {} : m_chunks.first().span();
|
||||||
|
}
|
||||||
|
|
||||||
DisjointChunks release_slice(size_t start, size_t length) & { return move(*this).slice(start, length); }
|
DisjointChunks release_slice(size_t start, size_t length) & { return move(*this).slice(start, length); }
|
||||||
DisjointChunks release_slice(size_t start) & { return move(*this).slice(start); }
|
DisjointChunks release_slice(size_t start) & { return move(*this).slice(start); }
|
||||||
|
|
||||||
|
|
|
@ -540,7 +540,7 @@ ALWAYS_INLINE ExecutionResult OpCode_Compare::execute(MatchInput const& input, M
|
||||||
return ExecutionResult::Failed_ExecuteLowPrioForks;
|
return ExecutionResult::Failed_ExecuteLowPrioForks;
|
||||||
|
|
||||||
auto count = m_bytecode->at(offset++);
|
auto count = m_bytecode->at(offset++);
|
||||||
auto range_data = m_bytecode->template spans<4>().slice(offset, count);
|
auto range_data = m_bytecode->flat_data().slice(offset, count);
|
||||||
offset += count;
|
offset += count;
|
||||||
|
|
||||||
auto ch = input.view[state.string_position_in_code_units];
|
auto ch = input.view[state.string_position_in_code_units];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue