ladybird/AK
Andreas Kling ca772caee6 AK: Add HashTable::ensure(hash, predicate, init_callback)
...and use it to make HashMap::ensure() do a single hash lookup instead
of three.

We achieve this by factoring out everything but the bucket construction
logic from HashTable::write_value() into a lookup_for_writing() helper
so we can use it from more places.
2025-10-05 21:44:06 +02:00
..
.clang-tidy
AK+Swift.swift AK: Add an extension to construct an AK.String from a Swift.String 2024-11-19 14:32:11 -07:00
AllOf.h
AnyOf.h
Array.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Assertions.cpp AK: Expose ak_assertion_handler weak symbol for custom death handling 2025-05-16 13:23:32 -06:00
Assertions.h AK: Expose dump_backtrace() publicly for debugging purposes 2025-05-06 10:03:57 -04:00
Atomic.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
AtomicRefCounted.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Backtrace.h.in AK+CMake: Use the find module to find the correct backtrace(3) header 2024-07-01 10:15:24 -06:00
Badge.h AK: Use Noncopyable.h in Badge 2024-12-04 16:45:58 +00:00
Base64.cpp AK: Remove some now-unnecessary workarounds for simdutf base64 usage 2025-06-01 08:03:00 -04:00
Base64.h AK+LibJS: Use simdutf for all base64 operations 2025-05-03 11:21:10 -04:00
BigIntBase.h Revert "AK: Work around Apple Clang __builtin_subc codegen issue" 2025-04-22 22:31:28 -06:00
BinaryHeap.h AK: Introduce IntrusiveBinaryHeap and reimplement BinaryHeap using it 2024-02-25 17:24:36 -07:00
BinarySearch.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
BitCast.h AK: Use bit_cast in SIMDExtras.h/AK::Detail::byte_reverse_impl 2024-07-17 09:56:13 -06:00
Bitmap.h LibGfx: Clean up #include directives 2024-11-20 21:13:23 +01:00
BitmapView.h AK: Define operator== for BitmapView 2025-01-04 20:32:35 +01:00
BitStream.h AK: Add BigEndianInputBitStream::bits_until_next_byte_boundary() 2024-02-12 14:08:56 +01:00
BufferedStream.h AK: Don't move trivially copyable types in BufferedStream methods 2024-04-30 13:22:56 +02:00
BuiltinWrappers.h AK: Fix doc comment for bit_scan_forward 2023-10-11 14:36:48 -04:00
BumpAllocator.h AK: Fix BumpAllocator.h compilation errors on Windows 2024-12-14 16:12:12 +01:00
ByteBuffer.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
ByteReader.h
ByteString.cpp AK: Remove unused UTF-8 / other factory methods from ByteString 2025-04-07 17:44:38 +02:00
ByteString.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
ByteStringImpl.cpp AK: Rename StringImpl to ByteStringImpl 2025-04-07 17:44:38 +02:00
ByteStringImpl.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
CharacterTypes.h AK: Add is_ascii_c0_control_or_space 2024-08-05 17:21:26 +01:00
Checked.h AK: Fix is_within_range when converting from float 2025-09-24 10:40:24 +01:00
CheckedFormatString.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
CircularBuffer.cpp AK: Use hashing to accelerate searching a CircularBuffer 2023-07-06 15:06:20 +01:00
CircularBuffer.h AK: Use hashing to accelerate searching a CircularBuffer 2023-07-06 15:06:20 +01:00
CircularQueue.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CMakeLists.txt ImageDecoder: Enable in Windows CI 2025-08-23 16:04:36 -06:00
Concepts.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
ConstrainedStream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
ConstrainedStream.h AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
CopyOnWrite.h AK+LibURL: Move CopyOnWrite<T> from LibURL to AK 2024-09-10 13:51:28 +02:00
CountingStream.cpp AK: Let CountingStream take an initial value for the counter 2025-06-11 18:16:29 +02:00
CountingStream.h AK: Let CountingStream take an initial value for the counter 2025-06-11 18:16:29 +02:00
COWVector.h LibRegex: Flatten capture group list in MatchState 2025-04-18 17:09:27 +02:00
DateConstants.h
Debug.h.in LibWeb: Place HTTP cache logging behind a debug flag 2025-09-19 13:52:07 +02:00
DefaultDelete.h
Demangle.h AK: Implement demangle() for MSVC ABI 2025-06-17 18:39:18 -06:00
DemangleWindows.cpp AK: Implement demangle() for MSVC ABI 2025-06-17 18:39:18 -06:00
Diagnostics.h
DisjointChunks.h LibRegex: Use ReadonlySpan to peek into OpCode_Compare LUTs 2025-04-14 17:40:13 +02:00
DistinctNumeric.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
DoublyLinkedList.h AK: Add some higher-level operations to DoublyLinkedList<T> 2025-08-08 12:54:06 +02:00
Endian.h AK: Support non-native endianness in Utf16View 2024-07-18 19:43:57 +02:00
EnumBits.h
Enumerate.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Error.cpp AK: Define some simple getters in a single line 2025-05-10 21:19:46 -04:00
Error.h AK/Error: Add value_or convenience method 2025-05-26 18:48:09 +02:00
Find.h AK: Add an AK::find helper to return a reference to the found value 2025-04-06 13:45:10 +02:00
FixedArray.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
FixedPoint.h AK: Stop exporting AK::FixedPoint into the global namespace 2024-07-18 09:43:38 +01:00
FloatingPoint.h Meta: Update my email address everywhere 2024-11-01 12:14:53 +01:00
FlyString.cpp Everywhere: Remove DeprecatedFlyString + any remaining references to it 2025-04-02 11:43:13 +02:00
FlyString.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Format.cpp AK: Format floats with precision in scientific notation where applicable 2025-08-11 17:10:04 +01:00
Format.h AK: Add dbgln_dump() macro 2025-07-18 14:40:00 -04:00
Forward.h AK: Templatize GenericLexer for UTF-16 strings 2025-08-13 09:56:13 -04:00
Function.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
GenericLexer.cpp AK: Templatize GenericLexer for UTF-16 strings 2025-08-13 09:56:13 -04:00
GenericLexer.h AK: Templatize GenericLexer for UTF-16 strings 2025-08-13 09:56:13 -04:00
GenericShorthands.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
HashFunctions.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
HashMap.h AK: Add HashTable::ensure(hash, predicate, init_callback) 2025-10-05 21:44:06 +02:00
HashTable.h AK: Add HashTable::ensure(hash, predicate, init_callback) 2025-10-05 21:44:06 +02:00
Hex.cpp AK: Remove Error::from_string_view_or_print_error_and_return_errno 2025-05-10 21:19:46 -04:00
Hex.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
IDAllocator.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
InsertionSort.h AK: Fix InsertionSort to respect specified bounds 2024-12-06 06:44:27 +00:00
IntegralMath.h AK: Add lowest common multiple and greatest common divisor functions 2025-04-23 09:13:45 +01:00
IntrusiveDetails.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
IntrusiveList.h AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro 2025-04-15 02:19:06 -06:00
IntrusiveListRelaxedConst.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
IntrusiveRedBlackTree.h AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro 2025-04-15 02:19:06 -06:00
IPv4Address.h AK+Meta+LibCore+Tests: Remove unused SipHash implementation 2025-04-06 01:47:50 +02:00
IPv6Address.h AK: Validate compressed tags in IPv4-mapped IPv6 address 2025-07-30 00:53:10 +02:00
IterationDecision.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Iterator.h AK+LibJS: Add [[nodiscard]] to operator* in common types 2024-10-25 09:15:28 +02:00
JsonArray.cpp AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonArray.h AK: Fix the JsonArray constructor for accepting an iterable type 2025-03-04 15:33:39 -05:00
JsonArraySerializer.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
JsonObject.cpp AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonObject.h AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
JsonObjectSerializer.h AK+Everywhere: Store JSON strings as String 2025-02-20 19:27:51 -05:00
JsonParser.cpp AK+Everywhere: Replace custom number parsers with fast_float 2025-07-03 09:51:56 -04:00
JsonParser.h AK: Disallow construction of JsonParser 2025-03-20 10:50:24 +01:00
JsonValue.cpp AK: Disallow construction of JsonParser 2025-03-20 10:50:24 +01:00
JsonValue.h AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
kmalloc.cpp Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
kmalloc.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
LEB128.h AK: Skip vcalls to Stream::read_value and read_until_filled in LEB128 2025-08-08 12:54:06 +02:00
LexicalPath.cpp AK: Add LexicalPath::is_root() 2024-11-19 22:07:01 -07:00
LexicalPath.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
LexicalPathWindows.cpp AK: Don't crash on empty extension in LexicalPath::has_extension 2025-02-17 14:57:00 +01:00
LsanSuppressions.h LibGfx+LibWeb: Replace remaining OpenType implementation with Skia 2024-09-05 19:21:52 +02:00
Math.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
MaybeOwned.h AK: Allow creating a MaybeOwned<Superclass> from a MaybeOwned<Subclass> 2024-03-25 20:35:00 +01:00
MemMem.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Memory.h AK: Remove fast_u32_xxx apis from Memory.h 2025-03-03 15:58:27 +01:00
MemoryStream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
MemoryStream.h AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
NeverDestroyed.h AK: Include missing StdLibExtras from NeverDestroyed 2024-11-19 14:32:11 -07:00
NoAllocationGuard.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
Noncopyable.h AK: Loosen the restrictions on non-copyable/non-movable containers 2025-04-22 21:19:31 -06:00
NonnullOwnPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NonnullRawPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NonnullRefPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
NumberFormat.cpp AK+LibJS: Don't use Temporal for console.time() and console.timeLog() 2024-11-18 17:46:41 -05:00
NumberFormat.h AK+LibJS: Don't use Temporal for console.time() and console.timeLog() 2024-11-18 17:46:41 -05:00
NumericLimits.h AK: Add 16-bit float type 2024-11-10 14:48:20 -07:00
Optional.h AK: Add Optional<T>::ensure() 2025-09-17 12:01:18 -04:00
OptionParser.cpp AK: Update OptionParser::m_arg_index by substracting skipped args 2024-02-06 00:08:30 +01:00
OptionParser.h
OwnPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Platform.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
Queue.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
QuickSort.h AK: Remove redundant condition from Quick Sort 2024-12-22 12:33:41 +01:00
Random.cpp AK: Add windows support in AK/Random 2025-05-15 07:41:02 -06:00
Random.h AK: Add windows support in AK/Random 2025-05-15 07:41:02 -06:00
RedBlackTree.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
RefCounted.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
RefPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Result.h Everywhere: Run clang-format 2024-12-28 05:39:32 -08:00
ReverseIterator.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ScopedValueRollback.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
ScopeGuard.h AK: Make ScopeGuard and ArmedScopeGuard [[nodiscard]] 2025-01-09 18:36:34 +00:00
ScopeLogger.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SegmentedVector.h AK: Define ConstIterator for SegmentedVector 2025-07-13 19:15:05 +02:00
SIMD.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SIMDExtras.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SIMDMath.h AK: Remove the SIMD version of rsqrt() too, for good measure 2024-01-30 10:02:33 +01:00
Singleton.h LibWebView: Enable in Windows CI 2025-08-23 16:04:36 -06:00
SinglyLinkedList.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
SinglyLinkedListSizePolicy.h
SourceGenerator.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
SourceLocation.h AK: Add copy assignment operator for SourceLocation 2023-09-24 14:55:32 +02:00
Span.h AK: Add Span::ends_with() 2025-07-24 07:18:25 -04:00
Stack.h
StackInfo.cpp AK: Use getrlimit() to find the correct main thread stack size on macOS 2024-11-10 19:12:59 +01:00
StackInfo.h AK: Use __builtin_frame_address to find current stack depth remaining 2023-07-01 07:03:11 +02:00
StdLibExtraDetails.h AK: Use __is_trivially_destructible built-in with new enough GCC 2025-06-14 16:02:40 -04:00
StdLibExtras.h Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Stream.cpp AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
Stream.h AK: Make some Stream::read* functions available inline 2025-08-08 12:54:06 +02:00
String.cpp AK: Remove unnecessary StringBuilder::create() factory 2025-10-05 11:24:46 +02:00
String.h AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
StringBase.cpp Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
StringBase.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
StringBuilder.cpp AK: Initialize StringBuilder buffer in place 2025-10-05 11:24:46 +02:00
StringBuilder.h AK: Initialize StringBuilder buffer in place 2025-10-05 11:24:46 +02:00
StringConversions.cpp AK: Rename Utf16View::trim_whitespace() to ::trim_ascii_whitespace() 2025-07-24 07:18:25 -04:00
StringConversions.h AK: Implement UTF-16 string-to-number conversions 2025-07-18 12:45:38 -04:00
StringData.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
StringFloatingPointConversions.cpp
StringFloatingPointConversions.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
StringHash.h AK: Make hashing of UTF-16 strings cheaper 2025-08-07 02:05:50 +02:00
StringNumber.h AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
StringUtils.cpp AK: Use simdutf for searching strings for a single code unit 2025-08-11 16:55:37 +02:00
StringUtils.h AK+Everywhere: Replace custom number parsers with fast_float 2025-07-03 09:51:56 -04:00
StringView.cpp Everywhere: Fix even more typos 2025-08-27 08:48:01 +02:00
StringView.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
Swift.h Everywhere: Fix even more typos 2025-08-27 08:48:01 +02:00
TemporaryChange.h AK: Fully qualify use of move in TemporaryChange 2025-03-22 17:27:45 +01:00
Time.cpp AK: Add UnixDateTime::parse() method 2025-09-30 12:39:01 +02:00
Time.h AK: Implement Formatter<UnixDateTime> 2025-09-30 12:39:01 +02:00
Traits.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Trie.h Everywhere: Remove all KERNEL #defines 2024-06-18 09:36:25 +02:00
Try.h AK+LibJS: Allow {TRY,MUST}{,_OR_THROW_OOM} on list-initializers 2024-12-04 16:45:58 +00:00
Tuple.h AK: Add abstraction for forcing empty base optimization on Windows 2025-06-17 15:33:26 -06:00
TypeCasts.h AK: Make is<T const> use fast_is<T> 2025-09-22 15:00:50 +02:00
TypedTransfer.h AK: Compare pointers in TypedTransfer<T>::compare() 2025-07-24 07:18:25 -04:00
TypeList.h AK: Make IndexSequence use size_t 2024-02-11 18:53:00 +01:00
Types.h AK: Remove unnecessary Aarch64 wchar_t handling 2025-05-18 19:18:13 -06:00
UFixedBigInt.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
UFixedBigIntDivision.h AK: Move generalized internals of UFixedBigIntDivision to BigIntBase 2024-03-25 14:26:29 -06:00
UnicodeUtils.h AK: Fix usage of constexpr within Utf16View and related utilities 2025-07-05 01:25:22 +12:00
Utf8View.cpp AK: Allow indexing at length in Utf8View::byte_offset_of() 2025-07-22 09:10:32 -04:00
Utf8View.h AK: Provide a length_in_code_units API for UTF-8 strings 2025-08-22 14:06:46 +02:00
Utf16FlyString.cpp AK+LibJS+LibWeb: Recognize that our UTF-16 string is actually WTF-16 2025-08-13 09:56:13 -04:00
Utf16FlyString.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Utf16String.cpp AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
Utf16String.h LibJS: Make single-character ASCII string cache strings be Utf16String 2025-10-05 16:39:14 +02:00
Utf16StringBase.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
Utf16StringData.cpp AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
Utf16StringData.h AK: Skip ASCII validation in {Utf16String,String}::number() 2025-10-05 11:24:46 +02:00
Utf16View.cpp AK: Use simdutf to validate UTF-16 strings as ASCII 2025-08-27 13:25:03 +02:00
Utf16View.h Everywhere: Fix even more typos 2025-08-27 08:48:01 +02:00
Utf32View.cpp AK: Add a comparison operator for Utf32View 2024-10-20 08:50:01 +02:00
Utf32View.h AK: Add a UTF-16 string with optimized short- and ASCII-string storage 2025-07-18 12:45:38 -04:00
Variant.h AK: Add Variant::unsafe_get() 2025-08-26 15:20:33 +02:00
Vector.h AK: Use OOB pointer for "empty" last-fast-access Vector last ptr 2025-10-01 23:47:29 +02:00
Weakable.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
WeakPtr.h AK: Store hash with HashTable entry to avoid expensive equality checks 2025-09-18 22:37:18 +02:00
Windows.h AK: Simplify usage of windows.h and winsock2.h 2025-01-02 10:17:51 -07:00