summaryrefslogtreecommitdiffstats
path: root/js/src/gdb/tests/test-asmjs.cpp
blob: a9f16f1a19b980a98ac9597fe11dc6a5a71ed4b4 (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
38
#include "gdb-tests.h"
#include "jsapi.h"

#include <string.h>

FRAGMENT(asmjs, segfault) {
    using namespace JS;

    int line0 = __LINE__;
    const char* bytes = "\n"
        "function f(glob, ffi, heap) {\n"
        "    \"use asm\";\n"
        "    var f32 = new glob.Float32Array(heap);\n"
        "    function g(n) {\n"
        "        n = n | 0;\n"
        "        return +f32[n>>2];\n"
        "    }\n"
        "    return g;\n"
        "}\n"
        "\n"
        "var func = f(this, null, new ArrayBuffer(0x10000));\n"
        "func(0x10000 << 2);\n"
        "'ok'\n";

    CompileOptions opts(cx);
    opts.setFileAndLine(__FILE__, line0 + 1);
    opts.asmJSOption = JS::AsmJSOption::Enabled;
    RootedValue rval(cx);
    bool ok;
    ok = false;

    ok = Evaluate(cx, opts, bytes, strlen(bytes), &rval);

    breakpoint();

    (void) ok;
    (void) rval;
}