384ac3cde9
According to the spec, if an imported function gets exported, the exported function has to be identical to to imported function. With this CL we initialize the list of potential js_wrappers_ with all wasm function we imported. Therefore no new wrappers are generated for these functions. R=clemensh@chromium.org Bug: v8:7364 Change-Id: Ibcd47d8fcc4c2fb5740d57ea547fbd01c2a4e80a Reviewed-on: https://chromium-review.googlesource.com/901626 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#51244}
32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
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');
|
|
|
|
const exportingModuleBinary = (() => {
|
|
const builder = new WasmModuleBuilder();
|
|
builder.addFunction('f', kSig_i_v).addBody([kExprI32Const, 42]).exportFunc();
|
|
return builder.toBuffer();
|
|
})();
|
|
|
|
const exportingModule = new WebAssembly.Module(exportingModuleBinary);
|
|
const exportingInstance = new WebAssembly.Instance(exportingModule);
|
|
|
|
const reExportingModuleBinary = (() => {
|
|
const builder = new WasmModuleBuilder();
|
|
const gIndex = builder.addImport('a', 'g', kSig_i_v);
|
|
builder.addExport('y', gIndex);
|
|
return builder.toBuffer();
|
|
})();
|
|
|
|
const module = new WebAssembly.Module(reExportingModuleBinary);
|
|
const imports = {
|
|
a: {g: exportingInstance.exports.f},
|
|
};
|
|
const instance = new WebAssembly.Instance(module, imports);
|
|
|
|
// Previously exported Wasm functions are re-exported with the same value
|
|
assertEquals(instance.exports.y, exportingInstance.exports.f);
|