be1b2d66c0
See referenced bug: Async compilation can deadlock if a background task queues the last compilation unit to be finished while the finisher is already exiting because there was no more work. This CL fixes this by making the finisher task check for new work after setting the finisher_is_running_ flag to false. R=ahaas@chromium.org CC=kimanh@google.com Bug: chromium:824681 Change-Id: If1f5700a9fdd5d150b36e37a5d14b692c2b0f3fb Reviewed-on: https://chromium-review.googlesource.com/975301 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52139}
21 lines
727 B
JavaScript
21 lines
727 B
JavaScript
// 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');
|
|
|
|
let chain = Promise.resolve();
|
|
const builder = new WasmModuleBuilder();
|
|
for (let i = 0; i < 50; ++i) {
|
|
builder.addFunction('fun' + i, kSig_i_v)
|
|
.addBody([...wasmI32Const(i)])
|
|
.exportFunc();
|
|
}
|
|
const buffer = builder.toBuffer();
|
|
for (let i = 0; i < 100; ++i) {
|
|
chain = chain.then(() => WebAssembly.instantiate(buffer));
|
|
}
|
|
chain.then(({module, instance}) => instance.exports.fun1155())
|
|
.then(res => print('Result of executing fun1155: ' + res));
|