Bug 1343481 - Part 6: Add native functions wrapper for GetInternalError and GetTypeError.

Tag #1287
This commit is contained in:
Gaming4JC 2019-12-13 20:55:05 -05:00 committed by Roy Tam
commit 2bbebc6ebc
3 changed files with 24 additions and 4 deletions

View file

@ -11,11 +11,11 @@
#include "mozilla/TimeStamp.h"
#include "jscntxt.h"
#include "jsexn.h"
#include "gc/Heap.h"
#include "js/Debug.h"
#include "vm/AsyncFunction.h"
#include "vm/SelfHosting.h"
#include "jsobjinlines.h"
@ -783,9 +783,7 @@ RejectMaybeWrappedPromise(JSContext *cx, HandleObject promiseObj, HandleValue re
// interpreter frame active right now. If a thenable job with a
// throwing `then` function got us here, that'll not be the case,
// so we add one by throwing the error from self-hosted code.
FixedInvokeArgs<1> getErrorArgs(cx);
getErrorArgs[0].set(Int32Value(JSMSG_PROMISE_ERROR_IN_WRAPPED_REJECTION_REASON));
if (!CallSelfHostedFunction(cx, "GetInternalError", reason, getErrorArgs, &reason))
if (!GetInternalError(cx, JSMSG_PROMISE_ERROR_IN_WRAPPED_REJECTION_REASON, &reason))
return false;
}
}

View file

@ -32,6 +32,7 @@
#include "vm/ErrorObject.h"
#include "vm/GlobalObject.h"
#include "vm/SavedStacks.h"
#include "vm/SelfHosting.h"
#include "vm/StringBuffer.h"
#include "jsobjinlines.h"
@ -1091,3 +1092,19 @@ js::ValueToSourceForError(JSContext* cx, HandleValue val, JSAutoByteString& byte
return "<<error converting value to string>>";
return bytes.encodeLatin1(cx, str);
}
bool
js::GetInternalError(JSContext* cx, unsigned errorNumber, MutableHandleValue error)
{
FixedInvokeArgs<1> args(cx);
args[0].set(Int32Value(errorNumber));
return CallSelfHostedFunction(cx, "GetInternalError", NullHandleValue, args, error);
}
bool
js::GetTypeError(JSContext* cx, unsigned errorNumber, MutableHandleValue error)
{
FixedInvokeArgs<1> args(cx);
args[0].set(Int32Value(errorNumber));
return CallSelfHostedFunction(cx, "GetTypeError", NullHandleValue, args, error);
}

View file

@ -131,6 +131,11 @@ class AutoAssertNoPendingException
extern const char*
ValueToSourceForError(JSContext* cx, HandleValue val, JSAutoByteString& bytes);
bool
GetInternalError(JSContext* cx, unsigned errorNumber, MutableHandleValue error);
bool
GetTypeError(JSContext* cx, unsigned errorNumber, MutableHandleValue error);
} // namespace js
#endif /* jsexn_h */