// 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-constants.js'); 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. kExprGetLocal, 0, kExprGetLocal, 1, kExprGetLocal, 2, kExprI32Add, kExprI32Add ]); const sig = builder.addType(kSig_i_iii); builder.addFunction(undefined, kSig_i_iii) .addBody([ ...wasmI32Const(1), // i32.const 0x1 kExprSetLocal, 0, // set_local 0 ...wasmI32Const(4), // i32.const 0x1 kExprSetLocal, 1, // set_local 1 ...wasmI32Const(16), // i32.const 0x1 kExprSetLocal, 2, // set_local 2 kExprLoop, kWasmStmt, // loop kExprEnd, // end kExprGetLocal, 0, // get_local 0 kExprGetLocal, 1, // get_local 1 kExprGetLocal, 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());