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

    function foo() {
        let o = {};
        for (let i = 0; i < 500; i++)
            o[i + "p"] = i;
    }
    foo.displayName = "display foo";
    runTest(foo, ["display foo"]);


    function baz() {
        let o = {};
        for (let i = 0; i < 500; i++)
            o[i + "p"] = i;
    }
    Object.defineProperty(baz, 'displayName', { get: function() { throw new Error("shouldnt be called"); } }); // We should ignore this because it's a getter.
    runTest(baz, ["baz"]);


    function bar() {
        let o = {};
        for (let i = 0; i < 500; i++)
            o[i + "p"] = i;
    }
    bar.displayName = 20; // We should ignore this because it's not a string.
    runTest(bar, ["bar"]);

    function jaz() {
        let o = {};
        for (let i = 0; i < 500; i++)
            o[i + "p"] = i;
    }
    jaz.displayName = ""; // We should ignore this because it's the empty string.
    runTest(jaz, ["jaz"]);

    function makeFunction(displayName) {
        let result = function() {
            let o = {};
            for (let i = 0; i < 500; i++)
                o[i + "p"] = i;
        };
        result.displayName = displayName;
        return result;
    }

    runTest(makeFunction("hello world"), ["hello world"])
}
