summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/regress/wasm/regress-7366.js
blob: 92579bc37b138a1e994abf6b7b84bcaddfd6908c (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
// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

load('test/mjsunit/wasm/wasm-module-builder.js');

const builder = new WasmModuleBuilder();
builder.addFunction(undefined, kSig_i_iii).addBody([
  // Return the sum of all arguments.
  kExprLocalGet, 0, kExprLocalGet, 1, kExprLocalGet, 2, kExprI32Add, kExprI32Add
]);
const sig = builder.addType(kSig_i_iii);
builder.addFunction(undefined, kSig_i_iii)
    .addBody([
      ...wasmI32Const(1),         // i32.const 0x1
      kExprLocalSet, 0,           // set_local 0
      ...wasmI32Const(4),         // i32.const 0x1
      kExprLocalSet, 1,           // set_local 1
      ...wasmI32Const(16),        // i32.const 0x1
      kExprLocalSet, 2,           // set_local 2
      kExprLoop, kWasmVoid,       // loop
      kExprEnd,                   // end
      kExprLocalGet, 0,           // get_local 0
      kExprLocalGet, 1,           // get_local 1
      kExprLocalGet, 2,           // get_local 2
      kExprI32Const, 0,           // i32.const 0 (func index)
      kExprCallIndirect, sig, 0,  // call indirect
    ])
    .exportAs('main');
builder.appendToTable([0]);
const instance = builder.instantiate();
assertEquals(21, instance.exports.main());