saved-stack.js (1698B)
1 // The following binary data was created with: 2 // JS_STRUCTURED_CLONE_VERSION = 8 3 // 4 // ``` 5 // function f() { 6 // return saveStack(); 7 // } 8 // function g() { 9 // return f(); 10 // } 11 // 12 // let stack = g(); 13 // print(valueToSource(serialize(stack, undefined, {scope: "DifferentProcess"}).clonebuffer)) 14 // ``` 15 16 function checkStack(stack) { 17 print(stack.toString()); 18 19 assertEq(stack.functionDisplayName, "f"); 20 assertEq(stack.parent.functionDisplayName, "g"); 21 assertEq(stack.parent.parent.functionDisplayName, null); 22 assertEq(stack.parent.parent.parent, null); 23 } 24 25 var clonebuffer = serialize("dummy"); 26 clonebuffer.clonebuffer = "\x02\x00\x00\x00\x00\x00\xF1\xFF\x18\x00\xFF\xFF\x16\x00\xFF\xFF \x00\x00\x80\x04\x00\xFF\xFF/home/tom/Desktop/saved-stack.js\x11\x00\x00\x00\x03\x00\xFF\xFF\t\x00\x00\x00\x03\x00\xFF\xFF\x01\x00\x00\x80\x04\x00\xFF\xFFf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\x18\x00\xFF\xFF\x16\x00\xFF\xFF \x00\x00\x80\x04\x00\xFF\xFF/home/tom/Desktop/saved-stack.js\x14\x00\x00\x00\x03\x00\xFF\xFF\t\x00\x00\x00\x03\x00\xFF\xFF\x01\x00\x00\x80\x04\x00\xFF\xFFg\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\x18\x00\xFF\xFF\x16\x00\xFF\xFF \x00\x00\x80\x04\x00\xFF\xFF/home/tom/Desktop/saved-stack.js\x17\x00\x00\x00\x03\x00\xFF\xFF\r\x00\x00\x00\x03\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\x00\x00\x13\x00\xFF\xFF\x00\x00\x00\x00\x13\x00\xFF\xFF\x00\x00\x00\x00\x13\x00\xFF\xFF"; 27 var stack = deserialize(clonebuffer); 28 checkStack(stack); 29 30 function f() { 31 return saveStack(); 32 } 33 function g() { 34 return f(); 35 } 36 stack = deserialize(serialize(g())); 37 checkStack(stack);