Commit ed373897 authored by Andreas Haas's avatar Andreas Haas Committed by Commit Bot

[wasm][anyref] Add test for the default value of anyfunc locals

The implementation already exists, but the test doesn't.

R=titzer@chromium.org

Bug: v8:7581
Change-Id: I42e1b0a1c930ec4cc1f1701d5613828acab4fc30
Reviewed-on: https://chromium-review.googlesource.com/c/1426123Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59038}
parent 61ea7c48
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
load("test/mjsunit/wasm/wasm-constants.js"); load("test/mjsunit/wasm/wasm-constants.js");
load("test/mjsunit/wasm/wasm-module-builder.js"); load("test/mjsunit/wasm/wasm-module-builder.js");
(function testAnyRefIdentityFunction() { (function testAnyFuncIdentityFunction() {
print(arguments.callee.name); print(arguments.callee.name);
const builder = new WasmModuleBuilder(); const builder = new WasmModuleBuilder();
builder.addFunction('main', kSig_a_a) builder.addFunction('main', kSig_a_a)
...@@ -23,7 +23,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); ...@@ -23,7 +23,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
instance.exports.main, instance.exports.main(instance.exports.main)); instance.exports.main, instance.exports.main(instance.exports.main));
})(); })();
(function testPassAnyRefToImportedFunction() { (function testPassAnyFuncToImportedFunction() {
print(arguments.callee.name); print(arguments.callee.name);
const builder = new WasmModuleBuilder(); const builder = new WasmModuleBuilder();
const sig_index = builder.addType(kSig_v_a); const sig_index = builder.addType(kSig_v_a);
...@@ -42,7 +42,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); ...@@ -42,7 +42,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
main(main); main(main);
})(); })();
(function testPassAnyRefWithGCWithLocals() { (function testPassAnyFuncWithGCWithLocals() {
print(arguments.callee.name); print(arguments.callee.name);
const builder = new WasmModuleBuilder(); const builder = new WasmModuleBuilder();
const ref_sig = builder.addType(kSig_v_a); const ref_sig = builder.addType(kSig_v_a);
...@@ -78,7 +78,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); ...@@ -78,7 +78,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
main(main); main(main);
})(); })();
(function testPassAnyRefWithGC() { (function testPassAnyFuncWithGC() {
print(arguments.callee.name); print(arguments.callee.name);
const builder = new WasmModuleBuilder(); const builder = new WasmModuleBuilder();
const ref_sig = builder.addType(kSig_v_a); const ref_sig = builder.addType(kSig_v_a);
...@@ -102,7 +102,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); ...@@ -102,7 +102,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
main(main); main(main);
})(); })();
(function testPassAnyRefWithGCInWrapper() { (function testPassAnyFuncWithGCInWrapper() {
print(arguments.callee.name); print(arguments.callee.name);
const builder = new WasmModuleBuilder(); const builder = new WasmModuleBuilder();
const kSig_a_iai = makeSig([kWasmI32, kWasmAnyFunc, kWasmI32], [kWasmAnyFunc]); const kSig_a_iai = makeSig([kWasmI32, kWasmAnyFunc, kWasmI32], [kWasmAnyFunc]);
...@@ -123,3 +123,16 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); ...@@ -123,3 +123,16 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
const result = main(triggerGCParam, main, triggerGCParam); const result = main(triggerGCParam, main, triggerGCParam);
assertSame(main, result); assertSame(main, result);
})(); })();
(function testAnyFuncDefaultValue() {
print(arguments.callee.name);
const builder = new WasmModuleBuilder();
const sig_index = builder.addType(kSig_a_v);
builder.addFunction('main', sig_index)
.addLocals({anyfunc_count: 1})
.addBody([kExprGetLocal, 0])
.exportFunc();
const main = builder.instantiate().exports.main;
assertEquals(null, main());
})();
...@@ -152,6 +152,7 @@ let kSig_v_r = makeSig([kWasmAnyRef], []); ...@@ -152,6 +152,7 @@ let kSig_v_r = makeSig([kWasmAnyRef], []);
let kSig_v_a = makeSig([kWasmAnyFunc], []); let kSig_v_a = makeSig([kWasmAnyFunc], []);
let kSig_v_rr = makeSig([kWasmAnyRef, kWasmAnyRef], []); let kSig_v_rr = makeSig([kWasmAnyRef, kWasmAnyRef], []);
let kSig_r_v = makeSig([], [kWasmAnyRef]); let kSig_r_v = makeSig([], [kWasmAnyRef]);
let kSig_a_v = makeSig([], [kWasmAnyFunc]);
function makeSig(params, results) { function makeSig(params, results) {
return {params: params, results: results}; return {params: params, results: results};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment