[wasm] Prepare tests for flipping the wasm-bigint flag
We want to enable the wasm-bigint implementation by default. However, at the moment there exist several tests which fail when wasm-bigint gets enabled. With this CL we adjust or delete these tests so that they pass once wasm-bigint gets enabled. At the same time we disable these tests for now, and re-enable them in the CL that flips the flag. R=jkummerow@chromium.org Bug: v8:7741 Change-Id: I733bfe7ff19e403913b143e6ea86ab13602ab993 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2243212 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#68328}
This commit is contained in:
parent
3c0ca76673
commit
9d6f96c187
@ -127,37 +127,6 @@ WASM_COMPILED_EXEC_TEST(TryCatchCallExternal) {
|
|||||||
r.CheckCallViaJS(kResult1, 1);
|
r.CheckCallViaJS(kResult1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
WASM_COMPILED_EXEC_TEST(TryCatchTrapTypeError) {
|
|
||||||
TestSignatures sigs;
|
|
||||||
EXPERIMENTAL_FLAG_SCOPE(eh);
|
|
||||||
HandleScope scope(CcTest::InitIsolateOnce());
|
|
||||||
const char* source = "(function() { return 0; })";
|
|
||||||
Handle<JSFunction> js_function =
|
|
||||||
Handle<JSFunction>::cast(v8::Utils::OpenHandle(
|
|
||||||
*v8::Local<v8::Function>::Cast(CompileRun(source))));
|
|
||||||
// Make sure to use a signature incompatible with JS below.
|
|
||||||
ManuallyImportedJSFunction import = {sigs.i_ll(), js_function};
|
|
||||||
WasmRunner<uint32_t, uint32_t> r(execution_tier, &import);
|
|
||||||
constexpr uint32_t kResult0 = 23;
|
|
||||||
constexpr uint32_t kResult1 = 42;
|
|
||||||
constexpr uint32_t kJSFunc = 0;
|
|
||||||
|
|
||||||
// Build the main test function.
|
|
||||||
BUILD(r, WASM_TRY_CATCH_T(
|
|
||||||
kWasmI32,
|
|
||||||
WASM_STMTS(
|
|
||||||
WASM_I32V(kResult1),
|
|
||||||
WASM_IF(WASM_I32_EQZ(WASM_GET_LOCAL(0)),
|
|
||||||
WASM_STMTS(WASM_CALL_FUNCTION(kJSFunc, WASM_I64V(7),
|
|
||||||
WASM_I64V(9)),
|
|
||||||
WASM_DROP))),
|
|
||||||
WASM_STMTS(WASM_DROP, WASM_I32V(kResult0))));
|
|
||||||
|
|
||||||
// Need to call through JS to allow for creation of stack traces.
|
|
||||||
r.CheckCallViaJS(kResult0, 0);
|
|
||||||
r.CheckCallViaJS(kResult1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
void TestTrapNotCaught(byte* code, size_t code_size,
|
void TestTrapNotCaught(byte* code, size_t code_size,
|
||||||
|
@ -73,6 +73,14 @@
|
|||||||
# Enable once multi-byte prefixed opcodes are correctly handled
|
# Enable once multi-byte prefixed opcodes are correctly handled
|
||||||
'regress/wasm/regress-1065599': [SKIP],
|
'regress/wasm/regress-1065599': [SKIP],
|
||||||
|
|
||||||
|
# https://crbug.com/v8/7741
|
||||||
|
# These tests fail at the moment because we already prepared them to switch
|
||||||
|
# the wasm-bigint flag. Once we flip the flag, we can enable them again.
|
||||||
|
'wasm/ffi-error': [FAIL],
|
||||||
|
'wasm/type-reflection': [FAIL],
|
||||||
|
'wasm/globals': [FAIL],
|
||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Tests where variants make no sense.
|
# Tests where variants make no sense.
|
||||||
'd8/enable-tracing': [PASS, NO_VARIANTS],
|
'd8/enable-tracing': [PASS, NO_VARIANTS],
|
||||||
|
@ -155,27 +155,6 @@ function import_error(index, module, func, msg) {
|
|||||||
assertTraps(kTrapUnreachable, () => b.instantiate());
|
assertTraps(kTrapUnreachable, () => b.instantiate());
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function TestConversionError() {
|
|
||||||
print(arguments.callee.name);
|
|
||||||
let b = builder();
|
|
||||||
b.addImport('foo', 'bar', kSig_v_l);
|
|
||||||
let buffer = b.addFunction('run', kSig_v_v)
|
|
||||||
.addBody([kExprI64Const, 0, kExprCallFunction, 0])
|
|
||||||
.exportFunc()
|
|
||||||
.end()
|
|
||||||
.toBuffer();
|
|
||||||
assertConversionError(
|
|
||||||
buffer, {foo: {bar: (l) => {}}}, kTrapMsgs[kTrapTypeError]);
|
|
||||||
|
|
||||||
buffer = builder()
|
|
||||||
.addFunction('run', kSig_l_v)
|
|
||||||
.addBody([kExprI64Const, 0])
|
|
||||||
.exportFunc()
|
|
||||||
.end()
|
|
||||||
.toBuffer();
|
|
||||||
assertConversionError(buffer, {}, kTrapMsgs[kTrapTypeError]);
|
|
||||||
})();
|
|
||||||
|
|
||||||
(function InternalDebugTrace() {
|
(function InternalDebugTrace() {
|
||||||
print(arguments.callee.name);
|
print(arguments.callee.name);
|
||||||
var builder = new WasmModuleBuilder();
|
var builder = new WasmModuleBuilder();
|
||||||
|
@ -119,7 +119,7 @@ function checkFailingInstantiation(
|
|||||||
instance => assertEquals(33, instance.exports.main()));
|
instance => assertEquals(33, instance.exports.main()));
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function I64InSignatureThrows() {
|
(function I64InSignature() {
|
||||||
print(arguments.callee.name);
|
print(arguments.callee.name);
|
||||||
let builder = new WasmModuleBuilder();
|
let builder = new WasmModuleBuilder();
|
||||||
|
|
||||||
@ -133,12 +133,11 @@ function checkFailingInstantiation(
|
|||||||
|
|
||||||
checkSuccessfulInstantiation(
|
checkSuccessfulInstantiation(
|
||||||
builder, undefined,
|
builder, undefined,
|
||||||
instance => assertThrows(function() {
|
instance => assertEquals(
|
||||||
instance.exports.function_with_invalid_signature(33, 88);
|
instance.exports.function_with_invalid_signature(33n, 88n), -55n));
|
||||||
}, TypeError, 'wasm function signature contains illegal type'));
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function I64ParamsInSignatureThrows() {
|
(function I64ParamsInSignature() {
|
||||||
print(arguments.callee.name);
|
print(arguments.callee.name);
|
||||||
let builder = new WasmModuleBuilder();
|
let builder = new WasmModuleBuilder();
|
||||||
|
|
||||||
@ -149,13 +148,12 @@ function checkFailingInstantiation(
|
|||||||
|
|
||||||
checkSuccessfulInstantiation(
|
checkSuccessfulInstantiation(
|
||||||
builder, undefined,
|
builder, undefined,
|
||||||
instance => assertThrows(
|
instance => assertEquals(12,
|
||||||
_ => instance.exports.function_with_invalid_signature(12), TypeError,
|
instance.exports.function_with_invalid_signature(12n)));
|
||||||
'wasm function signature contains illegal type'));
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function I64JSImportThrows() {
|
(function I64JSImport() {
|
||||||
print(arguments.callee.name);
|
print(arguments.callee.name);
|
||||||
let builder = new WasmModuleBuilder();
|
let builder = new WasmModuleBuilder();
|
||||||
let sig_index = builder.addType(kSig_i_i);
|
let sig_index = builder.addType(kSig_i_i);
|
||||||
@ -169,13 +167,11 @@ function checkFailingInstantiation(
|
|||||||
|
|
||||||
checkSuccessfulInstantiation(
|
checkSuccessfulInstantiation(
|
||||||
builder, {'': {func: _ => {}}},
|
builder, {'': {func: _ => {}}},
|
||||||
instance => assertThrows(
|
instance => assertEquals(0, instance.exports.main(1)));
|
||||||
instance.exports.main, TypeError,
|
|
||||||
'wasm function signature contains illegal type'));
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function ImportI64ParamWithF64ReturnThrows() {
|
(function ImportI64ParamWithF64Return() {
|
||||||
print(arguments.callee.name);
|
print(arguments.callee.name);
|
||||||
// This tests that we generate correct code by using the correct return
|
// This tests that we generate correct code by using the correct return
|
||||||
// register. See bug 6096.
|
// register. See bug 6096.
|
||||||
@ -186,11 +182,8 @@ function checkFailingInstantiation(
|
|||||||
.exportFunc();
|
.exportFunc();
|
||||||
|
|
||||||
checkSuccessfulInstantiation(
|
checkSuccessfulInstantiation(
|
||||||
builder, {'': {f: i => i}},
|
builder, {'': {f: i => Number(i)}},
|
||||||
instance => assertThrows(
|
instance => assertDoesNotThrow(instance.exports.main));
|
||||||
instance.exports.main, TypeError,
|
|
||||||
'wasm function signature contains illegal type'));
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function ImportI64Return() {
|
(function ImportI64Return() {
|
||||||
@ -204,11 +197,8 @@ function checkFailingInstantiation(
|
|||||||
.exportFunc();
|
.exportFunc();
|
||||||
|
|
||||||
checkSuccessfulInstantiation(
|
checkSuccessfulInstantiation(
|
||||||
builder, {'': {f: _ => 1}},
|
builder, {'': {f: _ => 1n}},
|
||||||
instance => assertThrows(
|
instance => assertDoesNotThrow(instance.exports.main));
|
||||||
instance.exports.main, TypeError,
|
|
||||||
'wasm function signature contains illegal type'));
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function ImportSymbolToNumberThrows() {
|
(function ImportSymbolToNumberThrows() {
|
||||||
|
@ -119,7 +119,7 @@ TestExported(kWasmF64, 87347.66666, 87347.66666);
|
|||||||
|
|
||||||
var instance = builder.instantiate();
|
var instance = builder.instantiate();
|
||||||
assertTrue(instance.exports.foo instanceof WebAssembly.Global);
|
assertTrue(instance.exports.foo instanceof WebAssembly.Global);
|
||||||
assertThrows(() => {instance.exports.foo.value}, TypeError);
|
assertEquals(instance.exports.foo.value, 1234n);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
function TestImportedExported(type, val, expected) {
|
function TestImportedExported(type, val, expected) {
|
||||||
|
@ -943,13 +943,6 @@ assertInstantiateSuccess(
|
|||||||
assertTrue(instance instanceof Instance);
|
assertTrue(instance instanceof Instance);
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function TestPassBigIntInGlobalWhenNotEnabled() {
|
|
||||||
assertThrows(() => new WebAssembly.Global({ value: "i64" }, 1), TypeError,
|
|
||||||
/Can't set the value/);
|
|
||||||
assertThrows(() => new WebAssembly.Global({ value: "i64" }, 1n), TypeError,
|
|
||||||
/Can't set the value/);
|
|
||||||
})();
|
|
||||||
|
|
||||||
(function TestAccessorFunctions() {
|
(function TestAccessorFunctions() {
|
||||||
function testAccessorFunction(obj, prop, accessor) {
|
function testAccessorFunction(obj, prop, accessor) {
|
||||||
var desc = Object.getOwnPropertyDescriptor(obj, prop);
|
var desc = Object.getOwnPropertyDescriptor(obj, prop);
|
||||||
|
@ -549,12 +549,6 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
|
|||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function TestFunctionConstructedIncompatibleSig() {
|
|
||||||
let fun = new WebAssembly.Function({parameters:["i64"], results:[]}, _ => 0);
|
|
||||||
assertThrows(() => fun(), TypeError,
|
|
||||||
/wasm function signature contains illegal type/);
|
|
||||||
})();
|
|
||||||
|
|
||||||
(function TestFunctionTableSetAndCall() {
|
(function TestFunctionTableSetAndCall() {
|
||||||
let builder = new WasmModuleBuilder();
|
let builder = new WasmModuleBuilder();
|
||||||
let fun1 = new WebAssembly.Function({parameters:[], results:["i32"]}, _ => 7);
|
let fun1 = new WebAssembly.Function({parameters:[], results:["i32"]}, _ => 7);
|
||||||
@ -578,9 +572,9 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
|
|||||||
assertTraps(kTrapFuncSigMismatch, () => instance.exports.main(1));
|
assertTraps(kTrapFuncSigMismatch, () => instance.exports.main(1));
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function TestFunctionTableSetIncompatibleSig() {
|
(function TestFunctionTableSetI64() {
|
||||||
let builder = new WasmModuleBuilder();
|
let builder = new WasmModuleBuilder();
|
||||||
let fun = new WebAssembly.Function({parameters:[], results:["i64"]}, _ => 0);
|
let fun = new WebAssembly.Function({parameters:[], results:["i64"]}, _ => 0n);
|
||||||
let table = new WebAssembly.Table({element: "anyfunc", initial: 2});
|
let table = new WebAssembly.Table({element: "anyfunc", initial: 2});
|
||||||
let table_index = builder.addImportedTable("m", "table", 2);
|
let table_index = builder.addImportedTable("m", "table", 2);
|
||||||
let sig_index = builder.addType(kSig_l_v);
|
let sig_index = builder.addType(kSig_l_v);
|
||||||
@ -593,14 +587,10 @@ load('test/mjsunit/wasm/wasm-module-builder.js');
|
|||||||
])
|
])
|
||||||
.exportFunc();
|
.exportFunc();
|
||||||
let instance = builder.instantiate({ m: { table: table }});
|
let instance = builder.instantiate({ m: { table: table }});
|
||||||
assertThrows(
|
assertDoesNotThrow(() => instance.exports.main(0));
|
||||||
() => instance.exports.main(0), TypeError,
|
|
||||||
/wasm function signature contains illegal type/);
|
|
||||||
assertTraps(kTrapFuncSigMismatch, () => instance.exports.main(1));
|
assertTraps(kTrapFuncSigMismatch, () => instance.exports.main(1));
|
||||||
table.set(1, fun);
|
table.set(1, fun);
|
||||||
assertThrows(
|
assertDoesNotThrow(() => instance.exports.main(1));
|
||||||
() => instance.exports.main(1), TypeError,
|
|
||||||
/wasm function signature contains illegal type/);
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
(function TestFunctionModuleImportMatchingSig() {
|
(function TestFunctionModuleImportMatchingSig() {
|
||||||
|
Loading…
Reference in New Issue
Block a user