From f394d6502c08b31e8a87fd90c8a30c74dd36d791 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 30 Jan 2021 01:06:36 +0000 Subject: [js] Remove unused promise selfhosting functions. These are leftovers from when promises were fully self-hosted and could cause confusion if left in place. --- js/src/vm/SelfHosting.cpp | 107 ---------------------------------------------- 1 file changed, 107 deletions(-) (limited to 'js/src/vm/SelfHosting.cpp') diff --git a/js/src/vm/SelfHosting.cpp b/js/src/vm/SelfHosting.cpp index df326a69e..9c20bbe9d 100644 --- a/js/src/vm/SelfHosting.cpp +++ b/js/src/vm/SelfHosting.cpp @@ -2156,105 +2156,6 @@ intrinsic_PromiseResolve(JSContext* cx, unsigned argc, Value* vp) return true; } -static bool -intrinsic_CreatePendingPromise(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 0); - RootedObject promise(cx, PromiseObject::createSkippingExecutor(cx)); - if (!promise) - return false; - args.rval().setObject(*promise); - return true; -} - -static bool -intrinsic_CreatePromiseResolvedWith(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 1); - RootedObject promise(cx, PromiseObject::unforgeableResolve(cx, args[0])); - if (!promise) - return false; - args.rval().setObject(*promise); - return true; -} - -static bool -intrinsic_CreatePromiseRejectedWith(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 1); - RootedObject promise(cx, PromiseObject::unforgeableReject(cx, args[0])); - if (!promise) - return false; - args.rval().setObject(*promise); - return true; -} - -static bool -intrinsic_ResolvePromise(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 2); - Rooted promise(cx, &args[0].toObject().as()); - if (!PromiseObject::resolve(cx, promise, args[1])) - return false; - args.rval().setUndefined(); - return true; -} - -static bool -intrinsic_RejectPromise(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 2); - Rooted promise(cx, &args[0].toObject().as()); - if (!PromiseObject::reject(cx, promise, args[1])) - return false; - args.rval().setUndefined(); - return true; -} - -static bool -intrinsic_CallOriginalPromiseThen(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() >= 2); - - RootedObject promise(cx, &args[0].toObject()); - Value val = args[1]; - RootedObject onResolvedObj(cx, val.isUndefined() ? nullptr : val.toObjectOrNull()); - val = args.get(2); - RootedObject onRejectedObj(cx, val.isUndefined() ? nullptr : val.toObjectOrNull()); - - RootedObject resultPromise(cx, JS::CallOriginalPromiseThen(cx, promise, onResolvedObj, - onRejectedObj)); - if (!resultPromise) - return false; - args.rval().setObject(*resultPromise); - return true; -} - -static bool -intrinsic_AddPromiseReactions(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() >= 2); - - RootedObject promise(cx, &args[0].toObject()); - Value val = args[1]; - RootedObject onResolvedObj(cx, val.isUndefined() ? nullptr : val.toObjectOrNull()); - val = args.get(2); - RootedObject onRejectedObj(cx, val.isUndefined() ? nullptr : val.toObjectOrNull()); - - bool result = JS::AddPromiseReactions(cx, promise, onResolvedObj, onRejectedObj); - if (!result) - return false; - args.rval().setUndefined(); - return true; -} - // The self-hosting global isn't initialized with the normal set of builtins. // Instead, individual C++-implemented functions that're required by // self-hosted code are defined as global functions. Accessing these @@ -2659,14 +2560,6 @@ static const JSFunctionSpec intrinsic_functions[] = { JS_FN("AddModuleNamespaceBinding", intrinsic_AddModuleNamespaceBinding, 4, 0), JS_FN("ModuleNamespaceExports", intrinsic_ModuleNamespaceExports, 1, 0), - JS_FN("CreatePendingPromise", intrinsic_CreatePendingPromise, 0, 0), - JS_FN("CreatePromiseResolvedWith", intrinsic_CreatePromiseResolvedWith, 1, 0), - JS_FN("CreatePromiseRejectedWith", intrinsic_CreatePromiseRejectedWith, 1, 0), - JS_FN("ResolvePromise", intrinsic_ResolvePromise, 2, 0), - JS_FN("RejectPromise", intrinsic_RejectPromise, 2, 0), - JS_FN("AddPromiseReactions", intrinsic_AddPromiseReactions, 3, 0), - JS_FN("CallOriginalPromiseThen", intrinsic_CallOriginalPromiseThen, 3, 0), - JS_FN("IsPromiseObject", intrinsic_IsInstanceOfBuiltin, 1, 0), JS_FN("CallPromiseMethodIfWrapped", CallNonGenericSelfhostedMethod>, 2, 0), JS_FN("PromiseResolve", intrinsic_PromiseResolve, 2, 0), -- cgit v1.2.3 From 24c40b583687e6f67ba57e6c8927515ceb5399ce Mon Sep 17 00:00:00 2001 From: meatloaf Date: Wed, 3 Feb 2021 20:53:17 -0600 Subject: Issue #1726 - Implement String.replaceAll() This also implements IsRegExp, as this demands it. Ported from https://bugzilla.mozilla.org/show_bug.cgi?id=1540021 --- js/src/vm/SelfHosting.cpp | 66 +++++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 22 deletions(-) (limited to 'js/src/vm/SelfHosting.cpp') diff --git a/js/src/vm/SelfHosting.cpp b/js/src/vm/SelfHosting.cpp index 9c20bbe9d..38785a822 100644 --- a/js/src/vm/SelfHosting.cpp +++ b/js/src/vm/SelfHosting.cpp @@ -189,6 +189,28 @@ intrinsic_IsInstanceOfBuiltin(JSContext* cx, unsigned argc, Value* vp) return true; } +template +static bool +intrinsic_IsPossiblyWrappedBuiltin(JSContext* cx, unsigned argc, Value* vp) +{ + CallArgs args = CallArgsFromVp(argc, vp); + MOZ_ASSERT(args.length() == 1); + + bool isTypeT = false; + if (args[0].isObject()) { + JSObject* obj = CheckedUnwrap(&args[0].toObject()); + if (!obj) { + JS_ReportErrorASCII(cx, "Permission denied to access object"); + return false; + } + + isTypeT = obj->is(); + } + + args.rval().setBoolean(isTypeT); + return true; +} + template static bool intrinsic_GuardToBuiltin(JSContext* cx, unsigned argc, Value* vp) @@ -1172,27 +1194,6 @@ intrinsic_IsFloat32TypedArray(JSContext* cx, unsigned argc, Value* vp) return intrinsic_IsSpecificTypedArray(cx, argc, vp, Scalar::Float32); } -static bool -intrinsic_IsPossiblyWrappedTypedArray(JSContext* cx, unsigned argc, Value* vp) -{ - CallArgs args = CallArgsFromVp(argc, vp); - MOZ_ASSERT(args.length() == 1); - - bool isTypedArray = false; - if (args[0].isObject()) { - JSObject* obj = CheckedUnwrap(&args[0].toObject()); - if (!obj) { - JS_ReportErrorASCII(cx, "Permission denied to access object"); - return false; - } - - isTypedArray = obj->is(); - } - - args.rval().setBoolean(isTypedArray); - return true; -} - static bool intrinsic_TypedArrayBuffer(JSContext* cx, unsigned argc, Value* vp) { @@ -1756,6 +1757,24 @@ intrinsic_StringReplaceString(JSContext* cx, unsigned argc, Value* vp) return true; } +static bool +intrinsic_StringReplaceAllString(JSContext * cx, unsigned argc, Value* vp) +{ + CallArgs args = CallArgsFromVp(argc, vp); + MOZ_ASSERT(args.length() == 3); + + RootedString string(cx, args[0].toString()); + RootedString pattern(cx, args[1].toString()); + RootedString replacement(cx, args[2].toString()); + JSString* result = str_replaceAll_string_raw(cx, string, pattern, replacement); + if (!result) { + return false; + } + + args.rval().setString(result); + return true; +} + bool js::intrinsic_StringSplitString(JSContext* cx, unsigned argc, Value* vp) { @@ -2401,7 +2420,7 @@ static const JSFunctionSpec intrinsic_functions[] = { JS_INLINABLE_FN("IsTypedArray", intrinsic_IsInstanceOfBuiltin, 1,0, IntrinsicIsTypedArray), - JS_INLINABLE_FN("IsPossiblyWrappedTypedArray",intrinsic_IsPossiblyWrappedTypedArray,1,0, + JS_INLINABLE_FN("IsPossiblyWrappedTypedArray",intrinsic_IsPossiblyWrappedBuiltin,1,0, IntrinsicIsPossiblyWrappedTypedArray), JS_FN("TypedArrayBuffer", intrinsic_TypedArrayBuffer, 1,0), @@ -2513,6 +2532,8 @@ static const JSFunctionSpec intrinsic_functions[] = { JS_INLINABLE_FN("IsRegExpObject", intrinsic_IsInstanceOfBuiltin, 1,0, IsRegExpObject), + JS_INLINABLE_FN("IsPossiblyWrappedRegExpObject", intrinsic_IsPossiblyWrappedBuiltin,1,0, + IntrinsicIsPossiblyWrappedRegExpObject), JS_FN("CallRegExpMethodIfWrapped", CallNonGenericSelfhostedMethod>, 2,0), JS_INLINABLE_FN("RegExpMatcher", RegExpMatcher, 4,0, @@ -2536,6 +2557,7 @@ static const JSFunctionSpec intrinsic_functions[] = { JS_FN("FlatStringSearch", FlatStringSearch, 2,0), JS_INLINABLE_FN("StringReplaceString", intrinsic_StringReplaceString, 3, 0, IntrinsicStringReplaceString), + JS_FN("StringReplaceAllString", intrinsic_StringReplaceAllString, 3, 0), JS_INLINABLE_FN("StringSplitString", intrinsic_StringSplitString, 2, 0, IntrinsicStringSplitString), JS_FN("StringSplitStringLimit", intrinsic_StringSplitStringLimit, 3, 0), -- cgit v1.2.3