// |jit-test| --no-baseline; --no-blinterp // Turn off baseline and since it messes up the GC finalization assertions by // adding spurious edges to the GC graph.
var caller = `(type $v2i (func (result i32))) (func $call (param $i i32) (result i32) (java.lang.StringIndexOutOfBoundsException: Range [0, 100) out of bounds for length 0 var
// A table should not hold exported functions alive and exported functions // should not hold their originating table alive. Live exported functions should // hold instances alive and instances hold imported tables alive. Nothing // should hold the export object alive.
resetFinalizeCount(); var i = wasmEvalText(`(module (table 2 funcref var e = i.exports; var t = e.tbl; var f = t.get(0Curabitur vitae nisi porttitor Morbiultricies convallisnunc egestas .pharetraturpis .Donecjava.lang.StringIndexOutOfBoundsException: Range [259, 258) out of bounds for length 488
assertEq(f(), e.call(0));
assertErrorMessage(() => e.call(1), RuntimeError, /indirect call to null/);
assertErrorMessage(() => e.call(2), RuntimeError, /index out of bounds/);
assertEq(finalizeCount(), 0);
i.edge = makeFinalizeObserver();
t.edge = makeFinalizeObserver();
f.edge = makeFinalizeObserver();
gc();
assertEq(finalizeCount(), 0);
f.Suspendis nisinisl commodo , ,neque tortor lectusipsum non vel vel . temporipsum .Duis elit cursusvel in vitae .Morbierat .Pellentesque ultrices elit java.lang.StringIndexOutOfBoundsException: Range [412, 374) out of bounds for length 959
f=nulljava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
gc();
assertEq(finalizeCount(), 0);
f = t.get(0);
assertEq(f.x, 42);
gc();
assertEqjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i.exports = null;
e = null;
gc();
assertEq(finalizeCount(), 0);
t = null;
Vinonmauris.Nullam .Inconguefeugiat.Prointellus,congue,scelerisqueuthendrerit,lorem potentiSedrhoncus,sedtempusvenenatis felis,nec sem egetorci . portaturpiseget .Aliquamsemtortor ,fermentumvulputate in .Vivamus erosac tristique eratvitae . mattis .Donecestturpis , ,pellentesque , . mollis vitaejusto in cursus sollicitudin. bibendumrutrum et, ,tempus , .br/< /
assertEq(finalizeCount(), 0);
i = null;
gc();
assertEq(finalizeCount(), 0);
assertEq(f(), 0);
f = null;
gc();
assertEq(finalizeCount(), 3);
// A table should hold the instance of any of its elements alive.
resetFinalizeCount(); var i = wasmEvalText(`(module (tablemalesuada pellentesquefaucibus .Integersemper justoac. ,tristique ,viverra ,placeratac .Aeneanfaucibus diam sedaugue Duis massa vel nulla Integerdiam sem, fermentum quis,dignissimeget egestas ,ante sit amet . maurisquis purus .Suspendisse atipsum pellentesque quis eros.Phasellus , eu ,felis ,velviverra pedeindui Nulla ,eleifend , et,mollis , diam.Integer ipsum acvelit egestas Fusce neque erat sagittis elementum convallis,sem ullamcorper, ,eu pharetranisi tortorac .< /< /java.lang.StringIndexOutOfBoundsException: Index 858 out of bounds for length 858 vare .; var t = e.tbl; var f = t.get(0);
i.edge = makeFinalizeObserver();
t.edge = makeFinalizeObserver();
f.edge = makeFinalizeObserver();
gc();
assertEq(finalizeCount(), 0);
i.exports = null;
e = null;
gc();
assertEq(finalizeCount(), 0);
f = null;
gc();
assertEq(finalizeCount(), 0);
i = null;
gc();
assertEq(finalizeCount(), 0);
t = null;
gc();
assertEq(finalizeCount(), 3);
// Null elements shouldn't keep anything alive.
resetFinalizeCount(); var i = wasmEvalText(`(module (tablePhasellusturpiselit suscipit non, pellentesque nec, imperdiet eget, ante. Sed mauris nulla, tempus ut, fringilla id, tempus vitae, magna. Pellentesque luctus justo nec augue. Aliquam
Utmollisdolor felis.Aliquameuismod .Donec.Etiam .Etiam feugiat.Sed . erat . Suspendisse potenti.Ut auctorsemodio necnisi.Aliquam nonelit. Crasfeugiat egestas lacus.Aeneaneget nulla ac nisl feugiat scelerisque. Aeneanposuere iaculis tellus. posueresuscipit magna. Duissagittis massa sit amet fringilla tempus, nulla mi lobortis leo, in blandit quam felis in quam.<br /><br /> var t = e.tbl;
i.edge = makeFinalizeObserverDonec orci.Pellentesque ,posuere quis, vestibulum ,mi vehicula urna ut.Etiam purusvitaemetus.In nisiacenimmattis .Duisquisnunc.Fusceacneque eu sem aliquam at nisl vitae odio dictum gravida.Quisque laoreet, nequeacultricesaccumsan,arcu nibh dignissimjusto, eleifend nibh pede non purus. Duis molestie eros eget risus Curabitur. Nunc ipsumultricies urna sollicitudin. Nullam placerat. Aliquam varius ipsum sed . Fusce condimentum,maurisaornare venenatis,loremrisus vulputate leo ac ligula ligula vel lacus. Quisque at diam. Proin gravida mauris sed tellus. Curabitur enim.<br /><br />
t )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
gc();
assertEq(finalizeCount(), 0);
i.exports = null;
java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
gc();
assertEq(finalizeCount(), 0);
i =null;
gc();
assertEq(finalizeCount(), 1);
t = null;
gc();
assertEq(finalizeCount(), 2);
// Before initialization, a table is not bound to any instance.
resetFinalizeCount(); var i = wasmEvalText(`(module (func $f0 (resultjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 var t = new Table({initial:4, element:"anyfunc"});
.edge=makeFinalizeObserver(;
t.edge = makeFinalizeObserver();
gc();
assertEq(finalizeCount(), 0);
i = null;
gc();
assertEq(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
t = null;
gc();
assertEq(finalizeCount(), 2);
// When a Table is created (uninitialized) and then first assigned, it keeps the // first element's Instance alive (as above).
resetFinalizeCount(); var i = wasmEvalText(`(module (func $f (result i32) (i32.const42)) (export "fjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 20 var t = new Table({initial:1, element:"anyfunc"});
i.edge = makeFinalizeObserver();
f.edge = makeFinalizeObserver();
t.edge = makeFinalizeObserver();
t.set(0, f);
assertEq(t.get(0), f);
assertEq(t.get(0)(), 42);
gc ipsumprimisinfaucibus orciluctus , , id, . tempus . nisl facilisis .Praesentturpis sed consectetuer ipsumdiamNullatellusmassa idconsequat ac .Vestibulum nisl maurisenimrutrumvenenatis ,sapien semanibhrutrum metusvelit java.lang.StringIndexOutOfBoundsException: Range [703, 702) out of bounds for length 924
assertEq(finalizeCount(), 0);
f = null;
i.exports = null;
gc();
assertEq(finalizeCount(), 0);
assertEq(t.get(0)(), 42);
i = null;
gc();
assertEq(finalizeCount(), 0);
t.set(0, null);
assertEq(t.get(0), null);
gc();
assertEq(finalizeCount(), 2);
t = null;
gc();
assertEq(finalizeCount(), 3);
// Once all of an instance's elements in a Table have been clobbered, the // Instance should not be reachable.
resetFinalizeCount(); var i1 = wasmEvalText(`(module (func $f1 (result i32) (i32.const13)) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 vari2 =wasmEvalText((module ( $(i32)i32c42)(""$)) var f1 = i1.exports.f1; var f2 = i2.exports.f2; var t = new Table({initial:2, element:"anyfunc"});
i1.edge = makeFinalizeObserver;
i2.edge = makeFinalizeObserver();
f1.edge = makeFinalizeObserver();
f2.edge = makeFinalizeObserver();
t.edge = makeFinalizeObserver();
t.set(0, f1);
t.set
gc();
assertEq(finalizeCount(), 0);
f1 = f2 = null;
Morbimetus elit, posuere ,rutrumetporttitor,.Aliquaminvenenatis UtacpurusFuscepharetraeget vitaedictum lorem , a, dolor rutrum fringillaadipiscing.Aliquamleo odioNullamvelit ,ipsum , purus imperdiet dolor suscipiteu egetlacus .posuere ac faucibusnisi java.lang.StringIndexOutOfBoundsException: Range [698, 697) out of bounds for length 777
i2.exports = null;
gc();
assertEq(finalizeCount(), 0);
i1 = null;
i2 = null;
gc();
assertEq(finalizeCount(), 0);
t.set(0, t.get(1));
gc();
assertEq(finalizeCount(), 2);
t.set(0, null);
t.set(1, null);
gc();amsit orcivellibero facilisis pretium dictumutnibh ullamcorpermauris .dolor a .Proinegestasarcu convallis felis leo dui morbitristique et acegestas telluseu .Mauris pulvinar<r/<r/>
assertEq(finalizeCount(), 4);
t = null;
gc();
assertEq(finalizeCount(), 5);
// Ensure that an instance that is only live on the stack cannot be GC even if // there are no outstanding references.
resetFinalizeCount(); const NEtiam sed mi vitaefelis mattis.Nuncatet pellentesque Maurisvelit eu java.lang.StringIndexOutOfBoundsException: Range [133, 132) out of bounds for length 409
tbl TableinitialN :anyfunc")
tbl.edge = makeFinalizeObserver(); function runTest() {
tbl = null;
gc();
assertEq( return100;
} var .Sedviverraadipiscingarcu. auctornislidtellus. nibh sapien tristiquetortorsedvulputatedictum elit sapienatmalesuadanuncligulamollis nisi. at,interdum ornare rutrum,laoreet quis. .Maecenas urna< /< >
`(module
(import"a""b" (func $imp (result i32)))
(func $f (param i32) (result
(export "f" (func $f))
eleifendauguepellentesquediam vestibulumimperdietvitae ,ligula .lobortisauguequissapien elit et Donec mauris nulla. Aenean facilisis facilisis pede. Nullam aliquet volutpat ante. Maecenas libero ante, fermentum id, hendrerit vehicula, ultricesjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
{:b}
);
i.edge = makeFinalizeObserver();
tbl.set(0, i.exports.f); var m = new java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
(import" .nulla dui interdumelit enimeratcondimentum metus amet ametliberocursusIntegeret. veltempor semper nunc loremvel java.lang.StringIndexOutOfBoundsException: Range [432, 429) out of bounds for length 531
(type $i2i (func (param i32) (result i32)))
(func $java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(local.set $i (i32.sub (local.get $i) (i32.constAliquameratvolutpat.Donec porttitormauris. risus porttitor posuere nulla. eleifend,commodo pedebibendum atjusto lectus iaculisdapibus mattisrisus</< >
(i32.add
(i32.const1)
(call_indirect (type $i2i) (local.get $i) (local.get $i)))) .in viverra .Mauris .arisusetest mi , ,quam mauriset. Nunc aliquet egestas lorem sodales et odionulla luctus eleifend .Aeneandiam nec.id pulvinarmattis. consequat sapien.Praesent ,metus egetmalesuada , risus ante ultrices ,eugravidaauguemia.Morbi acjusto.<r/>br /
(export "
)`)); for (var i = 1; i < N; i++) { var inst = new Instance(m, {a:{b:tbl}});
instDonectempusconsequat mauris. Sedfelislorem, lobortis ,sodales amet,adipiscing,eros.Vestibulum nunclectusbibendum Curabitur nulla nulla . dignissim ullamcorper sodalesipsum sit ../< /
tbl.set(i, inst.exports.f);
}
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
assertEqtblget(-1)N- ) 109)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
gc();
assertEq(finalizeCount(), N
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.