diff options
author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-12-17 11:53:15 +0100 |
---|---|---|
committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-12-17 11:53:15 +0100 |
commit | 48c99e29ae38db79522fb2833f3144ae58c7a906 (patch) | |
tree | 4fbf42918fa22fad025e75733dbe3caf76325f9b | |
parent | efd5318b2d9132996bf35a6af2e82706665890ff (diff) | |
download | lanes-48c99e29ae38db79522fb2833f3144ae58c7a906.tar.gz lanes-48c99e29ae38db79522fb2833f3144ae58c7a906.tar.bz2 lanes-48c99e29ae38db79522fb2833f3144ae58c7a906.zip |
Some constitude tweaks
-rw-r--r-- | src/compat.hpp | 8 | ||||
-rw-r--r-- | src/deep.hpp | 2 | ||||
-rw-r--r-- | src/keeper.hpp | 2 | ||||
-rw-r--r-- | src/lane.hpp | 4 | ||||
-rw-r--r-- | src/linda.hpp | 4 | ||||
-rw-r--r-- | src/lindafactory.hpp | 2 | ||||
-rw-r--r-- | src/macros_and_utils.hpp | 2 | ||||
-rw-r--r-- | src/uniquekey.hpp | 1 | ||||
-rw-r--r-- | src/universe.cpp | 2 | ||||
-rw-r--r-- | src/universe.hpp | 22 |
10 files changed, 25 insertions, 24 deletions
diff --git a/src/compat.hpp b/src/compat.hpp index 80bc391..0c7c5bb 100644 --- a/src/compat.hpp +++ b/src/compat.hpp | |||
@@ -68,9 +68,9 @@ inline size_t lua_rawlen(lua_State* L_, StackIndex idx_) | |||
68 | { | 68 | { |
69 | return lua_objlen(L_, idx_); | 69 | return lua_objlen(L_, idx_); |
70 | } | 70 | } |
71 | void luaL_requiref(lua_State* L_, const char* modname_, lua_CFunction openf_, int glb_); // implementation copied from Lua 5.2 sources | 71 | void luaL_requiref(lua_State* L_, char const* modname_, lua_CFunction openf_, int glb_); // implementation copied from Lua 5.2 sources |
72 | 72 | ||
73 | int luaL_getsubtable(lua_State* L_, StackIndex idx_, const char* fname_); | 73 | int luaL_getsubtable(lua_State* L_, StackIndex idx_, char const* fname_); |
74 | 74 | ||
75 | #endif // LUA_VERSION_NUM == 501 | 75 | #endif // LUA_VERSION_NUM == 501 |
76 | 76 | ||
@@ -292,7 +292,7 @@ ENUM luaG_optenum(lua_State* const L_, StackIndex const idx_, ENUM const def_) | |||
292 | 292 | ||
293 | // ################################################################################################# | 293 | // ################################################################################################# |
294 | 294 | ||
295 | inline void luaG_registerlibfuncs(lua_State* L_, luaL_Reg const* funcs_) | 295 | inline void luaG_registerlibfuncs(lua_State* const L_, luaL_Reg const* funcs_) |
296 | { | 296 | { |
297 | // fake externs to make clang happy... | 297 | // fake externs to make clang happy... |
298 | extern void luaL_register(lua_State*, char const*, luaL_Reg const*); // Lua 5.1 | 298 | extern void luaL_register(lua_State*, char const*, luaL_Reg const*); // Lua 5.1 |
@@ -396,7 +396,7 @@ inline void luaG_pushglobaltable(lua_State* const L_) | |||
396 | 396 | ||
397 | // ################################################################################################# | 397 | // ################################################################################################# |
398 | 398 | ||
399 | inline void luaG_setfield(lua_State* const L_, StackIndex const idx_, char const* k_) = delete; | 399 | inline void luaG_setfield(lua_State* const L_, StackIndex const idx_, char const* const k_) = delete; |
400 | inline void luaG_setfield(lua_State* const L_, StackIndex const idx_, std::string_view const& k_) | 400 | inline void luaG_setfield(lua_State* const L_, StackIndex const idx_, std::string_view const& k_) |
401 | { | 401 | { |
402 | lua_setfield(L_, idx_, k_.data()); | 402 | lua_setfield(L_, idx_, k_.data()); |
diff --git a/src/deep.hpp b/src/deep.hpp index 8196e66..f8cfa0d 100644 --- a/src/deep.hpp +++ b/src/deep.hpp | |||
@@ -86,7 +86,7 @@ class DeepFactory | |||
86 | [[nodiscard]] | 86 | [[nodiscard]] |
87 | int getObjectCount() const { return deepObjectCount.load(std::memory_order_relaxed); } | 87 | int getObjectCount() const { return deepObjectCount.load(std::memory_order_relaxed); } |
88 | [[nodiscard]] | 88 | [[nodiscard]] |
89 | static bool IsDeepUserdata(lua_State* const L_, StackIndex const idx_); | 89 | static bool IsDeepUserdata(lua_State* L_, StackIndex idx_); |
90 | [[nodiscard]] | 90 | [[nodiscard]] |
91 | static DeepFactory* LookupFactory(lua_State* L_, StackIndex index_, LookupMode mode_); | 91 | static DeepFactory* LookupFactory(lua_State* L_, StackIndex index_, LookupMode mode_); |
92 | static void PushDeepProxy(DestState L_, DeepPrelude* o_, UserValueCount nuv_, LookupMode mode_, lua_State* errL_); | 92 | static void PushDeepProxy(DestState L_, DeepPrelude* o_, UserValueCount nuv_, LookupMode mode_, lua_State* errL_); |
diff --git a/src/keeper.hpp b/src/keeper.hpp index c0a8dc5..4b16c2b 100644 --- a/src/keeper.hpp +++ b/src/keeper.hpp | |||
@@ -70,7 +70,7 @@ struct Keepers | |||
70 | 70 | ||
71 | public: | 71 | public: |
72 | // can only be instanced as a data member | 72 | // can only be instanced as a data member |
73 | static void* operator new(size_t size_) = delete; | 73 | static void* operator new(size_t const size_) = delete; |
74 | 74 | ||
75 | Keepers() = default; | 75 | Keepers() = default; |
76 | void collectGarbage(); | 76 | void collectGarbage(); |
diff --git a/src/lane.hpp b/src/lane.hpp index 183c8bf..595bf4d 100644 --- a/src/lane.hpp +++ b/src/lane.hpp | |||
@@ -166,11 +166,9 @@ class Lane | |||
166 | CancelResult cancel(CancelOp op_, std::chrono::time_point<std::chrono::steady_clock> until_, WakeLane wakeLane_, int hookCount_); | 166 | CancelResult cancel(CancelOp op_, std::chrono::time_point<std::chrono::steady_clock> until_, WakeLane wakeLane_, int hookCount_); |
167 | void closeState() | 167 | void closeState() |
168 | { | 168 | { |
169 | lua_State* const _L{ S }; | ||
170 | S = nullptr; | ||
171 | L = nullptr; | 169 | L = nullptr; |
172 | nresults = 0; | 170 | nresults = 0; |
173 | lua_close(_L); // this collects our coroutine thread at the same time | 171 | lua_close(std::exchange(S, nullptr)); // this collects our coroutine thread at the same time |
174 | } | 172 | } |
175 | [[nodiscard]] | 173 | [[nodiscard]] |
176 | std::string_view errorTraceLevelString() const; | 174 | std::string_view errorTraceLevelString() const; |
diff --git a/src/linda.hpp b/src/linda.hpp index 920db1b..65bca9f 100644 --- a/src/linda.hpp +++ b/src/linda.hpp | |||
@@ -92,8 +92,8 @@ class Linda | |||
92 | [[nodiscard]] | 92 | [[nodiscard]] |
93 | Keeper* acquireKeeper() const; | 93 | Keeper* acquireKeeper() const; |
94 | [[nodiscard]] | 94 | [[nodiscard]] |
95 | static Linda* CreateTimerLinda(lua_State* const L_, Passkey<Universe>) { return CreateTimerLinda(L_); } | 95 | static Linda* CreateTimerLinda(lua_State* const L_, Passkey<Universe> const) { return CreateTimerLinda(L_); } |
96 | static void DeleteTimerLinda(lua_State* const L_, Linda* const linda_, Passkey<Universe>) { DeleteTimerLinda(L_, linda_); } | 96 | static void DeleteTimerLinda(lua_State* const L_, Linda* const linda_, Passkey<Universe> const) { DeleteTimerLinda(L_, linda_); } |
97 | [[nodiscard]] | 97 | [[nodiscard]] |
98 | std::string_view getName() const; | 98 | std::string_view getName() const; |
99 | [[nodiscard]] | 99 | [[nodiscard]] |
diff --git a/src/lindafactory.hpp b/src/lindafactory.hpp index 1512e9a..0921c8f 100644 --- a/src/lindafactory.hpp +++ b/src/lindafactory.hpp | |||
@@ -8,7 +8,7 @@ class LindaFactory | |||
8 | : public DeepFactory | 8 | : public DeepFactory |
9 | { | 9 | { |
10 | public: | 10 | public: |
11 | // I'm not totally happy with having a 'global' variable. Maybe it should be dynamically created and stored somewhere in the universe? | 11 | // TODO: I'm not totally happy with having a 'global' variable. Maybe it should be dynamically created and stored somewhere in the universe? |
12 | static LindaFactory Instance; | 12 | static LindaFactory Instance; |
13 | 13 | ||
14 | LindaFactory(luaL_Reg const lindaMT_[]) | 14 | LindaFactory(luaL_Reg const lindaMT_[]) |
diff --git a/src/macros_and_utils.hpp b/src/macros_and_utils.hpp index 0897367..26d47a9 100644 --- a/src/macros_and_utils.hpp +++ b/src/macros_and_utils.hpp | |||
@@ -8,7 +8,7 @@ using namespace std::chrono_literals; | |||
8 | 8 | ||
9 | // ################################################################################################# | 9 | // ################################################################################################# |
10 | 10 | ||
11 | inline void STACK_GROW(lua_State* L_, int n_) | 11 | inline void STACK_GROW(lua_State* const L_, int const n_) |
12 | { | 12 | { |
13 | if (!lua_checkstack(L_, n_)) { | 13 | if (!lua_checkstack(L_, n_)) { |
14 | raise_luaL_error(L_, "Cannot grow stack!"); | 14 | raise_luaL_error(L_, "Cannot grow stack!"); |
diff --git a/src/uniquekey.hpp b/src/uniquekey.hpp index a8386a2..3006b3d 100644 --- a/src/uniquekey.hpp +++ b/src/uniquekey.hpp | |||
@@ -64,6 +64,7 @@ class RegistryUniqueKey | |||
64 | } | 64 | } |
65 | // --------------------------------------------------------------------------------------------- | 65 | // --------------------------------------------------------------------------------------------- |
66 | template <typename OP> | 66 | template <typename OP> |
67 | // TODO: add a requirement clause here for operation_ to be callable on L_ | ||
67 | void setValue(lua_State* const L_, OP operation_) const | 68 | void setValue(lua_State* const L_, OP operation_) const |
68 | { | 69 | { |
69 | // Note we can't check stack consistency because operation is not always a push (could be insert, replace, whatever) | 70 | // Note we can't check stack consistency because operation is not always a push (could be insert, replace, whatever) |
diff --git a/src/universe.cpp b/src/universe.cpp index b7d11d8..bc309a2 100644 --- a/src/universe.cpp +++ b/src/universe.cpp | |||
@@ -186,7 +186,7 @@ Universe* Universe::Create(lua_State* const L_) | |||
186 | 186 | ||
187 | // same as PUC-Lua l_alloc | 187 | // same as PUC-Lua l_alloc |
188 | [[nodiscard]] | 188 | [[nodiscard]] |
189 | static void* libc_lua_Alloc([[maybe_unused]] void* ud_, [[maybe_unused]] void* ptr_, [[maybe_unused]] size_t osize_, size_t nsize_) | 189 | static void* libc_lua_Alloc([[maybe_unused]] void* const ud_, [[maybe_unused]] void* const ptr_, [[maybe_unused]] size_t const osize_, size_t const nsize_) |
190 | { | 190 | { |
191 | if (nsize_ == 0) { | 191 | if (nsize_ == 0) { |
192 | free(ptr_); | 192 | free(ptr_); |
diff --git a/src/universe.hpp b/src/universe.hpp index dbf0ece..d35172d 100644 --- a/src/universe.hpp +++ b/src/universe.hpp | |||
@@ -26,7 +26,7 @@ class ProtectedAllocator | |||
26 | std::mutex mutex; | 26 | std::mutex mutex; |
27 | 27 | ||
28 | [[nodiscard]] | 28 | [[nodiscard]] |
29 | static void* protected_lua_Alloc(void* ud_, void* ptr_, size_t osize_, size_t nsize_) | 29 | static void* protected_lua_Alloc(void* const ud_, void* const ptr_, size_t const osize_, size_t const nsize_) |
30 | { | 30 | { |
31 | ProtectedAllocator* const allocator{ static_cast<ProtectedAllocator*>(ud_) }; | 31 | ProtectedAllocator* const allocator{ static_cast<ProtectedAllocator*>(ud_) }; |
32 | std::lock_guard<std::mutex> guard{ allocator->mutex }; | 32 | std::lock_guard<std::mutex> guard{ allocator->mutex }; |
@@ -36,8 +36,8 @@ class ProtectedAllocator | |||
36 | public: | 36 | public: |
37 | // we are not like our base class: we can't be created inside a full userdata (or we would have to install a metatable and __gc handler to destroy ourselves properly) | 37 | // we are not like our base class: we can't be created inside a full userdata (or we would have to install a metatable and __gc handler to destroy ourselves properly) |
38 | [[nodiscard]] | 38 | [[nodiscard]] |
39 | static void* operator new(size_t size_, lua_State* L_) noexcept = delete; | 39 | static void* operator new(size_t const size_, lua_State* const L_) noexcept = delete; |
40 | static void operator delete(void* p_, lua_State* L_) = delete; | 40 | static void operator delete(void* const p_, lua_State* const L_) = delete; |
41 | 41 | ||
42 | AllocatorDefinition makeDefinition() | 42 | AllocatorDefinition makeDefinition() |
43 | { | 43 | { |
@@ -58,6 +58,7 @@ class ProtectedAllocator | |||
58 | }; | 58 | }; |
59 | 59 | ||
60 | // ################################################################################################# | 60 | // ################################################################################################# |
61 | // ################################################################################################# | ||
61 | 62 | ||
62 | // xxh64 of string "kUniverseLightRegKey" generated at https://www.pelock.com/products/hash-calculator | 63 | // xxh64 of string "kUniverseLightRegKey" generated at https://www.pelock.com/products/hash-calculator |
63 | static constexpr RegistryUniqueKey kUniverseLightRegKey{ 0x48BBE9CEAB0BA04Full }; | 64 | static constexpr RegistryUniqueKey kUniverseLightRegKey{ 0x48BBE9CEAB0BA04Full }; |
@@ -127,9 +128,9 @@ class Universe | |||
127 | 128 | ||
128 | public: | 129 | public: |
129 | [[nodiscard]] | 130 | [[nodiscard]] |
130 | static void* operator new([[maybe_unused]] size_t size_, lua_State* L_) noexcept { return luaG_newuserdatauv<Universe>(L_, UserValueCount{ 0 }); }; | 131 | static void* operator new([[maybe_unused]] size_t const size_, lua_State* const L_) noexcept { return luaG_newuserdatauv<Universe>(L_, UserValueCount{ 0 }); }; |
131 | // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception | 132 | // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception |
132 | static void operator delete([[maybe_unused]] void* p_, [[maybe_unused]] lua_State* L_) {} // nothing to do, as nothing is allocated independently | 133 | static void operator delete([[maybe_unused]] void* const p_, [[maybe_unused]] lua_State* const L_) {} // nothing to do, as nothing is allocated independently |
133 | 134 | ||
134 | Universe(); | 135 | Universe(); |
135 | ~Universe() = default; | 136 | ~Universe() = default; |
@@ -139,15 +140,16 @@ class Universe | |||
139 | Universe& operator=(Universe const&) = delete; | 140 | Universe& operator=(Universe const&) = delete; |
140 | Universe& operator=(Universe&&) = delete; | 141 | Universe& operator=(Universe&&) = delete; |
141 | 142 | ||
142 | void callOnStateCreate(lua_State* const L_, lua_State* const from_, LookupMode const mode_); | 143 | void callOnStateCreate(lua_State* L_, lua_State* from_, LookupMode mode_); |
143 | [[nodiscard]] | 144 | [[nodiscard]] |
144 | static Universe* Create(lua_State* L_); | 145 | static Universe* Create(lua_State* L_); |
145 | [[nodiscard]] | 146 | [[nodiscard]] |
146 | static inline Universe* Get(lua_State* L_); | 147 | static inline Universe* Get(lua_State* L_); |
147 | void initializeAllocatorFunction(lua_State* L_); | 148 | void initializeAllocatorFunction(lua_State* L_); |
148 | static int InitializeFinalizer(lua_State* L_); | 149 | static int InitializeFinalizer(lua_State* L_); |
149 | void initializeOnStateCreate(lua_State* const L_); | 150 | void initializeOnStateCreate(lua_State* L_); |
150 | lanes::AllocatorDefinition resolveAllocator(lua_State* const L_, std::string_view const& hint_) const; | 151 | [[nodiscard]] |
152 | lanes::AllocatorDefinition resolveAllocator(lua_State* L_, std::string_view const& hint_) const; | ||
151 | static inline void Store(lua_State* L_, Universe* U_); | 153 | static inline void Store(lua_State* L_, Universe* U_); |
152 | [[nodiscard]] | 154 | [[nodiscard]] |
153 | bool terminateFreeRunningLanes(lua_Duration shutdownTimeout_, CancelOp op_); | 155 | bool terminateFreeRunningLanes(lua_Duration shutdownTimeout_, CancelOp op_); |
@@ -156,7 +158,7 @@ class Universe | |||
156 | // ################################################################################################# | 158 | // ################################################################################################# |
157 | 159 | ||
158 | [[nodiscard]] | 160 | [[nodiscard]] |
159 | inline Universe* Universe::Get(lua_State* L_) | 161 | inline Universe* Universe::Get(lua_State* const L_) |
160 | { | 162 | { |
161 | STACK_CHECK_START_REL(L_, 0); | 163 | STACK_CHECK_START_REL(L_, 0); |
162 | Universe* const _universe{ kUniverseLightRegKey.readLightUserDataValue<Universe>(L_) }; | 164 | Universe* const _universe{ kUniverseLightRegKey.readLightUserDataValue<Universe>(L_) }; |
@@ -166,7 +168,7 @@ inline Universe* Universe::Get(lua_State* L_) | |||
166 | 168 | ||
167 | // ################################################################################################# | 169 | // ################################################################################################# |
168 | 170 | ||
169 | inline void Universe::Store(lua_State* L_, Universe* U_) | 171 | inline void Universe::Store(lua_State* const L_, Universe* const U_) |
170 | { | 172 | { |
171 | // TODO: check if we actually ever call Store with a null universe | 173 | // TODO: check if we actually ever call Store with a null universe |
172 | LUA_ASSERT(L_, !U_ || Universe::Get(L_) == nullptr); | 174 | LUA_ASSERT(L_, !U_ || Universe::Get(L_) == nullptr); |