Commit 33298c6d authored by Manos Koukoutos's avatar Manos Koukoutos Committed by Commit Bot

[wasm] Rename and change message for TypeError trap

This trap now used for all runtime type errors thrown when interfacing
with JS. Its name and message have been changed to reflect this.

Additional change: Remove the trap from the list of traps used
exclusively for RuntimeError (as opposed to TypeError) in
wasm-module-builder.js.

Change-Id: I517766837a60d94b562d4c0de922d52db786b635
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2488688Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70682}
parent 370f64c0
...@@ -557,7 +557,7 @@ namespace internal { ...@@ -557,7 +557,7 @@ namespace internal {
T(WasmTrapTableOutOfBounds, "table index is out of bounds") \ T(WasmTrapTableOutOfBounds, "table index is out of bounds") \
T(WasmTrapFuncSigMismatch, "function signature mismatch") \ T(WasmTrapFuncSigMismatch, "function signature mismatch") \
T(WasmTrapMultiReturnLengthMismatch, "multi-return length mismatch") \ T(WasmTrapMultiReturnLengthMismatch, "multi-return length mismatch") \
T(WasmTrapTypeError, "wasm function signature contains illegal type") \ T(WasmTrapJSTypeError, "type incompatibility when transforming from/to JS") \
T(WasmTrapDataSegmentDropped, "data segment has been dropped") \ T(WasmTrapDataSegmentDropped, "data segment has been dropped") \
T(WasmTrapElemSegmentDropped, "element segment has been dropped") \ T(WasmTrapElemSegmentDropped, "element segment has been dropped") \
T(WasmTrapBrOnExnNull, "br_on_exn on null value") \ T(WasmTrapBrOnExnNull, "br_on_exn on null value") \
......
...@@ -6226,7 +6226,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { ...@@ -6226,7 +6226,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
SetControl(type_check.if_false); SetControl(type_check.if_false);
Node* old_effect = effect(); Node* old_effect = effect();
BuildCallToRuntimeWithContext(Runtime::kWasmThrowTypeError, js_context, BuildCallToRuntimeWithContext(Runtime::kWasmThrowJSTypeError, js_context,
nullptr, 0); nullptr, 0);
SetEffectControl(type_check.EffectPhi(old_effect, effect()), SetEffectControl(type_check.EffectPhi(old_effect, effect()),
...@@ -6567,7 +6567,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { ...@@ -6567,7 +6567,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
// Throw a TypeError. Use the js_context of the calling javascript // Throw a TypeError. Use the js_context of the calling javascript
// function (passed as a parameter), such that the generated code is // function (passed as a parameter), such that the generated code is
// js_context independent. // js_context independent.
BuildCallToRuntimeWithContext(Runtime::kWasmThrowTypeError, js_context, BuildCallToRuntimeWithContext(Runtime::kWasmThrowJSTypeError, js_context,
nullptr, 0); nullptr, 0);
TerminateThrow(effect(), control()); TerminateThrow(effect(), control());
return; return;
...@@ -6670,7 +6670,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { ...@@ -6670,7 +6670,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
// ======================================================================= // =======================================================================
// === Runtime TypeError ================================================= // === Runtime TypeError =================================================
// ======================================================================= // =======================================================================
BuildCallToRuntimeWithContext(Runtime::kWasmThrowTypeError, BuildCallToRuntimeWithContext(Runtime::kWasmThrowJSTypeError,
native_context, nullptr, 0); native_context, nullptr, 0);
TerminateThrow(effect(), control()); TerminateThrow(effect(), control());
return false; return false;
...@@ -6992,7 +6992,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder { ...@@ -6992,7 +6992,7 @@ class WasmWrapperGraphBuilder : public WasmGraphBuilder {
// Throw a TypeError if the signature is incompatible with JavaScript. // Throw a TypeError if the signature is incompatible with JavaScript.
if (!wasm::IsJSCompatibleSignature(sig_, module_, enabled_features_)) { if (!wasm::IsJSCompatibleSignature(sig_, module_, enabled_features_)) {
BuildCallToRuntimeWithContext(Runtime::kWasmThrowTypeError, context, BuildCallToRuntimeWithContext(Runtime::kWasmThrowJSTypeError, context,
nullptr, 0); nullptr, 0);
TerminateThrow(effect(), control()); TerminateThrow(effect(), control());
return; return;
......
...@@ -137,7 +137,7 @@ RUNTIME_FUNCTION(Runtime_ThrowWasmStackOverflow) { ...@@ -137,7 +137,7 @@ RUNTIME_FUNCTION(Runtime_ThrowWasmStackOverflow) {
return isolate->StackOverflow(); return isolate->StackOverflow();
} }
RUNTIME_FUNCTION(Runtime_WasmThrowTypeError) { RUNTIME_FUNCTION(Runtime_WasmThrowJSTypeError) {
// This runtime function is called both from wasm and from e.g. js-to-js // This runtime function is called both from wasm and from e.g. js-to-js
// functions. Hence the "thread in wasm" flag can be either set or not. Both // functions. Hence the "thread in wasm" flag can be either set or not. Both
// is OK, since throwing will trigger unwinding anyway, which sets the flag // is OK, since throwing will trigger unwinding anyway, which sets the flag
...@@ -145,7 +145,7 @@ RUNTIME_FUNCTION(Runtime_WasmThrowTypeError) { ...@@ -145,7 +145,7 @@ RUNTIME_FUNCTION(Runtime_WasmThrowTypeError) {
HandleScope scope(isolate); HandleScope scope(isolate);
DCHECK_EQ(0, args.length()); DCHECK_EQ(0, args.length());
THROW_NEW_ERROR_RETURN_FAILURE( THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kWasmTrapTypeError)); isolate, NewTypeError(MessageTemplate::kWasmTrapJSTypeError));
} }
RUNTIME_FUNCTION(Runtime_WasmThrowCreate) { RUNTIME_FUNCTION(Runtime_WasmThrowCreate) {
......
...@@ -569,7 +569,7 @@ namespace internal { ...@@ -569,7 +569,7 @@ namespace internal {
F(WasmMemoryGrow, 2, 1) \ F(WasmMemoryGrow, 2, 1) \
F(WasmStackGuard, 0, 1) \ F(WasmStackGuard, 0, 1) \
F(WasmThrowCreate, 2, 1) \ F(WasmThrowCreate, 2, 1) \
F(WasmThrowTypeError, 0, 1) \ F(WasmThrowJSTypeError, 0, 1) \
F(WasmRefFunc, 1, 1) \ F(WasmRefFunc, 1, 1) \
F(WasmFunctionTableGet, 3, 1) \ F(WasmFunctionTableGet, 3, 1) \
F(WasmFunctionTableSet, 4, 1) \ F(WasmFunctionTableSet, 4, 1) \
......
...@@ -33,5 +33,7 @@ var fun2 = (function GenerateFun2() { ...@@ -33,5 +33,7 @@ var fun2 = (function GenerateFun2() {
})(); })();
// Both exported functions should throw, no matter how often they get wrapped. // Both exported functions should throw, no matter how often they get wrapped.
assertThrows(fun1, TypeError, /wasm function signature contains illegal type/); assertThrows(fun1, TypeError,
assertThrows(fun2, TypeError, /wasm function signature contains illegal type/); /type incompatibility when transforming from\/to JS/);
assertThrows(fun2, TypeError,
/type incompatibility when transforming from\/to JS/);
...@@ -702,12 +702,11 @@ let kTrapRemByZero = 4; ...@@ -702,12 +702,11 @@ let kTrapRemByZero = 4;
let kTrapFloatUnrepresentable = 5; let kTrapFloatUnrepresentable = 5;
let kTrapTableOutOfBounds = 6; let kTrapTableOutOfBounds = 6;
let kTrapFuncSigMismatch = 7; let kTrapFuncSigMismatch = 7;
let kTrapTypeError = 8; let kTrapUnalignedAccess = 8;
let kTrapUnalignedAccess = 9; let kTrapDataSegmentDropped = 9;
let kTrapDataSegmentDropped = 10; let kTrapElemSegmentDropped = 10;
let kTrapElemSegmentDropped = 11; let kTrapBrOnExnNull = 11;
let kTrapBrOnExnNull = 12; let kTrapRethrowNull = 12;
let kTrapRethrowNull = 13;
let kTrapMsgs = [ let kTrapMsgs = [
"unreachable", "unreachable",
...@@ -718,7 +717,6 @@ let kTrapMsgs = [ ...@@ -718,7 +717,6 @@ let kTrapMsgs = [
"float unrepresentable in integer range", "float unrepresentable in integer range",
"table index is out of bounds", "table index is out of bounds",
"function signature mismatch", "function signature mismatch",
"wasm function signature contains illegal type",
"operation does not support unaligned accesses", "operation does not support unaligned accesses",
"data segment has been dropped", "data segment has been dropped",
"element segment has been dropped", "element segment has been dropped",
......
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