summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/structured-clone/saved-stack.js
blob: dd2d4a3240146ccfc355c1b6e44c3339d610ee0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// The following binary data was created with:
// JS_STRUCTURED_CLONE_VERSION = 8
//
// ```
// function f() {
//  return saveStack();
// }
// function g() {
//  return f();
// }
//
// let stack = g();
// print(valueToSource(serialize(stack, undefined, {scope: "DifferentProcess"}).clonebuffer))
// ```

function checkStack(stack) {
    print(stack.toString());

    assertEq(stack.functionDisplayName, "f");
    assertEq(stack.parent.functionDisplayName, "g");
    assertEq(stack.parent.parent.functionDisplayName, null);
    assertEq(stack.parent.parent.parent, null);
}

var clonebuffer = serialize("dummy");
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";
var stack = deserialize(clonebuffer);
checkStack(stack);

function f() {
 return saveStack();
}
function g() {
 return f();
}
stack = deserialize(serialize(g()));
checkStack(stack);