mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-21 19:25:00 -07:00
extend artifact cache with non-key-included generations, to allow gracefully decaying certain computations
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user