wasm: directly handle recycling of invalidated instance

An instance may be invalidated before we try to recycle it.
We perform this by setting its value to a nullopt.
This patch adds a check for it when calculating its size.
This behavior didn't cause issues before because the catch
clause below caught errors caused by calling value() on
a nullopt, even though it was intended for errors from
get_instance_size.

Signed-off-by: Wojciech Mitros <wojciech.mitros@scylladb.com>

Closes #11500
This commit is contained in:
Wojciech Mitros
2022-08-30 09:48:49 +02:00
committed by Avi Kivity
parent f435276d2e
commit 7effd4c53a

View File

@@ -147,6 +147,9 @@ void instance_cache::recycle(instance_cache::value_type val) noexcept {
val->mutex.unlock();
size_t size;
try {
if (!val->instance) {
return;
}
size = get_instance_size(val->instance.value());
if (size > 1 * MB) {
val->instance = std::nullopt;