add rc trace"

This commit is contained in:
2026-01-23 17:22:07 -06:00
parent beea76949c
commit a01b48dabc
3 changed files with 491 additions and 5 deletions

View File

@@ -3449,4 +3449,62 @@ return {
var result = extract(text, /hello/i)
if (result[0] != "Hello") throw "extract regex case insensitive failed"
},
// ============================================================================
// GC PATHOLOGICAL CASES
// ============================================================================
test_gc_cycle_object_self: function() {
var obj = {name: "root"}
obj.self = obj
if (obj.self != obj) throw "self cycle failed"
},
test_gc_cycle_array_self: function() {
var arr = []
push(arr, arr)
if (arr[0] != arr) throw "array self cycle failed"
},
test_gc_cycle_object_array_pair: function() {
var obj = {kind: "node"}
var arr = [obj]
obj.arr = arr
if (obj.arr[0] != obj) throw "object/array cycle failed"
},
test_gc_shared_references: function() {
var shared = {value: 42}
var a = {ref: shared}
var b = {ref: shared}
if (a.ref != shared || b.ref != shared) throw "shared reference failed"
},
test_gc_object_key_cycle: function() {
var k = {}
var v = {label: "value"}
var o = {}
o[k] = v
v.back = o
if (o[k].back != o) throw "object key cycle failed"
},
test_gc_object_text_key_mix: function() {
var obj = {}
var key = "alpha"
var inner = {token: "x"}
obj[key] = inner
obj["beta"] = [inner, obj]
if (obj.alpha.token != "x") throw "text key value failed"
if (obj.beta[1] != obj) throw "text key cycle failed"
},
test_gc_array_object_key_mix: function() {
var obj = {}
var arr = [obj]
obj[arr] = "anchor"
obj.self = obj
if (obj[arr] != "anchor") throw "array object key failed"
if (arr[0] != obj) throw "array object mix failed"
},
}