From 57513271956942bbe51b39afeb4bb445aaff21fb Mon Sep 17 00:00:00 2001 From: Lenny Maiorani Date: Wed, 19 May 2021 08:35:09 -0600 Subject: Kernel: static vs non-static constexpr variables Problem: - `static` variables consume memory and sometimes are less optimizable. - `static const` variables can be `constexpr`, usually. - `static` function-local variables require an initialization check every time the function is run. Solution: - If a global `static` variable is only used in a single function then move it into the function and make it non-`static` and `constexpr`. - Make all global `static` variables `constexpr` instead of `const`. - Change function-local `static const[expr]` variables to be just `constexpr`. --- Kernel/VM/MemoryManager.h | 2 +- Kernel/VM/PageDirectory.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'Kernel/VM') diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index cb6b860b17..0800428f27 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -54,7 +54,7 @@ enum class UsedMemoryRangeType { BootModule, }; -constexpr static const char* UserMemoryRangeTypeNames[] { +static constexpr StringView UserMemoryRangeTypeNames[] { "Low memory", "Kernel", "Boot module", diff --git a/Kernel/VM/PageDirectory.cpp b/Kernel/VM/PageDirectory.cpp index b8bbbdbe9b..b6b5287b48 100644 --- a/Kernel/VM/PageDirectory.cpp +++ b/Kernel/VM/PageDirectory.cpp @@ -13,9 +13,6 @@ namespace Kernel { -static const FlatPtr userspace_range_base = 0x00800000; -static const FlatPtr userspace_range_ceiling = 0xbe000000; - static AK::Singleton> s_cr3_map; static HashMap& cr3_map() @@ -53,6 +50,9 @@ UNMAP_AFTER_INIT PageDirectory::PageDirectory() PageDirectory::PageDirectory(const RangeAllocator* parent_range_allocator) { + constexpr FlatPtr userspace_range_base = 0x00800000; + constexpr FlatPtr userspace_range_ceiling = 0xbe000000; + ScopedSpinLock lock(s_mm_lock); if (parent_range_allocator) { m_range_allocator.initialize_from_parent(*parent_range_allocator); -- cgit v1.2.3