41aa8a6082
Emitting bytes to the Uint8Array directly speeds up generation of binaries enormously. On the limits-any.js spec test (which creates huge modules), the execution time of an optdebug build reduces from 286 seconds to 61 seconds. R=titzer@chromium.org CC=ahaas@chromium.org, ssauleau@igalia.com Change-Id: I5b473b7dc7b0853e54d2406f3db3658bb2abed40 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1508352 Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60096}
20 lines
837 B
JavaScript
20 lines
837 B
JavaScript
// 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.
|
|
|
|
// Flags: --wasm-test-streaming
|
|
|
|
load("test/mjsunit/wasm/wasm-module-builder.js");
|
|
|
|
(function TestAsyncCompileMultipleCodeSections() {
|
|
let binary = new Binary();
|
|
binary.emit_header();
|
|
binary.emit_bytes([kTypeSectionCode, 4, 1, kWasmFunctionTypeForm, 0, 0]);
|
|
binary.emit_bytes([kFunctionSectionCode, 2, 1, 0]);
|
|
binary.emit_bytes([kCodeSectionCode, 6, 1, 4, 0, kExprGetLocal, 0, kExprEnd]);
|
|
binary.emit_bytes([kCodeSectionCode, 6, 1, 4, 0, kExprGetLocal, 0, kExprEnd]);
|
|
let buffer = binary.trunc_buffer();
|
|
assertPromiseResult(WebAssembly.compile(buffer), assertUnreachable,
|
|
e => assertInstanceof(e, WebAssembly.CompileError));
|
|
})();
|