зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1266781: Add new traps; r=luke
MozReview-Commit-ID: FixlUGoHUdR --HG-- extra : rebase_source : 6e02eef4f97bf64b8b2d06e6a97ffe23bc6608ed
This commit is contained in:
Родитель
f13688180e
Коммит
933f7f7289
|
@ -903,6 +903,10 @@ wasm::GenerateJumpTarget(MacroAssembler& masm, JumpTarget target)
|
|||
return GenerateErrorStub(masm, SymbolicAddress::BadIndirectCall);
|
||||
case JumpTarget::UnreachableTrap:
|
||||
return GenerateErrorStub(masm, SymbolicAddress::UnreachableTrap);
|
||||
case JumpTarget::InvalidConversionToIntegerTrap:
|
||||
return GenerateErrorStub(masm, SymbolicAddress::InvalidConversionToIntegerTrap);
|
||||
case JumpTarget::IntegerOverflowTrap:
|
||||
return GenerateErrorStub(masm, SymbolicAddress::IntegerOverflowTrap);
|
||||
case JumpTarget::Throw:
|
||||
return GenerateThrow(masm);
|
||||
case JumpTarget::Limit:
|
||||
|
|
|
@ -86,6 +86,20 @@ UnreachableTrap()
|
|||
JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_WASM_UNREACHABLE);
|
||||
}
|
||||
|
||||
static void
|
||||
IntegerOverflowTrap()
|
||||
{
|
||||
JSContext* cx = JSRuntime::innermostWasmActivation()->cx();
|
||||
JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_WASM_INTEGER_OVERFLOW);
|
||||
}
|
||||
|
||||
static void
|
||||
InvalidConversionToIntegerTrap()
|
||||
{
|
||||
JSContext* cx = JSRuntime::innermostWasmActivation()->cx();
|
||||
JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_WASM_INVALID_CONVERSION);
|
||||
}
|
||||
|
||||
static int32_t
|
||||
CoerceInPlace_ToInt32(MutableHandleValue val)
|
||||
{
|
||||
|
@ -238,6 +252,10 @@ wasm::AddressOf(SymbolicAddress imm, ExclusiveContext* cx)
|
|||
return FuncCast(BadIndirectCall, Args_General0);
|
||||
case SymbolicAddress::UnreachableTrap:
|
||||
return FuncCast(UnreachableTrap, Args_General0);
|
||||
case SymbolicAddress::IntegerOverflowTrap:
|
||||
return FuncCast(IntegerOverflowTrap, Args_General0);
|
||||
case SymbolicAddress::InvalidConversionToIntegerTrap:
|
||||
return FuncCast(InvalidConversionToIntegerTrap, Args_General0);
|
||||
case SymbolicAddress::HandleExecutionInterrupt:
|
||||
return FuncCast(WasmHandleExecutionInterrupt, Args_General0);
|
||||
case SymbolicAddress::InvokeImport_Void:
|
||||
|
|
|
@ -614,6 +614,8 @@ enum class SymbolicAddress
|
|||
OnImpreciseConversion,
|
||||
BadIndirectCall,
|
||||
UnreachableTrap,
|
||||
IntegerOverflowTrap,
|
||||
InvalidConversionToIntegerTrap,
|
||||
HandleExecutionInterrupt,
|
||||
InvokeImport_Void,
|
||||
InvokeImport_I32,
|
||||
|
@ -643,6 +645,8 @@ enum class JumpTarget
|
|||
ConversionError,
|
||||
BadIndirectCall,
|
||||
UnreachableTrap,
|
||||
IntegerOverflowTrap,
|
||||
InvalidConversionToIntegerTrap,
|
||||
Throw,
|
||||
Limit
|
||||
};
|
||||
|
|
|
@ -350,6 +350,8 @@ MSG_DEF(JSMSG_WASM_BAD_IND_CALL, 0, JSEXN_ERR, "wasm indirect call sig
|
|||
MSG_DEF(JSMSG_WASM_BAD_BUF_ARG, 0, JSEXN_TYPEERR, "first argument must be a typed array")
|
||||
MSG_DEF(JSMSG_WASM_BAD_IMPORT_ARG, 0, JSEXN_TYPEERR, "second argument, if present, must be an object")
|
||||
MSG_DEF(JSMSG_WASM_UNREACHABLE, 0, JSEXN_ERR, "reached unreachable trap")
|
||||
MSG_DEF(JSMSG_WASM_INTEGER_OVERFLOW, 0, JSEXN_ERR, "integer overflow")
|
||||
MSG_DEF(JSMSG_WASM_INVALID_CONVERSION, 0, JSEXN_ERR, "invalid conversion to integer")
|
||||
|
||||
// Proxy
|
||||
MSG_DEF(JSMSG_BAD_TRAP_RETURN_VALUE, 2, JSEXN_TYPEERR,"trap {1} for {0} returned a primitive value")
|
||||
|
|
Загрузка…
Ссылка в новой задаче