Age | Commit message (Collapse) | Author |
|
If the utilization of a HashTable (size vs capacity) goes below 20%,
we'll now shrink the table down to capacity = (size * 2).
This fixes an issue where tables would grow infinitely when inserting
and removing keys repeatedly. Basically, we would accumulate deleted
buckets with nothing reclaiming them, and eventually deciding that we
needed to grow the table (because we grow if used+deleted > limit!)
I found this because HashTable iteration was taking a suspicious amount
of time in Core::EventLoop::get_next_timer_expiration(). Turns out the
timer table kept growing in capacity over time. That made iteration
slower and slower since HashTable iterators visit every bucket.
|
|
This was only used by remove_all_matching(), where it's no longer used.
|
|
Just walk the table from start to finish, deleting buckets as we go.
This removes the need for remove() to return an iterator, which is
preventing me from implementing hash table auto-shrinking.
|
|
This can be quite noisy and isn't generally useful information.
|
|
|
|
This helper allows Time to be constructed from a tick count and a ticks
per second value.
|
|
|
|
The log base 2 is implemented using the binary logarithm algorithm
by Clay Turner (see the link in the comment)
|
|
|
|
Add tests to ensure that the fixed point numbers compare correctly to
integrals
|
|
This allows us to eliminate a major source of infallible allocation in
the Kernel, as well as lay down the groundwork for OOM fallibility in
userland.
|
|
This will allow us to make a fallible version of the JSON serializers.
|
|
This will be caught by new test cases: when the initial chunk is empty,
a dereference before calling operator++ on the iterator will crash as
the initial chunk's size is never checked.
|
|
This extracts the shatter_chunk logic, because it needs to be different
for FixedArray.
|
|
Previously, although we were taking a moved chunk, we still copied it
into our chunk list. This makes DisjointChunk compatible with containers
that don't have a copy constructor but a move constructor.
|
|
I think we just forgot when we added it.
|
|
|
|
|
|
This also exists on Vector, and although it's less needed here, it's
perfectly reasonable to have.
|
|
It's a convenience constructor. But it also seems more consistent
to allow a Span being made from both raw and managed arrays.
|
|
Array should be able to tell the type of the elements it contains.
|
|
This matches how other implementations behave.
1% progression on ACID3. :^)
|
|
This allows you to split around a custom separator, and enables
expressive code like this:
string.split_view(is_ascii_space);
|
|
|
|
Allow specifying a custom format string that's being used for each item
instead of hardcoding "{}".
|
|
|
|
|
|
This would throw some really weird linker errors, so let's prevent it
from happening instead!
|
|
This adds a NOLINT directive to the definition of the TODO() macro.
clang-tidy wants the assert replaced with a static_assert, since the
macro simply resolves to assert(false). This is obviously nonsensical,
since we want the code to still compile even with TODO().
The same fix has already been implemented for VERIFY_NOT_REACHED().
|
|
If the trimmed string would be the entire string, just return *this
instead of creating a new StringImpl.
|
|
Instead of calling String::to_lowercase(), do case-insensitive hashing
and comparison.
|
|
This allows Lagom to be built successfully for Apple M1.
Fixes #12644.
|
|
Add a partial implementation of HTML5 Worker API.
Messages can be sent from the inner context externally.
|
|
While the code did already VERIFY that the ErrorOr holds a value, this
was done by Variant, so the error message was just that `has<T>()` is
false. This is less helpful than I would like, especially if backtraces
are not working and this is all you have to go on. Adding this extra
VERIFY means the assertion message (`!is_error()`) is easier to
understand.
|
|
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
|
|
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
|
|
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
|
|
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
|
|
This let's us avoid a heap allocation.
|
|
These APIs are only used by userland, and String is OOM-infallible,
so let's just ifdef it out of the Kernel.
|
|
This let's us propagate allocation errors from this API.
|
|
This let's us avoid the infallible String allocations.
|
|
This lets us safely handle allocation failure.
|
|
This lets us safely handle allocation failure.
|
|
This lets us safely handle allocation failure.
|
|
Parse JSON floating point literals properly,
No longer throwing a SyntaxError when the decimal portion
of the number exceeds the capacity of u32.
Added tests to AK/TestJSON and LibJS/builtins/JSON/JSON.parse
|
|
The only part of Unveil that can't handle OOM gracefully is the
String::formatted() use in the node metadata.
|
|
We shouldn't let copy/move ctors or assignments be instantiated if the
assignee type does not have a copy/move constructor (even if they're not
used anywhere).
|
|
The counterpart to the IsSpecializationOf<...> template.
|
|
New users of WeakPtr in the kernel should use try_make_weak_ptr instead
|