incremental-01.js (663B)
1 var objs; 2 3 function init() 4 { 5 objs = new Object(); 6 var x = new Object(); 7 objs.root1 = x; 8 objs.root2 = new Object(); 9 x.ptr = new Object(); 10 x = null; 11 12 /* 13 * Clears out the arena lists. Otherwise all the objects above 14 * would be considered to be created during the incremental GC. 15 */ 16 gc(); 17 } 18 19 /* 20 * Use eval here so that the interpreter frames end up higher on the 21 * stack, which avoids them being seen later on by the conservative 22 * scanner. 23 */ 24 eval("init()"); 25 26 gcslice(0); // Start IGC, but don't mark anything. 27 selectforgc(objs.root2); 28 gcslice(1); 29 objs.root2.ptr = objs.root1.ptr; 30 objs.root1.ptr = null; 31 gcslice();