From 0aab49f0982e78fc31dc6d1a1650262985727ba3 Mon Sep 17 00:00:00 2001
From: Vladimir Davydov <vdavydov@tarantool.org>
Date: Tue, 12 Jul 2022 13:15:11 +0300
Subject: [PATCH] memtx: drop memtx_engine_free_mode

It isn't needed - we can check if delay_free_mode > 0 to figure our if
we are in the delayed free mode.

NO_DOC=refactoring
NO_TEST=refactoring
NO_CHANGELOG=refactoring
---
 src/box/memtx_allocator.h | 30 ++++--------------------------
 1 file changed, 4 insertions(+), 26 deletions(-)

diff --git a/src/box/memtx_allocator.h b/src/box/memtx_allocator.h
index 38e01b3ee0..c71a3b7d74 100644
--- a/src/box/memtx_allocator.h
+++ b/src/box/memtx_allocator.h
@@ -32,18 +32,6 @@
 #include "allocator.h"
 #include "tuple.h"
 
-/**
- * Free mode, determines a strategy for freeing up memory
- */
-enum memtx_engine_free_mode {
-	/** Free objects immediately. */
-	MEMTX_ENGINE_FREE,
-	/** Collect garbage after delayed free. */
-	MEMTX_ENGINE_COLLECT_GARBAGE,
-	/** Postpone deletion of objects. */
-	MEMTX_ENGINE_DELAYED_FREE,
-};
-
 struct PACKED memtx_tuple {
 	/*
 	 * sic: the header of the tuple is used
@@ -61,7 +49,6 @@ class MemtxAllocator {
 public:
 	static void create()
 	{
-		mode = MEMTX_ENGINE_FREE;
 		lifo_init(&lifo);
 	}
 
@@ -82,8 +69,7 @@ class MemtxAllocator {
 	static void enter_delayed_free_mode()
 	{
 		snapshot_version++;
-		if (delayed_free_mode++ == 0)
-			mode = MEMTX_ENGINE_DELAYED_FREE;
+		delayed_free_mode++;
 	}
 
 	/**
@@ -93,8 +79,7 @@ class MemtxAllocator {
 	static void leave_delayed_free_mode()
 	{
 		assert(delayed_free_mode > 0);
-		if (--delayed_free_mode == 0)
-			mode = MEMTX_ENGINE_COLLECT_GARBAGE;
+		--delayed_free_mode;
 	}
 
 	/**
@@ -122,7 +107,7 @@ class MemtxAllocator {
 	{
 		struct memtx_tuple *memtx_tuple = container_of(
 			tuple, struct memtx_tuple, base);
-		if (mode != MEMTX_ENGINE_DELAYED_FREE ||
+		if (delayed_free_mode == 0 ||
 		    memtx_tuple->version == snapshot_version ||
 		    tuple_has_flag(tuple, TUPLE_IS_TEMPORARY)) {
 			immediate_free_tuple(memtx_tuple);
@@ -159,7 +144,7 @@ class MemtxAllocator {
 
 	static void collect_garbage()
 	{
-		if (mode != MEMTX_ENGINE_COLLECT_GARBAGE)
+		if (delayed_free_mode > 0)
 			return;
 		if (!lifo_is_empty(&lifo)) {
 			for (int i = 0; i < GC_BATCH_SIZE; i++) {
@@ -169,8 +154,6 @@ class MemtxAllocator {
 				immediate_free_tuple(
 					(struct memtx_tuple *)item);
 			}
-		} else {
-			mode = MEMTX_ENGINE_FREE;
 		}
 	}
 
@@ -179,8 +162,6 @@ class MemtxAllocator {
 	 * immediately because they are currently in use by a snapshot.
 	 */
 	static struct lifo lifo;
-	/** Free mode, determines a strategy for freeing up memory. */
-	static enum memtx_engine_free_mode mode;
 	/**
 	 * Unless zero, freeing of tuples allocated before the last call to
 	 * enter_delayed_free_mode() is delayed until leave_delayed_free_mode()
@@ -194,9 +175,6 @@ class MemtxAllocator {
 template<class Allocator>
 struct lifo MemtxAllocator<Allocator>::lifo;
 
-template<class Allocator>
-enum memtx_engine_free_mode MemtxAllocator<Allocator>::mode;
-
 template<class Allocator>
 uint32_t MemtxAllocator<Allocator>::delayed_free_mode;
 
-- 
GitLab