Bug 1744975 - 7. Add a TupleLength intrinsic r=jandem

This will be called by self-hosting tuple methods.

n.b. This is only necessary until https://github.com/tc39/proposal-record-tuple/issues/282 is resolved.

Depends on D134828

Differential Revision: https://phabricator.services.mozilla.com/D134832
This commit is contained in:
Tim Chevalier 2022-01-31 08:56:42 +00:00
parent 8b0f129f73
commit 34bbc5eb2b

View File

@ -151,6 +151,17 @@ bool intrinsic_ThisTupleValue(JSContext* cx, unsigned argc, Value* vp) {
args.rval().setExtendedPrimitive(*result);
return true;
}
bool intrinsic_TupleLength(JSContext* cx, unsigned argc, Value* vp) {
CallArgs args = CallArgsFromVp(argc, vp);
MOZ_ASSERT(args.length() == 1);
mozilla::Maybe<TupleType&> result = js::ThisTupleValue(cx, args[0]);
if (!result) {
return false;
}
args.rval().setNumber((*result).getDenseInitializedLength());
return true;
}
#endif
static bool intrinsic_IsObject(JSContext* cx, unsigned argc, Value* vp) {
@ -2350,6 +2361,9 @@ static const JSFunctionSpec intrinsic_functions[] = {
JS_INLINABLE_FN("ToObject", intrinsic_ToObject, 1, 0, IntrinsicToObject),
JS_FN("ToPropertyKey", intrinsic_ToPropertyKey, 1, 0),
JS_FN("ToSource", intrinsic_ToSource, 1, 0),
#ifdef ENABLE_RECORD_TUPLE
JS_FN("TupleLength", intrinsic_TupleLength, 1, 0),
#endif
JS_FN("TypedArrayBitwiseSlice", intrinsic_TypedArrayBitwiseSlice, 4, 0),
JS_FN("TypedArrayBuffer", intrinsic_TypedArrayBuffer, 1, 0),
JS_INLINABLE_FN("TypedArrayByteOffset", intrinsic_TypedArrayByteOffset, 1,