| // Copyright 2019 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'); | 
 |  | 
 | // Construct a big table switch. The code size will overflow 4096 bytes. | 
 | const NUM_CASES = 3073; | 
 |  | 
 | let body = []; | 
 | // Add one block, so we can jump to this block or to the function end. | 
 | body.push(kExprBlock); | 
 | body.push(kWasmStmt); | 
 |  | 
 | // Add the big BrTable. | 
 | body.push(kExprLocalGet, 0); | 
 | body.push(kExprBrTable, ...wasmSignedLeb(NUM_CASES)); | 
 | for (let i = 0; i < NUM_CASES + 1; i++) { | 
 |   body.push(i % 2); | 
 | } | 
 |  | 
 | // End the block. | 
 | body.push(kExprEnd); | 
 |  | 
 | // Create a module for this. | 
 | let builder = new WasmModuleBuilder(); | 
 | builder.addFunction('main', kSig_v_i).addBody(body).exportFunc(); | 
 | let instance = builder.instantiate(); | 
 | instance.exports.main(0); |