//@ requireOptions("--maxPerThreadStackUsage=512000")

import Builder from '../Builder.js'
import * as assert from '../assert.js'

{
    const locals = [];
    const numLocals = 1000;
    for (let i = 0; i < numLocals; ++i)
        locals[i] = "f64";

    const b = new Builder();
    b.Type().End()
        .Function().End()
        .Export()
            .Function("test")
        .End()
        .Code()
        .Function("test", { params: ["i32"], ret: "void" }, locals)
            .GetLocal(0)
            .I32Const(0)
            .I32Eq()
            .BrIf(0)
            .GetLocal(0)
            .I32Const(1)
            .I32Sub()
            .Call(0)
        .End()
        .End();

    const bin = b.WebAssembly().get();
    const module = new WebAssembly.Module(bin);
    const instance = new WebAssembly.Instance(module);

    // This should not stack overflow
    instance.exports.test(25);
}
