mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
Bumps compile to 515 (#79134)
## About The Pull Request LSP supports it, let's GOOOOOO I've removed the 515 tests since they're stable, alongside the libcall wrapper. left the rustgcall wrapper cause yaknow memes Just removed all the 515 and 514 particular define wrappers. gaming ## Changelog 🆑 server: Minimum compile version has been bumped to 515. clients still support 514 but we're gonna start using 515 restricted features for serverside now. /🆑 --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
This commit is contained in:
co-authored by
John Willard
parent
86a2afe45a
commit
1d6533c525
@@ -145,12 +145,6 @@ SUBSYSTEM_DEF(garbage)
|
||||
pass_counts[i] = 0
|
||||
fail_counts[i] = 0
|
||||
|
||||
#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE
|
||||
// 1 from the hard reference in the queue, and 1 from the variable used before this
|
||||
#define IS_DELETED(datum, _) (refcount(##datum) == 2)
|
||||
#else
|
||||
#define IS_DELETED(datum, gcd_at_time) (isnull(##datum) || ##datum.gc_destroyed != gcd_at_time)
|
||||
#endif
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_FILTER)
|
||||
if (level == GC_QUEUE_FILTER)
|
||||
@@ -168,7 +162,7 @@ SUBSYSTEM_DEF(garbage)
|
||||
|
||||
lastlevel = level
|
||||
|
||||
//We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list.
|
||||
//We do this rather then for(var/list/ref_info in queue) because that sort of for loop copies the whole list.
|
||||
//Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun.
|
||||
for (var/i in 1 to length(queue))
|
||||
var/list/L = queue[i]
|
||||
@@ -183,17 +177,11 @@ SUBSYSTEM_DEF(garbage)
|
||||
break // Everything else is newer, skip them
|
||||
count++
|
||||
|
||||
#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE
|
||||
var/datum/D = L[GC_QUEUE_ITEM_REF]
|
||||
#else
|
||||
var/GCd_at_time = L[GC_QUEUE_ITEM_GCD_DESTROYED]
|
||||
|
||||
var/refID = L[GC_QUEUE_ITEM_REF]
|
||||
var/datum/D
|
||||
D = locate(refID)
|
||||
#endif
|
||||
|
||||
if (IS_DELETED(D, GCd_at_time)) // So if something else coincidently gets the same ref, it's not deleted by mistake
|
||||
// 1 from the hard reference in the queue, and 1 from the variable used before this
|
||||
// If that's all we've got, send er off
|
||||
if (refcount(D) == 2)
|
||||
++gcedlasttick
|
||||
++totalgcs
|
||||
pass_counts[level]++
|
||||
@@ -228,10 +216,9 @@ SUBSYSTEM_DEF(garbage)
|
||||
var/datum/qdel_item/I = items[type]
|
||||
|
||||
var/message = "## TESTING: GC: -- [text_ref(D)] | [type] was unable to be GC'd --"
|
||||
#if DM_VERSION >= 515
|
||||
message = "[message] (ref count of [refcount(D)])"
|
||||
#endif
|
||||
log_world(message)
|
||||
|
||||
var/detail = D.dump_harddel_info()
|
||||
if(detail)
|
||||
LAZYADD(I.extra_details, detail)
|
||||
@@ -270,8 +257,6 @@ SUBSYSTEM_DEF(garbage)
|
||||
queue.Cut(1,count+1)
|
||||
count = 0
|
||||
|
||||
#undef IS_DELETED
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_FILTER)
|
||||
if (isnull(D))
|
||||
return
|
||||
@@ -280,21 +265,11 @@ SUBSYSTEM_DEF(garbage)
|
||||
return
|
||||
var/queue_time = world.time
|
||||
|
||||
#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE
|
||||
var/refid = D
|
||||
if (D.gc_destroyed <= 0)
|
||||
D.gc_destroyed = queue_time
|
||||
#else
|
||||
var/refid = text_ref(D)
|
||||
var/static/uid = 0
|
||||
if (D.gc_destroyed <= 0)
|
||||
uid = WRAP(uid+1, 1, SHORT_REAL_LIMIT - 1)
|
||||
D.gc_destroyed = uid
|
||||
#endif
|
||||
|
||||
var/list/queue = queues[level]
|
||||
|
||||
queue[++queue.len] = list(queue_time, refid, D.gc_destroyed) // not += for byond reasons
|
||||
queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons
|
||||
|
||||
//this is mainly to separate things profile wise.
|
||||
/datum/controller/subsystem/garbage/proc/HardDelete(datum/D)
|
||||
|
||||
Reference in New Issue
Block a user