if (platformSupportsSamplingProfiler()) {
    load("./sampling-profiler/samplingProfiler.js");

    function foo(x) { 
        let o = {};
        for (let i = 0; i < 1000; i++) {
            let x = i;
            x--;
            o["x" + x] = x;
        }
        return x; 
    }
    noInline(foo);
    const limit = 300;
    let hellaDeep = function(i) {
        if (i < limit)
            hellaDeep(i + 1);
        else
            foo(i); 
    }

    let start = function() {
        hellaDeep(1);
    }

    let stackTrace = [];
    stackTrace.push("foo");
    for (let i = 0; i < limit; i++)
        stackTrace.push("hellaDeep");
    stackTrace.push("start");

    runTest(start, stackTrace);
}
