Skip to content

Commit

Permalink
Main - Replace Fast Hash system with native hashmaps (#1320)
Browse files Browse the repository at this point in the history
  • Loading branch information
JonBons authored Apr 3, 2024
1 parent 5024078 commit 1385ce4
Show file tree
Hide file tree
Showing 11 changed files with 11 additions and 300 deletions.
13 changes: 0 additions & 13 deletions addons/main/CfgLocationTypes.hpp

This file was deleted.

8 changes: 0 additions & 8 deletions addons/main/XEH_PREP.hpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,2 @@
PREP(garbageCollector);
PREP(hashMonitor);

PREP(fastHashCopy);
PREP(fastHashCopyArray);
PREP(fastHashCreate);
PREP(fastHashKeys);

PREP(dumpPerformanceCounters);
PREP(dumpCallStack);
25 changes: 0 additions & 25 deletions addons/main/XEH_preInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,4 @@ ACRE_STACK_TRACE = [];
ACRE_STACK_DEPTH = 0;
ACRE_CURRENT_FUNCTION = "";

// Fast Hashes
// All hash stuff must be in main to guarantee it is compiled and executed first for proper data handling.
if (isNil "ACRE_FAST_HASH_POOL") then {
ACRE_FAST_HASH_POOL = [];
for "_i" from 1 to 50000 do {
ACRE_FAST_HASH_POOL pushBack HASH_CREATE_NAMESPACE;
};
};
ACRE_FAST_HASH_TO_DELETE = [];

[FUNC(hashMonitor), 0.33, []] call CBA_fnc_addPerFrameHandler;

ACRE_FAST_HASH_CREATED_HASHES = [];
ACRE_FAST_HASH_VAR_STATE = (allVariables missionNamespace);
ACRE_FAST_HASH_VAR_LENGTH = count ACRE_FAST_HASH_VAR_STATE;
ACRE_FAST_HASH_GC_INDEX = 0;
ACRE_FAST_HASH_GC_FOUND_OBJECTS = [];
ACRE_FAST_HASH_GC_FOUND_ARRAYS = [];
ACRE_FAST_HASH_GC_CHECK_OBJECTS = [];
ACRE_FAST_HASH_CREATED_HASHES_NEW = [];
ACRE_FAST_HASH_GC_IGNORE = ["acre_fast_hash_gc_found_objects","acre_fast_hash_gc_found_arrays","acre_fast_hash_created_hashes","acre_fast_hash_gc_check_objects","acre_fast_hash_created_hashes_new","acre_fast_hash_var_state","acre_fast_hash_pool","acre_fast_hash_to_delete"];
ACRE_FAST_HASH_GC_ORPHAN_CHECK_INDEX = 0;

[FUNC(garbageCollector), 0.25, []] call CBA_fnc_addPerFrameHandler;

ADDON = true;
1 change: 0 additions & 1 deletion addons/main/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,4 @@ class CfgMods {
#include "CfgSettings.hpp"

#include "CfgEventHandlers.hpp"
#include "CfgLocationTypes.hpp"
#include "CfgWeapons.hpp"
39 changes: 0 additions & 39 deletions addons/main/fnc_fastHashCopy.sqf

This file was deleted.

29 changes: 0 additions & 29 deletions addons/main/fnc_fastHashCopyArray.sqf

This file was deleted.

26 changes: 0 additions & 26 deletions addons/main/fnc_fastHashCreate.sqf

This file was deleted.

20 changes: 0 additions & 20 deletions addons/main/fnc_fastHashKeys.sqf

This file was deleted.

98 changes: 0 additions & 98 deletions addons/main/fnc_garbageCollector.sqf

This file was deleted.

30 changes: 0 additions & 30 deletions addons/main/fnc_hashMonitor.sqf

This file was deleted.

22 changes: 11 additions & 11 deletions addons/main/script_macros.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,17 @@ SQF equivalent of extensions/src/ACRE2Shared/Types.h

#define GET_TS3ID(object) (object call { private _ret = (_this getVariable [QGVAR(ts3id), -1]); if (_ret == -1) then { WARNING_1("%1 has no TS3 ID",_this); }; _ret })

#define IS_HASH(hash) (hash isEqualType locationNull && {(type hash) isEqualTo "ACRE_FastHashNamespaceDummy"})

#define HASH_CREATE_NAMESPACE (createLocation ["ACRE_FastHashNamespaceDummy", [-1000, -1000, 0], 0, 0])
#define HASH_CREATE (call EFUNC(main,fastHashCreate))
#define HASH_DELETE(hash) (ACRE_FAST_HASH_TO_DELETE pushBack hash)
#define HASH_HASKEY(hash, key) (!(isNil {hash getVariable key}))
#define HASH_SET(hash, key, val) (hash setVariable [key,val])
#define HASH_GET(hash, key) (hash getVariable key)
#define HASH_REM(hash, key) (hash setVariable [key,nil])
#define HASH_COPY(hash) (hash call EFUNC(main,fastHashCopy))
#define HASH_KEYS(hash) (hash call EFUNC(main,fastHashKeys))
#define IS_HASH(hash) (hash isEqualType createHashMap)

#define HASH_CREATE_NAMESPACE (createHashMap)
#define HASH_CREATE (createHashMap)
#define HASH_DELETE(hash) (hash = nil)
#define HASH_HASKEY(hash, key) (key in hash)
#define HASH_SET(hash, key, val) (hash set [key,val])
#define HASH_GET(hash, key) (hash get key)
#define HASH_REM(hash, key) (hash deleteAt key)
#define HASH_COPY(hash) (+hash)
#define HASH_KEYS(hash) (keys hash)

#define HASHLIST_CREATELIST(keys) []
#define HASHLIST_CREATEHASH(hashList) HASH_CREATE
Expand Down

0 comments on commit 1385ce4

Please sign in to comment.