extend artifact cache with non-key-included generations, to allow gracefully decaying certain computations

This commit is contained in:
Ryan Fleury
2025-09-22 15:25:01 -07:00
parent 811e58c249
commit 8a1e6ab2e6
4 changed files with 27 additions and 87 deletions
+1 -1
View File
@@ -2252,7 +2252,7 @@ txt_text_info_from_hash_lang(Access *access, U128 hash, TXT_LangKind lang)
TXT_LangKind lang;
} key = {hash, lang};
String8 key_string = str8_struct(&key);
TXT_Artifact *artifact = ac_artifact_from_key(access, key_string, txt_artifact_create, txt_artifact_destroy, 1024);
TXT_Artifact *artifact = ac_artifact_from_key(access, key_string, 0, txt_artifact_create, txt_artifact_destroy, 1024);
TXT_TextInfo info = {0};
if(artifact != 0)
{
-78
View File
@@ -155,84 +155,6 @@ TXT_LangKind;
typedef TXT_TokenArray TXT_LangLexFunctionType(Arena *arena, U64 *bytes_processed_counter, String8 string);
////////////////////////////////
//~ rjf: Cache Types
typedef struct TXT_Request TXT_Request;
struct TXT_Request
{
U128 hash;
TXT_LangKind lang;
};
typedef struct TXT_RequestNode TXT_RequestNode;
struct TXT_RequestNode
{
TXT_RequestNode *next;
TXT_Request v;
};
typedef struct TXT_Node TXT_Node;
struct TXT_Node
{
// rjf: links
TXT_Node *next;
TXT_Node *prev;
// rjf: key
U128 hash;
TXT_LangKind lang;
// rjf: artifacts
Arena *arena;
TXT_TextInfo info;
// rjf: metadata
AccessPt access_pt;
B32 is_working;
U64 load_count;
};
typedef struct TXT_Slot TXT_Slot;
struct TXT_Slot
{
TXT_Node *first;
TXT_Node *last;
};
////////////////////////////////
//~ rjf: Shared State
typedef struct TXT_Shared TXT_Shared;
struct TXT_Shared
{
Arena *arena;
// rjf: cache
U64 slots_count;
TXT_Slot *slots;
StripeArray stripes;
TXT_Node **stripes_free_nodes;
// rjf: requests
Mutex req_mutex;
Arena *req_arena;
TXT_RequestNode *first_req;
TXT_RequestNode *last_req;
U64 req_count;
// rjf: user -> parse thread
U64 u2p_ring_size;
U8 *u2p_ring_base;
U64 u2p_ring_write_pos;
U64 u2p_ring_read_pos;
CondVar u2p_ring_cv;
Mutex u2p_ring_mutex;
// rjf: evictor thread
Thread evictor_thread;
};
////////////////////////////////
//~ rjf: Globals