2330 native_context()->set_script_context_table(*script_context_table);
2343 Builtin::kObjectGetOwnPropertyDescriptor, 2,
2346 isolate_, object_function,
"getOwnPropertyDescriptors",
2347 Builtin::kObjectGetOwnPropertyDescriptors, 1,
kDontAdapt);
2349 Builtin::kObjectGetOwnPropertyNames, 1,
kAdapt);
2351 Builtin::kObjectGetOwnPropertySymbols, 1,
kDontAdapt);
2353 Builtin::kObjectHasOwn, 2,
kAdapt);
2357 Builtin::kObjectPreventExtensions, 1,
kAdapt);
2365 Builtin::kObjectDefineProperties, 2,
kAdapt);
2368 Builtin::kObjectDefineProperty, 3,
kAdapt);
2374 Builtin::kObjectGetPrototypeOf, 1,
kAdapt);
2376 Builtin::kObjectSetPrototypeOf, 2,
kAdapt);
2379 Builtin::kObjectIsExtensible, 1,
kAdapt);
2387 Builtin::kObjectKeys, 1,
kAdapt);
2389 Builtin::kObjectEntries, 1,
kAdapt);
2393 Builtin::kObjectValues, 1,
kAdapt);
2396 Builtin::kObjectGroupBy, 2,
kAdapt);
2399 "__defineGetter__", Builtin::kObjectDefineGetter, 2,
2402 "__defineSetter__", Builtin::kObjectDefineSetter, 2,
2406 Builtin::kObjectPrototypeHasOwnProperty, 1,
kAdapt);
2408 "__lookupGetter__", Builtin::kObjectLookupGetter, 1,
2411 "__lookupSetter__", Builtin::kObjectLookupSetter, 1,
2415 Builtin::kObjectPrototypeIsPrototypeOf, 1,
kAdapt);
2418 Builtin::kObjectPrototypePropertyIsEnumerable, 1,
kDontAdapt);
2421 Builtin::kObjectPrototypeToString, 0,
kAdapt);
2425 Builtin::kObjectPrototypeValueOf, 0,
kAdapt);
2426 native_context()->set_object_value_of_function(*object_value_of);
2428 SimpleInstallGetterSetter(
2430 Builtin::kObjectPrototypeGetProto, Builtin::kObjectPrototypeSetProto);
2434 Builtin::kObjectPrototypeToLocaleString, 0,
kAdapt);
2442 InstallFunction(
isolate_, global,
"Function", JS_FUNCTION_TYPE,
2444 Builtin::kFunctionConstructor, 1,
kDontAdapt);
2446 function_fun->set_prototype_or_initial_map(*
isolate_->sloppy_function_map(),
2449 Context::FUNCTION_FUNCTION_INDEX);
2457 Builtin::kFunctionPrototypeApply, 2,
kDontAdapt);
2458 native_context()->set_function_prototype_apply(*function_prototype_apply);
2460 Builtin::kFastFunctionPrototypeBind, 1,
kDontAdapt);
2462 Builtin::kFunctionPrototypeCall, 1,
kDontAdapt);
2464 isolate_, prototype,
"toString", Builtin::kFunctionPrototypeToString, 0,
2471 "[Symbol.hasInstance]", Builtin::kFunctionPrototypeHasInstance, 1,
2478 isolate_->sloppy_function_map()->SetConstructor(*function_fun);
2479 isolate_->sloppy_function_with_name_map()->SetConstructor(*function_fun);
2480 isolate_->sloppy_function_with_readonly_prototype_map()->SetConstructor(
2482 isolate_->sloppy_function_without_prototype_map()->SetConstructor(
2485 isolate_->strict_function_map()->SetConstructor(*function_fun);
2486 isolate_->strict_function_with_name_map()->SetConstructor(*function_fun);
2487 isolate_->strict_function_with_readonly_prototype_map()->SetConstructor(
2489 isolate_->strict_function_without_prototype_map()->SetConstructor(
2492 isolate_->class_function_map()->SetConstructor(*function_fun);
2501 isolate_, global,
"Array", JS_ARRAY_TYPE, JSArray::kHeaderSize, 0,
2502 isolate_->initial_object_prototype(), Builtin::kArrayConstructor,
2518 factory->length_string(),
factory->array_length_accessor(), attribs);
2519 initial_map->AppendDescriptor(
isolate(), &d);
2523 Context::ARRAY_FUNCTION_INDEX);
2524 InstallSpeciesGetter(
isolate_, array_function);
2540 InitializeJSArrayMaps(
2544 Builtin::kArrayIsArray, 1,
kAdapt);
2551 SetConstructorInstanceType(
isolate_, array_function,
2552 JS_ARRAY_CONSTRUCTOR_TYPE);
2560 Builtin::kArrayPrototypeConcat, 1,
kDontAdapt);
2562 Builtin::kArrayPrototypeCopyWithin, 2,
kDontAdapt);
2568 Builtin::kArrayPrototypeFindIndex, 1,
kDontAdapt);
2570 Builtin::kArrayPrototypeFindLast, 1,
kDontAdapt);
2572 Builtin::kArrayPrototypeFindLastIndex, 1,
kDontAdapt);
2574 Builtin::kArrayPrototypeLastIndexOf, 1,
kDontAdapt);
2580 Builtin::kArrayPrototypeReverse, 0,
kDontAdapt);
2582 Builtin::kArrayPrototypeShift, 0,
kDontAdapt);
2584 Builtin::kArrayPrototypeUnshift, 1,
kDontAdapt);
2586 Builtin::kArrayPrototypeSlice, 2,
kDontAdapt);
2590 Builtin::kArrayPrototypeSplice, 2,
kDontAdapt);
2600 isolate_, proto,
"keys", Builtin::kArrayPrototypeKeys, 0,
kAdapt);
2604 isolate_, proto,
"entries", Builtin::kArrayPrototypeEntries, 0,
2609 isolate_, proto,
"values", Builtin::kArrayPrototypeValues, 0,
kAdapt);
2623 Builtin::kArrayPrototypeFlatMap, 1,
kDontAdapt);
2636 Builtin::kArrayPrototypeToReversed, 0,
kDontAdapt);
2638 Builtin::kArrayPrototypeToSorted, 1,
kDontAdapt);
2640 Builtin::kArrayPrototypeToSpliced, 2,
kDontAdapt);
2645 Builtin::kArrayPrototypeToLocaleString, 0,
2647 array_prototype_to_string_fun =
2649 Builtin::kArrayPrototypeToString, 0,
kDontAdapt);
2652 InstallTrueValuedProperty(
isolate_, unscopables,
"at");
2653 InstallTrueValuedProperty(
isolate_, unscopables,
"copyWithin");
2654 InstallTrueValuedProperty(
isolate_, unscopables,
"entries");
2655 InstallTrueValuedProperty(
isolate_, unscopables,
"fill");
2656 InstallTrueValuedProperty(
isolate_, unscopables,
"find");
2657 InstallTrueValuedProperty(
isolate_, unscopables,
"findIndex");
2658 InstallTrueValuedProperty(
isolate_, unscopables,
"findLast");
2659 InstallTrueValuedProperty(
isolate_, unscopables,
"findLastIndex");
2660 InstallTrueValuedProperty(
isolate_, unscopables,
"flat");
2661 InstallTrueValuedProperty(
isolate_, unscopables,
"flatMap");
2662 InstallTrueValuedProperty(
isolate_, unscopables,
"includes");
2663 InstallTrueValuedProperty(
isolate_, unscopables,
"keys");
2664 InstallTrueValuedProperty(
isolate_, unscopables,
"toReversed");
2665 InstallTrueValuedProperty(
isolate_, unscopables,
"toSorted");
2666 InstallTrueValuedProperty(
isolate_, unscopables,
"toSpliced");
2667 InstallTrueValuedProperty(
isolate_, unscopables,
"values");
2685 iterator_prototype);
2686 CHECK_NE(array_iterator_prototype->map().ptr(),
2687 isolate_->initial_object_prototype()->map().ptr());
2688 array_iterator_prototype->map()->set_instance_type(
2689 JS_ARRAY_ITERATOR_PROTOTYPE_TYPE);
2691 InstallToStringTag(
isolate_, array_iterator_prototype,
2692 factory->ArrayIterator_string());
2694 InstallFunctionWithBuiltinId(
isolate_, array_iterator_prototype,
"next",
2695 Builtin::kArrayIteratorPrototypeNext, 0,
2700 JSArrayIterator::kHeaderSize, 0, array_iterator_prototype,
2702 array_iterator_function->shared()->set_native(
false);
2705 array_iterator_function->initial_map());
2707 *array_iterator_prototype);
2712 InstallFunction(
isolate_, global,
"Number", JS_PRIMITIVE_WRAPPER_TYPE,
2713 JSPrimitiveWrapper::kHeaderSize, 0,
2714 isolate_->initial_object_prototype(),
2717 Context::NUMBER_FUNCTION_INDEX);
2731 Builtin::kNumberPrototypeToExponential, 1,
2734 Builtin::kNumberPrototypeToFixed, 1,
kDontAdapt);
2736 Builtin::kNumberPrototypeToPrecision, 1,
kDontAdapt);
2738 Builtin::kNumberPrototypeToString, 1,
kDontAdapt);
2740 Builtin::kNumberPrototypeValueOf, 0,
kAdapt);
2743 Builtin::kNumberPrototypeToLocaleString, 0,
2748 Builtin::kNumberIsFinite, 1,
kAdapt);
2750 Builtin::kNumberIsInteger, 1,
kAdapt);
2754 Builtin::kNumberIsSafeInteger, 1,
kAdapt);
2759 Builtin::kNumberParseFloat, 1,
kAdapt);
2766 isolate_, number_fun,
"parseInt", Builtin::kNumberParseInt, 2,
kAdapt);
2772 const double kMaxValue = 1.7976931348623157e+308;
2773 const double kMinValue = 5e-324;
2774 const double kEPS = 2.220446049250313e-16;
2776 InstallConstant(
isolate_, number_fun,
"MAX_VALUE",
2778 InstallConstant(
isolate_, number_fun,
"MIN_VALUE",
2781 InstallConstant(
isolate_, number_fun,
"NEGATIVE_INFINITY",
2783 InstallConstant(
isolate_, number_fun,
"POSITIVE_INFINITY",
2785 InstallConstant(
isolate_, number_fun,
"MAX_SAFE_INTEGER",
2787 InstallConstant(
isolate_, number_fun,
"MIN_SAFE_INTEGER",
2791 InstallConstant(
isolate_, global,
"Infinity",
factory->infinity_value());
2793 InstallConstant(
isolate_, global,
"undefined",
factory->undefined_value());
2798 InstallFunction(
isolate_, global,
"Boolean", JS_PRIMITIVE_WRAPPER_TYPE,
2799 JSPrimitiveWrapper::kHeaderSize, 0,
2800 isolate_->initial_object_prototype(),
2801 Builtin::kBooleanConstructor, 1,
kDontAdapt);
2803 Context::BOOLEAN_FUNCTION_INDEX);
2817 Builtin::kBooleanPrototypeToString, 0,
kAdapt);
2819 Builtin::kBooleanPrototypeValueOf, 0,
kAdapt);
2824 InstallFunction(
isolate_, global,
"String", JS_PRIMITIVE_WRAPPER_TYPE,
2825 JSPrimitiveWrapper::kHeaderSize, 0,
2826 isolate_->initial_object_prototype(),
2829 Context::STRING_FUNCTION_INDEX);
2841 factory->length_string(),
factory->string_length_accessor(), attribs);
2842 string_map->AppendDescriptor(
isolate(), &d);
2847 Builtin::kStringFromCharCode, 1,
kDontAdapt);
2851 Builtin::kStringFromCodePoint, 1,
kDontAdapt);
2870 Builtin::kStringPrototypeAnchor, 1,
kDontAdapt);
2872 Builtin::kStringPrototypeAt, 1,
kAdapt);
2874 Builtin::kStringPrototypeBig, 0,
kDontAdapt);
2876 Builtin::kStringPrototypeBlink, 0,
kDontAdapt);
2878 Builtin::kStringPrototypeBold, 0,
kDontAdapt);
2880 Builtin::kStringPrototypeCharAt, 1,
kAdapt);
2882 Builtin::kStringPrototypeCharCodeAt, 1,
kAdapt);
2884 Builtin::kStringPrototypeCodePointAt, 1,
kAdapt);
2886 Builtin::kStringPrototypeConcat, 1,
kDontAdapt);
2888 Builtin::kStringPrototypeEndsWith, 1,
kDontAdapt);
2890 Builtin::kStringPrototypeFontcolor, 1,
kDontAdapt);
2892 Builtin::kStringPrototypeFontsize, 1,
kDontAdapt);
2894 Builtin::kStringPrototypeFixed, 0,
kDontAdapt);
2896 Builtin::kStringPrototypeIncludes, 1,
kDontAdapt);
2898 Builtin::kStringPrototypeIndexOf, 1,
kDontAdapt);
2900 Builtin::kStringPrototypeIsWellFormed, 0,
kDontAdapt);
2902 Builtin::kStringPrototypeItalics, 0,
kDontAdapt);
2904 Builtin::kStringPrototypeLastIndexOf, 1,
kDontAdapt);
2906 Builtin::kStringPrototypeLink, 1,
kDontAdapt);
2907#ifdef V8_INTL_SUPPORT
2909 Builtin::kStringPrototypeLocaleCompareIntl, 1,
2913 Builtin::kStringPrototypeLocaleCompare, 1,
kAdapt);
2916 Builtin::kStringPrototypeMatch, 1,
kAdapt);
2918 Builtin::kStringPrototypeMatchAll, 1,
kAdapt);
2919#ifdef V8_INTL_SUPPORT
2921 Builtin::kStringPrototypeNormalizeIntl, 0,
2925 Builtin::kStringPrototypeNormalize, 0,
kDontAdapt);
2928 Builtin::kStringPrototypePadEnd, 1,
kDontAdapt);
2930 Builtin::kStringPrototypePadStart, 1,
kDontAdapt);
2932 Builtin::kStringPrototypeRepeat, 1,
kAdapt);
2934 Builtin::kStringPrototypeReplace, 2,
kAdapt);
2936 Builtin::kStringPrototypeReplaceAll, 2,
kAdapt);
2938 Builtin::kStringPrototypeSearch, 1,
kAdapt);
2940 Builtin::kStringPrototypeSlice, 2,
kDontAdapt);
2942 Builtin::kStringPrototypeSmall, 0,
kDontAdapt);
2944 Builtin::kStringPrototypeSplit, 2,
kDontAdapt);
2946 Builtin::kStringPrototypeStrike, 0,
kDontAdapt);
2948 Builtin::kStringPrototypeSub, 0,
kDontAdapt);
2950 Builtin::kStringPrototypeSubstr, 2,
kDontAdapt);
2952 Builtin::kStringPrototypeSubstring, 2,
kDontAdapt);
2954 Builtin::kStringPrototypeSup, 0,
kDontAdapt);
2956 Builtin::kStringPrototypeStartsWith, 1,
kDontAdapt);
2958 Builtin::kStringPrototypeToString, 0,
kAdapt);
2960 Builtin::kStringPrototypeToWellFormed, 0,
kDontAdapt);
2962 Builtin::kStringPrototypeTrim, 0,
kDontAdapt);
2966 isolate_, prototype,
"trimStart", Builtin::kStringPrototypeTrimStart, 0,
2974 Builtin::kStringPrototypeTrimEnd, 0,
kDontAdapt);
2979 Builtin::kStringPrototypeToLocaleLowerCase, 0,
2982 Builtin::kStringPrototypeToLocaleUpperCase, 0,
2984#ifdef V8_INTL_SUPPORT
2986 Builtin::kStringPrototypeToLowerCaseIntl, 0,
kAdapt);
2988 Builtin::kStringPrototypeToUpperCaseIntl, 0,
2992 Builtin::kStringPrototypeToLowerCase, 0,
kDontAdapt);
2994 Builtin::kStringPrototypeToUpperCase, 0,
kDontAdapt);
2997 Builtin::kStringPrototypeValueOf, 0,
kAdapt);
2999 InstallFunctionAtSymbol(
3011 iterator_prototype);
3012 CHECK_NE(string_iterator_prototype->map().ptr(),
3013 isolate_->initial_object_prototype()->map().ptr());
3014 string_iterator_prototype->map()->set_instance_type(
3015 JS_STRING_ITERATOR_PROTOTYPE_TYPE);
3016 InstallToStringTag(
isolate_, string_iterator_prototype,
"String Iterator");
3018 InstallFunctionWithBuiltinId(
isolate_, string_iterator_prototype,
"next",
3019 Builtin::kStringIteratorPrototypeNext, 0,
3024 JS_STRING_ITERATOR_TYPE, JSStringIterator::kHeaderSize, 0,
3025 string_iterator_prototype, Builtin::kIllegal, 0,
kDontAdapt);
3026 string_iterator_function->shared()->set_native(
false);
3028 string_iterator_function->initial_map());
3030 *string_iterator_prototype);
3035 isolate_, global,
"Symbol", JS_PRIMITIVE_WRAPPER_TYPE,
3036 JSPrimitiveWrapper::kHeaderSize, 0,
factory->the_hole_value(),
3047 InstallConstant(
isolate_, symbol_fun,
"asyncIterator",
3048 factory->async_iterator_symbol());
3049 InstallConstant(
isolate_, symbol_fun,
"hasInstance",
3050 factory->has_instance_symbol());
3051 InstallConstant(
isolate_, symbol_fun,
"isConcatSpreadable",
3052 factory->is_concat_spreadable_symbol());
3053 InstallConstant(
isolate_, symbol_fun,
"iterator",
3055 InstallConstant(
isolate_, symbol_fun,
"match",
factory->match_symbol());
3056 InstallConstant(
isolate_, symbol_fun,
"matchAll",
3058 InstallConstant(
isolate_, symbol_fun,
"replace",
factory->replace_symbol());
3059 InstallConstant(
isolate_, symbol_fun,
"search",
factory->search_symbol());
3060 InstallConstant(
isolate_, symbol_fun,
"species",
factory->species_symbol());
3061 InstallConstant(
isolate_, symbol_fun,
"split",
factory->split_symbol());
3062 InstallConstant(
isolate_, symbol_fun,
"toPrimitive",
3063 factory->to_primitive_symbol());
3064 InstallConstant(
isolate_, symbol_fun,
"toStringTag",
3065 factory->to_string_tag_symbol());
3066 InstallConstant(
isolate_, symbol_fun,
"unscopables",
3067 factory->unscopables_symbol());
3068 InstallConstant(
isolate_, symbol_fun,
"dispose",
factory->dispose_symbol());
3069 InstallConstant(
isolate_, symbol_fun,
"asyncDispose",
3070 factory->async_dispose_symbol());
3076 InstallToStringTag(
isolate_, prototype,
"Symbol");
3079 InstallFunctionWithBuiltinId(
isolate_, prototype,
"toString",
3080 Builtin::kSymbolPrototypeToString, 0,
kAdapt);
3081 InstallFunctionWithBuiltinId(
isolate_, prototype,
"valueOf",
3082 Builtin::kSymbolPrototypeValueOf, 0,
kAdapt);
3085 SimpleInstallGetter(
isolate_, prototype,
3087 Builtin::kSymbolPrototypeDescriptionGetter,
kAdapt);
3090 InstallFunctionAtSymbol(
3092 "[Symbol.toPrimitive]", Builtin::kSymbolPrototypeToPrimitive, 1,
kAdapt,
3098 isolate_, global,
"Date", JS_DATE_TYPE, JSDate::kHeaderSize, 0,
3101 Context::DATE_FUNCTION_INDEX);
3117 Builtin::kDatePrototypeToString, 0,
kDontAdapt);
3119 Builtin::kDatePrototypeToDateString, 0,
kDontAdapt);
3121 Builtin::kDatePrototypeToTimeString, 0,
kDontAdapt);
3123 Builtin::kDatePrototypeToISOString, 0,
kDontAdapt);
3125 isolate_, prototype,
"toUTCString", Builtin::kDatePrototypeToUTCString,
3130 Builtin::kDatePrototypeGetDate, 0,
kAdapt);
3132 Builtin::kDatePrototypeSetDate, 1,
kDontAdapt);
3134 Builtin::kDatePrototypeGetDay, 0,
kAdapt);
3136 Builtin::kDatePrototypeGetFullYear, 0,
kAdapt);
3138 Builtin::kDatePrototypeSetFullYear, 3,
kDontAdapt);
3140 Builtin::kDatePrototypeGetHours, 0,
kAdapt);
3142 Builtin::kDatePrototypeSetHours, 4,
kDontAdapt);
3144 Builtin::kDatePrototypeGetMilliseconds, 0,
kAdapt);
3146 Builtin::kDatePrototypeSetMilliseconds, 1,
3149 Builtin::kDatePrototypeGetMinutes, 0,
kAdapt);
3151 Builtin::kDatePrototypeSetMinutes, 3,
kDontAdapt);
3153 Builtin::kDatePrototypeGetMonth, 0,
kAdapt);
3155 Builtin::kDatePrototypeSetMonth, 2,
kDontAdapt);
3157 Builtin::kDatePrototypeGetSeconds, 0,
kAdapt);
3159 Builtin::kDatePrototypeSetSeconds, 2,
kDontAdapt);
3161 Builtin::kDatePrototypeGetTime, 0,
kAdapt);
3163 Builtin::kDatePrototypeSetTime, 1,
kDontAdapt);
3165 Builtin::kDatePrototypeGetTimezoneOffset, 0,
kAdapt);
3167 Builtin::kDatePrototypeGetUTCDate, 0,
kAdapt);
3169 Builtin::kDatePrototypeSetUTCDate, 1,
kDontAdapt);
3171 Builtin::kDatePrototypeGetUTCDay, 0,
kAdapt);
3173 Builtin::kDatePrototypeGetUTCFullYear, 0,
kAdapt);
3175 Builtin::kDatePrototypeSetUTCFullYear, 3,
kDontAdapt);
3177 Builtin::kDatePrototypeGetUTCHours, 0,
kAdapt);
3179 Builtin::kDatePrototypeSetUTCHours, 4,
kDontAdapt);
3181 Builtin::kDatePrototypeGetUTCMilliseconds, 0,
kAdapt);
3183 Builtin::kDatePrototypeSetUTCMilliseconds, 1,
3186 Builtin::kDatePrototypeGetUTCMinutes, 0,
kAdapt);
3188 Builtin::kDatePrototypeSetUTCMinutes, 3,
kDontAdapt);
3190 Builtin::kDatePrototypeGetUTCMonth, 0,
kAdapt);
3192 Builtin::kDatePrototypeSetUTCMonth, 2,
kDontAdapt);
3194 Builtin::kDatePrototypeGetUTCSeconds, 0,
kAdapt);
3196 Builtin::kDatePrototypeSetUTCSeconds, 2,
kDontAdapt);
3198 Builtin::kDatePrototypeValueOf, 0,
kAdapt);
3200 Builtin::kDatePrototypeGetYear, 0,
kAdapt);
3202 Builtin::kDatePrototypeSetYear, 1,
kDontAdapt);
3204 Builtin::kDatePrototypeToJson, 1,
kDontAdapt);
3206#ifdef V8_INTL_SUPPORT
3208 Builtin::kDatePrototypeToLocaleString, 0,
kDontAdapt);
3210 Builtin::kDatePrototypeToLocaleDateString, 0,
3213 Builtin::kDatePrototypeToLocaleTimeString, 0,
3218 Builtin::kDatePrototypeToString, 0,
kDontAdapt);
3220 Builtin::kDatePrototypeToDateString, 0,
kDontAdapt);
3222 Builtin::kDatePrototypeToTimeString, 0,
kDontAdapt);
3226 InstallFunctionAtSymbol(
3228 "[Symbol.toPrimitive]", Builtin::kDatePrototypeToPrimitive, 1,
kAdapt,
3234 isolate_, global,
"Promise", JS_PROMISE_TYPE,
3236 Builtin::kPromiseConstructor, 1,
kAdapt);
3238 Context::PROMISE_FUNCTION_INDEX);
3240 InstallSpeciesGetter(
isolate_, promise_fun);
3247 InstallFunctionWithBuiltinId(
isolate_, promise_fun,
"allSettled",
3248 Builtin::kPromiseAllSettled, 1,
kAdapt);
3255 InstallFunctionWithBuiltinId(
isolate_, promise_fun,
"race",
3256 Builtin::kPromiseRace, 1,
kAdapt);
3259 isolate_, promise_fun,
"resolve", Builtin::kPromiseResolveTrampoline, 1,
3263 InstallFunctionWithBuiltinId(
isolate_, promise_fun,
"reject",
3264 Builtin::kPromiseReject, 1,
kAdapt);
3266 std::array<DirectHandle<Name>, 3> fields{
factory->promise_string(),
3270 CreateLiteralObjectMapFromCache(
isolate_, fields);
3271 native_context()->set_promise_withresolvers_result_map(*result_map);
3272 InstallFunctionWithBuiltinId(
isolate_, promise_fun,
"withResolvers",
3273 Builtin::kPromiseWithResolvers, 0,
kAdapt);
3275 SetConstructorInstanceType(
isolate_, promise_fun,
3276 JS_PROMISE_CONSTRUCTOR_TYPE);
3286 isolate_, prototype,
"then", Builtin::kPromisePrototypeThen, 2,
kAdapt);
3291 Builtin::kPerformPromiseThenFunction, 2,
kAdapt);
3292 native_context()->set_perform_promise_then(*perform_promise_then);
3294 InstallFunctionWithBuiltinId(
isolate_, prototype,
"catch",
3295 Builtin::kPromisePrototypeCatch, 1,
kAdapt);
3297 InstallFunctionWithBuiltinId(
isolate_, prototype,
"finally",
3298 Builtin::kPromisePrototypeFinally, 1,
kAdapt);
3300 DCHECK(promise_fun->HasFastProperties());
3305 isolate_->initial_object_prototype()->map().ptr());
3306 prototype->map()->set_instance_type(JS_PROMISE_PROTOTYPE_TYPE);
3308 DCHECK(promise_fun->HasFastProperties());
3314 isolate_, global,
"RegExp", JS_REG_EXP_TYPE,
3317 Builtin::kRegExpConstructor, 2,
kAdapt);
3319 Context::REGEXP_FUNCTION_INDEX);
3330 Builtin::kRegExpPrototypeExec, 1,
kAdapt);
3333 prototype->map()->LastAdded().as_int());
3337 Builtin::kRegExpPrototypeDotAllGetter,
kAdapt);
3339 Builtin::kRegExpPrototypeFlagsGetter,
kAdapt);
3341 Builtin::kRegExpPrototypeGlobalGetter,
kAdapt);
3342 SimpleInstallGetter(
isolate(), prototype,
factory->hasIndices_string(),
3343 Builtin::kRegExpPrototypeHasIndicesGetter,
kAdapt);
3344 SimpleInstallGetter(
isolate_, prototype,
factory->ignoreCase_string(),
3345 Builtin::kRegExpPrototypeIgnoreCaseGetter,
kAdapt);
3347 Builtin::kRegExpPrototypeMultilineGetter,
kAdapt);
3349 Builtin::kRegExpPrototypeSourceGetter,
kAdapt);
3351 Builtin::kRegExpPrototypeStickyGetter,
kAdapt);
3353 Builtin::kRegExpPrototypeUnicodeGetter,
kAdapt);
3354 SimpleInstallGetter(
isolate(), prototype,
factory->unicodeSets_string(),
3355 Builtin::kRegExpPrototypeUnicodeSetsGetter,
kAdapt);
3358 Builtin::kRegExpPrototypeCompile, 2,
kAdapt);
3360 Builtin::kRegExpPrototypeToString, 0,
kDontAdapt);
3362 Builtin::kRegExpPrototypeTest, 1,
kAdapt);
3367 Builtin::kRegExpPrototypeMatch, 1,
kAdapt);
3370 prototype->map()->LastAdded().as_int());
3376 "[Symbol.matchAll]", Builtin::kRegExpPrototypeMatchAll, 1,
kAdapt);
3379 prototype->map()->LastAdded().as_int());
3385 Builtin::kRegExpPrototypeReplace, 2,
kDontAdapt);
3388 prototype->map()->LastAdded().as_int());
3394 Builtin::kRegExpPrototypeSearch, 1,
kAdapt);
3397 prototype->map()->LastAdded().as_int());
3403 Builtin::kRegExpPrototypeSplit, 2,
kDontAdapt);
3406 prototype->map()->LastAdded().as_int());
3412 isolate_->initial_object_prototype()->map().ptr());
3413 prototype_map->set_instance_type(JS_REG_EXP_PROTOTYPE_TYPE);
3423 InstallSpeciesGetter(
isolate_, regexp_fun);
3427 SimpleInstallGetterSetter(
isolate_, regexp_fun,
factory->input_string(),
3428 Builtin::kRegExpInputGetter,
3429 Builtin::kRegExpInputSetter);
3430 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"$_",
3431 Builtin::kRegExpInputGetter,
3432 Builtin::kRegExpInputSetter);
3434 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"lastMatch",
3435 Builtin::kRegExpLastMatchGetter,
3436 Builtin::kEmptyFunction1);
3437 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"$&",
3438 Builtin::kRegExpLastMatchGetter,
3439 Builtin::kEmptyFunction1);
3441 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"lastParen",
3442 Builtin::kRegExpLastParenGetter,
3443 Builtin::kEmptyFunction1);
3444 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"$+",
3445 Builtin::kRegExpLastParenGetter,
3446 Builtin::kEmptyFunction1);
3448 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"leftContext",
3449 Builtin::kRegExpLeftContextGetter,
3450 Builtin::kEmptyFunction1);
3451 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"$`",
3452 Builtin::kRegExpLeftContextGetter,
3453 Builtin::kEmptyFunction1);
3455 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"rightContext",
3456 Builtin::kRegExpRightContextGetter,
3457 Builtin::kEmptyFunction1);
3458 SimpleInstallGetterSetter(
isolate_, regexp_fun,
"$'",
3459 Builtin::kRegExpRightContextGetter,
3460 Builtin::kEmptyFunction1);
3462#define INSTALL_CAPTURE_GETTER(i) \
3463 SimpleInstallGetterSetter(isolate_, regexp_fun, "$" #i, \
3464 Builtin::kRegExpCapture##i##Getter, \
3465 Builtin::kEmptyFunction1)
3475#undef INSTALL_CAPTURE_GETTER
3477 SetConstructorInstanceType(
isolate_, regexp_fun,
3478 JS_REG_EXP_CONSTRUCTOR_TYPE);
3480 DCHECK(regexp_fun->has_initial_map());
3483 DCHECK_EQ(1, initial_map->GetInObjectProperties());
3493 initial_map->AppendDescriptor(
isolate(), &d);
3504 DCHECK(regexp_fun->HasFastProperties());
3515 iterator_prototype);
3517 InstallToStringTag(
isolate(), regexp_string_iterator_prototype,
3518 "RegExp String Iterator");
3521 Builtin::kRegExpStringIteratorPrototypeNext, 0,
3525 isolate(),
"RegExpStringIterator", JS_REG_EXP_STRING_ITERATOR_TYPE,
3526 JSRegExpStringIterator::kHeaderSize, 0,
3527 regexp_string_iterator_prototype, Builtin::kIllegal, 0,
kDontAdapt);
3528 regexp_string_iterator_function->shared()->set_native(
false);
3529 native_context()->set_initial_regexp_string_iterator_prototype_map(
3530 regexp_string_iterator_function->initial_map());
3535 Context::ERROR_FUNCTION_INDEX);
3539 Context::AGGREGATE_ERROR_FUNCTION_INDEX,
3540 Builtin::kAggregateErrorConstructor, 2);
3544 Context::EVAL_ERROR_FUNCTION_INDEX);
3548 Context::RANGE_ERROR_FUNCTION_INDEX);
3552 Context::REFERENCE_ERROR_FUNCTION_INDEX);
3556 Context::SYNTAX_ERROR_FUNCTION_INDEX);
3560 Context::TYPE_ERROR_FUNCTION_INDEX);
3564 Context::URI_ERROR_FUNCTION_INDEX);
3589 raw_json_map->AppendDescriptor(
isolate(), &d);
3591 raw_json_map->SetPrototype(
isolate(), raw_json_map,
factory->null_value());
3592 raw_json_map->SetConstructor(
native_context()->object_function());
3601 Builtin::kJsonStringify, 3,
kAdapt);
3603 Builtin::kJsonRawJson, 1,
kAdapt);
3605 Builtin::kJsonIsRawJson, 1,
kAdapt);
3606 InstallToStringTag(
isolate_, json_object,
"JSON");
3680 double const kPI = 3.1415926535897932;
3682 InstallConstant(
isolate_, math,
"LN10",
3684 InstallConstant(
isolate_, math,
"LN2",
3686 InstallConstant(
isolate_, math,
"LOG10E",
3688 InstallConstant(
isolate_, math,
"LOG2E",
3691 InstallConstant(
isolate_, math,
"SQRT1_2",
3693 InstallConstant(
isolate_, math,
"SQRT2",
3695 InstallToStringTag(
isolate_, math,
"Math");
3698#ifdef V8_INTL_SUPPORT
3707 InstallToStringTag(
isolate_, intl,
"Intl");
3710 Builtin::kIntlGetCanonicalLocales, 1,
kDontAdapt);
3713 Builtin::kIntlSupportedValuesOf, 1,
kDontAdapt);
3717 isolate_, intl,
"DateTimeFormat", JS_DATE_TIME_FORMAT_TYPE,
3718 JSDateTimeFormat::kHeaderSize, 0,
factory->the_hole_value(),
3719 Builtin::kDateTimeFormatConstructor, 0,
kDontAdapt);
3721 isolate_, date_time_format_constructor,
3722 Context::INTL_DATE_TIME_FORMAT_FUNCTION_INDEX);
3725 isolate(), date_time_format_constructor,
"supportedLocalesOf",
3726 Builtin::kDateTimeFormatSupportedLocalesOf, 1,
kDontAdapt);
3731 InstallToStringTag(
isolate_, prototype,
"Intl.DateTimeFormat");
3734 Builtin::kDateTimeFormatPrototypeResolvedOptions, 0,
3738 Builtin::kDateTimeFormatPrototypeFormatToParts, 1,
3742 Builtin::kDateTimeFormatPrototypeFormat,
kDontAdapt);
3745 Builtin::kDateTimeFormatPrototypeFormatRange, 2,
3748 Builtin::kDateTimeFormatPrototypeFormatRangeToParts,
3754 isolate_, intl,
"NumberFormat", JS_NUMBER_FORMAT_TYPE,
3755 JSNumberFormat::kHeaderSize, 0,
factory->the_hole_value(),
3756 Builtin::kNumberFormatConstructor, 0,
kDontAdapt);
3758 isolate_, number_format_constructor,
3759 Context::INTL_NUMBER_FORMAT_FUNCTION_INDEX);
3762 isolate(), number_format_constructor,
"supportedLocalesOf",
3763 Builtin::kNumberFormatSupportedLocalesOf, 1,
kDontAdapt);
3768 InstallToStringTag(
isolate_, prototype,
"Intl.NumberFormat");
3771 Builtin::kNumberFormatPrototypeResolvedOptions, 0,
3775 Builtin::kNumberFormatPrototypeFormatToParts, 1,
3778 Builtin::kNumberFormatPrototypeFormatNumber,
3782 Builtin::kNumberFormatPrototypeFormatRange, 2,
3785 Builtin::kNumberFormatPrototypeFormatRangeToParts,
3791 InstallFunction(
isolate_, intl,
"Collator", JS_COLLATOR_TYPE,
3792 JSCollator::kHeaderSize, 0,
factory->the_hole_value(),
3793 Builtin::kCollatorConstructor, 0,
kDontAdapt);
3795 Context::INTL_COLLATOR_FUNCTION_INDEX);
3798 isolate(), collator_constructor,
"supportedLocalesOf",
3799 Builtin::kCollatorSupportedLocalesOf, 1,
kDontAdapt);
3804 InstallToStringTag(
isolate_, prototype,
"Intl.Collator");
3807 Builtin::kCollatorPrototypeResolvedOptions, 0,
3811 Builtin::kCollatorPrototypeCompare,
kDontAdapt);
3816 isolate_, intl,
"v8BreakIterator", JS_V8_BREAK_ITERATOR_TYPE,
3817 JSV8BreakIterator::kHeaderSize, 0,
factory->the_hole_value(),
3818 Builtin::kV8BreakIteratorConstructor, 0,
kDontAdapt);
3821 isolate_, v8_break_iterator_constructor,
"supportedLocalesOf",
3822 Builtin::kV8BreakIteratorSupportedLocalesOf, 1,
kDontAdapt);
3830 Builtin::kV8BreakIteratorPrototypeResolvedOptions,
3834 Builtin::kV8BreakIteratorPrototypeAdoptText,
3838 Builtin::kV8BreakIteratorPrototypeFirst,
kDontAdapt);
3841 Builtin::kV8BreakIteratorPrototypeNext,
kDontAdapt);
3844 Builtin::kV8BreakIteratorPrototypeCurrent,
3848 Builtin::kV8BreakIteratorPrototypeBreakType,
3854 isolate_, intl,
"PluralRules", JS_PLURAL_RULES_TYPE,
3855 JSPluralRules::kHeaderSize, 0,
factory->the_hole_value(),
3856 Builtin::kPluralRulesConstructor, 0,
kDontAdapt);
3858 isolate_, plural_rules_constructor,
3859 Context::INTL_PLURAL_RULES_FUNCTION_INDEX);
3862 isolate(), plural_rules_constructor,
"supportedLocalesOf",
3863 Builtin::kPluralRulesSupportedLocalesOf, 1,
kDontAdapt);
3868 InstallToStringTag(
isolate_, prototype,
"Intl.PluralRules");
3871 Builtin::kPluralRulesPrototypeResolvedOptions, 0,
3875 Builtin::kPluralRulesPrototypeSelect, 1,
3879 Builtin::kPluralRulesPrototypeSelectRange, 2,
3885 isolate(), intl,
"RelativeTimeFormat", JS_RELATIVE_TIME_FORMAT_TYPE,
3886 JSRelativeTimeFormat::kHeaderSize, 0,
factory->the_hole_value(),
3887 Builtin::kRelativeTimeFormatConstructor, 0,
kDontAdapt);
3889 isolate_, relative_time_format_fun,
3890 Context::INTL_RELATIVE_TIME_FORMAT_FUNCTION_INDEX);
3893 isolate(), relative_time_format_fun,
"supportedLocalesOf",
3894 Builtin::kRelativeTimeFormatSupportedLocalesOf, 1,
kDontAdapt);
3901 InstallToStringTag(
isolate(), prototype,
"Intl.RelativeTimeFormat");
3904 isolate(), prototype,
"resolvedOptions",
3905 Builtin::kRelativeTimeFormatPrototypeResolvedOptions, 0,
kDontAdapt);
3907 Builtin::kRelativeTimeFormatPrototypeFormat, 2,
3910 Builtin::kRelativeTimeFormatPrototypeFormatToParts,
3916 isolate(), intl,
"ListFormat", JS_LIST_FORMAT_TYPE,
3917 JSListFormat::kHeaderSize, 0,
factory->the_hole_value(),
3918 Builtin::kListFormatConstructor, 0,
kDontAdapt);
3920 isolate_, list_format_fun, Context::INTL_LIST_FORMAT_FUNCTION_INDEX);
3923 Builtin::kListFormatSupportedLocalesOf, 1,
3928 Cast<JSObject>(list_format_fun->instance_prototype()), isolate());
3930 InstallToStringTag(
isolate(), prototype,
"Intl.ListFormat");
3933 Builtin::kListFormatPrototypeResolvedOptions, 0,
3936 Builtin::kListFormatPrototypeFormat, 1,
kDontAdapt);
3938 Builtin::kListFormatPrototypeFormatToParts, 1,
3944 InstallFunction(
isolate(), intl,
"Locale", JS_LOCALE_TYPE,
3945 JSLocale::kHeaderSize, 0,
factory->the_hole_value(),
3948 Context::INTL_LOCALE_FUNCTION_INDEX);
3954 InstallToStringTag(
isolate(), prototype,
"Intl.Locale");
3957 Builtin::kLocalePrototypeToString, 0,
kDontAdapt);
3959 Builtin::kLocalePrototypeMaximize, 0,
kDontAdapt);
3961 Builtin::kLocalePrototypeMinimize, 0,
kDontAdapt);
3963 SimpleInstallGetter(
isolate(), prototype,
factory->language_string(),
3964 Builtin::kLocalePrototypeLanguage,
kAdapt);
3965 SimpleInstallGetter(
isolate(), prototype,
factory->script_string(),
3966 Builtin::kLocalePrototypeScript,
kAdapt);
3967 SimpleInstallGetter(
isolate(), prototype,
factory->region_string(),
3968 Builtin::kLocalePrototypeRegion,
kAdapt);
3969 SimpleInstallGetter(
isolate(), prototype,
factory->baseName_string(),
3970 Builtin::kLocalePrototypeBaseName,
kAdapt);
3972 SimpleInstallGetter(
isolate(), prototype,
factory->calendar_string(),
3973 Builtin::kLocalePrototypeCalendar,
kAdapt);
3974 SimpleInstallGetter(
isolate(), prototype,
factory->caseFirst_string(),
3975 Builtin::kLocalePrototypeCaseFirst,
kAdapt);
3976 SimpleInstallGetter(
isolate(), prototype,
factory->collation_string(),
3977 Builtin::kLocalePrototypeCollation,
kAdapt);
3978 SimpleInstallGetter(
isolate(), prototype,
3979 factory->firstDayOfWeek_string(),
3980 Builtin::kLocalePrototypeFirstDayOfWeek,
kAdapt);
3981 SimpleInstallGetter(
isolate(), prototype,
factory->hourCycle_string(),
3982 Builtin::kLocalePrototypeHourCycle,
kAdapt);
3983 SimpleInstallGetter(
isolate(), prototype,
factory->numeric_string(),
3984 Builtin::kLocalePrototypeNumeric,
kAdapt);
3985 SimpleInstallGetter(
isolate(), prototype,
3986 factory->numberingSystem_string(),
3987 Builtin::kLocalePrototypeNumberingSystem,
kAdapt);
3989 if (!
v8_flags.harmony_remove_intl_locale_info_getters) {
3991 SimpleInstallGetter(
isolate(), prototype,
factory->calendars_string(),
3992 Builtin::kLocalePrototypeCalendars,
kAdapt);
3993 SimpleInstallGetter(
isolate(), prototype,
factory->collations_string(),
3994 Builtin::kLocalePrototypeCollations,
kAdapt);
3995 SimpleInstallGetter(
isolate(), prototype,
factory->hourCycles_string(),
3996 Builtin::kLocalePrototypeHourCycles,
kAdapt);
3997 SimpleInstallGetter(
isolate(), prototype,
3998 factory->numberingSystems_string(),
3999 Builtin::kLocalePrototypeNumberingSystems,
kAdapt);
4000 SimpleInstallGetter(
isolate(), prototype,
factory->textInfo_string(),
4001 Builtin::kLocalePrototypeTextInfo,
kAdapt);
4002 SimpleInstallGetter(
isolate(), prototype,
factory->timeZones_string(),
4003 Builtin::kLocalePrototypeTimeZones,
kAdapt);
4004 SimpleInstallGetter(
isolate(), prototype,
factory->weekInfo_string(),
4005 Builtin::kLocalePrototypeWeekInfo,
kAdapt);
4009 Builtin::kLocalePrototypeGetCalendars, 0,
4012 Builtin::kLocalePrototypeGetCollations, 0,
4015 Builtin::kLocalePrototypeGetHourCycles, 0,
4018 Builtin::kLocalePrototypeGetNumberingSystems, 0,
4021 Builtin::kLocalePrototypeGetTimeZones, 0,
4024 Builtin::kLocalePrototypeGetTextInfo, 0,
4027 Builtin::kLocalePrototypeGetWeekInfo, 0,
4033 isolate(), intl,
"DisplayNames", JS_DISPLAY_NAMES_TYPE,
4034 JSDisplayNames::kHeaderSize, 0,
factory->the_hole_value(),
4035 Builtin::kDisplayNamesConstructor, 2,
kDontAdapt);
4038 Context::INTL_DISPLAY_NAMES_FUNCTION_INDEX);
4041 Builtin::kDisplayNamesSupportedLocalesOf, 1,
4047 Cast<JSObject>(display_names_fun->instance_prototype()), isolate());
4049 InstallToStringTag(
isolate(), prototype,
"Intl.DisplayNames");
4052 Builtin::kDisplayNamesPrototypeResolvedOptions, 0,
4056 Builtin::kDisplayNamesPrototypeOf, 1,
kDontAdapt);
4062 isolate(), intl,
"Segmenter", JS_SEGMENTER_TYPE,
4063 JSSegmenter::kHeaderSize, 0,
factory->the_hole_value(),
4064 Builtin::kSegmenterConstructor, 0,
kDontAdapt);
4066 Context::INTL_SEGMENTER_FUNCTION_INDEX);
4068 Builtin::kSegmenterSupportedLocalesOf, 1,
4080 InstallToStringTag(
isolate(), prototype,
"Intl.Segmenter");
4082 Builtin::kSegmenterPrototypeResolvedOptions, 0,
4085 Builtin::kSegmenterPrototypeSegment, 1,
4096 isolate(), name_string, JS_SEGMENTS_TYPE, JSSegments::kHeaderSize,
4097 0, prototype, Builtin::kIllegal, 0,
kDontAdapt);
4098 segments_fun->shared()->set_native(
false);
4100 Builtin::kSegmentsPrototypeContaining, 1,
4102 InstallFunctionAtSymbol(
isolate_, prototype,
factory->iterator_symbol(),
4103 "[Symbol.iterator]",
4104 Builtin::kSegmentsPrototypeIterator, 0,
kAdapt,
4122 InstallToStringTag(
isolate(), prototype,
"Segmenter String Iterator");
4124 Builtin::kSegmentIteratorPrototypeNext, 0,
4131 CreateFunction(
isolate(), name_string, JS_SEGMENT_ITERATOR_TYPE,
4132 JSSegmentIterator::kHeaderSize, 0, prototype,
4134 segment_iterator_fun->shared()->set_native(
false);
4136 segment_iterator_fun->initial_map(), isolate());
4137 native_context()->set_intl_segment_iterator_map(*segment_iterator_map);
4142 constexpr int kNumProperties = 3;
4143 constexpr int kNumPropertiesWithWordlike = kNumProperties + 1;
4144 constexpr int kInstanceSize =
4145 JSObject::kHeaderSize + kNumProperties *
kTaggedSize;
4146 constexpr int kInstanceSizeWithWordlike =
4147 JSObject::kHeaderSize + kNumPropertiesWithWordlike *
kTaggedSize;
4153 JS_OBJECT_TYPE, kInstanceSizeWithWordlike,
4156 map_with_wordlike->SetConstructor(
native_context()->object_function());
4157 map->set_prototype(*
isolate_->initial_object_prototype());
4158 map_with_wordlike->set_prototype(*
isolate_->initial_object_prototype());
4161 kNumPropertiesWithWordlike);
4167 map->AppendDescriptor(
isolate_, &d);
4168 map_with_wordlike->AppendDescriptor(
isolate_, &d);
4174 map->AppendDescriptor(
isolate_, &d);
4175 map_with_wordlike->AppendDescriptor(
isolate_, &d);
4181 map->AppendDescriptor(
isolate_, &d);
4182 map_with_wordlike->AppendDescriptor(
isolate_, &d);
4189 map_with_wordlike->AppendDescriptor(
isolate_, &d);
4191 DCHECK_EQ(index, kNumPropertiesWithWordlike);
4192 DCHECK(!map->is_dictionary_map());
4193 DCHECK(!map_with_wordlike->is_dictionary_map());
4196 *map_with_wordlike);
4202 isolate(), intl,
"DurationFormat", JS_DURATION_FORMAT_TYPE,
4203 JSDurationFormat::kHeaderSize, 0,
factory->the_hole_value(),
4204 Builtin::kDurationFormatConstructor, 0,
kDontAdapt);
4206 isolate(), duration_format_fun,
4207 Context::INTL_DURATION_FORMAT_FUNCTION_INDEX);
4210 isolate(), duration_format_fun,
"supportedLocalesOf",
4211 Builtin::kDurationFormatSupportedLocalesOf, 1,
kDontAdapt);
4214 Cast<JSObject>(duration_format_fun->instance_prototype()), isolate());
4216 InstallToStringTag(
isolate(), prototype,
"Intl.DurationFormat");
4219 Builtin::kDurationFormatPrototypeResolvedOptions, 0,
4223 Builtin::kDurationFormatPrototypeFormat, 1,
4226 Builtin::kDurationFormatPrototypeFormatToParts, 1,
4238 Context::ARRAY_BUFFER_FUN_INDEX);
4239 InstallSpeciesGetter(
isolate_, array_buffer_fun);
4244 "arrayBufferConstructor_DoNotInitialize"),
4245 Builtin::kArrayBufferConstructor_DoNotInitialize, 1,
kDontAdapt);
4246 native_context()->set_array_buffer_noinit_fun(*array_buffer_noinit_fun);
4250 SimpleInstallGetter(
isolate_, array_buffer_prototype,
4251 factory->max_byte_length_string(),
4252 Builtin::kArrayBufferPrototypeGetMaxByteLength,
kAdapt);
4253 SimpleInstallGetter(
isolate_, array_buffer_prototype,
4255 Builtin::kArrayBufferPrototypeGetResizable,
kAdapt);
4257 Builtin::kArrayBufferPrototypeResize, 1,
kAdapt);
4259 Builtin::kArrayBufferPrototypeTransfer, 0,
4262 isolate_, array_buffer_prototype,
"transferToFixedLength",
4263 Builtin::kArrayBufferPrototypeTransferToFixedLength, 0,
kDontAdapt);
4264 SimpleInstallGetter(
isolate_, array_buffer_prototype,
4266 Builtin::kArrayBufferPrototypeGetDetached,
kAdapt);
4274 Context::SHARED_ARRAY_BUFFER_FUN_INDEX);
4275 InstallSpeciesGetter(
isolate_, shared_array_buffer_fun);
4280 SimpleInstallGetter(
isolate_, shared_array_buffer_prototype,
4281 factory->max_byte_length_string(),
4282 Builtin::kSharedArrayBufferPrototypeGetMaxByteLength,
4284 SimpleInstallGetter(
4286 Builtin::kSharedArrayBufferPrototypeGetGrowable,
kAdapt);
4288 Builtin::kSharedArrayBufferPrototypeGrow, 1,
kAdapt);
4296 InstallToStringTag(
isolate_, atomics_object,
"Atomics");
4299 Builtin::kAtomicsLoad, 2,
kAdapt);
4301 Builtin::kAtomicsStore, 3,
kAdapt);
4313 Builtin::kAtomicsExchange, 3,
kAdapt);
4315 Builtin::kAtomicsCompareExchange, 4,
kAdapt);
4317 Builtin::kAtomicsIsLockFree, 1,
kAdapt);
4319 Builtin::kAtomicsWait, 4,
kAdapt);
4321 Builtin::kAtomicsWaitAsync, 4,
kAdapt);
4323 Builtin::kAtomicsNotify, 3,
kAdapt);
4329 JS_TYPED_ARRAY_TYPE, JSTypedArray::kHeaderSize, 0,
4331 Builtin::kTypedArrayBaseConstructor, 0,
kAdapt);
4332 typed_array_fun->shared()->set_native(
false);
4333 InstallSpeciesGetter(
isolate_, typed_array_fun);
4343 Cast<JSObject>(typed_array_fun->instance_prototype()), isolate());
4349 Builtin::kTypedArrayPrototypeBuffer,
kDontAdapt);
4350 SimpleInstallGetter(
isolate_, prototype,
factory->byte_length_string(),
4351 Builtin::kTypedArrayPrototypeByteLength,
kAdapt);
4352 SimpleInstallGetter(
isolate_, prototype,
factory->byte_offset_string(),
4353 Builtin::kTypedArrayPrototypeByteOffset,
kAdapt);
4355 Builtin::kTypedArrayPrototypeLength,
kAdapt);
4356 SimpleInstallGetter(
isolate_, prototype,
factory->to_string_tag_symbol(),
4357 Builtin::kTypedArrayPrototypeToStringTag,
kAdapt);
4360 InstallFunctionWithBuiltinId(
isolate_, prototype,
"entries",
4361 Builtin::kTypedArrayPrototypeEntries, 0,
4364 InstallFunctionWithBuiltinId(
isolate_, prototype,
"keys",
4365 Builtin::kTypedArrayPrototypeKeys, 0,
4369 isolate_, prototype,
"values", Builtin::kTypedArrayPrototypeValues, 0,
4376 Builtin::kTypedArrayPrototypeAt, 1,
kAdapt);
4378 Builtin::kTypedArrayPrototypeCopyWithin, 2,
4381 Builtin::kTypedArrayPrototypeEvery, 1,
kDontAdapt);
4383 Builtin::kTypedArrayPrototypeFill, 1,
kDontAdapt);
4385 Builtin::kTypedArrayPrototypeFilter, 1,
kDontAdapt);
4387 Builtin::kTypedArrayPrototypeFind, 1,
kDontAdapt);
4389 Builtin::kTypedArrayPrototypeFindIndex, 1,
4392 Builtin::kTypedArrayPrototypeFindLast, 1,
kDontAdapt);
4394 Builtin::kTypedArrayPrototypeFindLastIndex, 1,
4397 Builtin::kTypedArrayPrototypeForEach, 1,
kDontAdapt);
4399 Builtin::kTypedArrayPrototypeIncludes, 1,
kDontAdapt);
4401 Builtin::kTypedArrayPrototypeIndexOf, 1,
kDontAdapt);
4403 Builtin::kTypedArrayPrototypeJoin, 1,
kDontAdapt);
4405 Builtin::kTypedArrayPrototypeLastIndexOf, 1,
4408 Builtin::kTypedArrayPrototypeMap, 1,
kDontAdapt);
4410 Builtin::kTypedArrayPrototypeReverse, 0,
kDontAdapt);
4412 Builtin::kTypedArrayPrototypeReduce, 1,
kDontAdapt);
4414 Builtin::kTypedArrayPrototypeReduceRight, 1,
4417 Builtin::kTypedArrayPrototypeSet, 1,
kDontAdapt);
4419 Builtin::kTypedArrayPrototypeSlice, 2,
kDontAdapt);
4421 Builtin::kTypedArrayPrototypeSome, 1,
kDontAdapt);
4423 Builtin::kTypedArrayPrototypeSort, 1,
kDontAdapt);
4425 Builtin::kTypedArrayPrototypeSubArray, 2,
kDontAdapt);
4427 Builtin::kTypedArrayPrototypeToReversed, 0,
4430 Builtin::kTypedArrayPrototypeToSorted, 1,
kDontAdapt);
4432 Builtin::kTypedArrayPrototypeWith, 2,
kAdapt);
4434 Builtin::kTypedArrayPrototypeToLocaleString, 0,
4437 array_prototype_to_string_fun,
DONT_ENUM);
4441#define INSTALL_TYPED_ARRAY(Type, type, TYPE, ctype) \
4443 DirectHandle<JSFunction> fun = InstallTypedArray( \
4444 #Type "Array", TYPE##_ELEMENTS, TYPE##_TYPED_ARRAY_CONSTRUCTOR_TYPE, \
4445 Context::RAB_GSAB_##TYPE##_ARRAY_MAP_INDEX); \
4446 InstallWithIntrinsicDefaultProto(isolate_, fun, \
4447 Context::TYPE##_ARRAY_FUN_INDEX); \
4450#undef INSTALL_TYPED_ARRAY
4455 isolate_, global,
"DataView", JS_DATA_VIEW_TYPE,
4456 JSDataView::kSizeWithEmbedderFields, 0,
factory->the_hole_value(),
4457 Builtin::kDataViewConstructor, 1,
kDontAdapt);
4459 Context::DATA_VIEW_FUN_INDEX);
4465 InstallToStringTag(
isolate_, prototype,
"DataView");
4470 JS_RAB_GSAB_DATA_VIEW_TYPE, JSDataView::kSizeWithEmbedderFields,
4473 rab_gsab_data_view_map->SetConstructor(*data_view_fun);
4474 native_context()->set_js_rab_gsab_data_view_map(*rab_gsab_data_view_map);
4479 Builtin::kDataViewPrototypeGetBuffer,
kDontAdapt);
4480 SimpleInstallGetter(
isolate_, prototype,
factory->byte_length_string(),
4481 Builtin::kDataViewPrototypeGetByteLength,
kDontAdapt);
4482 SimpleInstallGetter(
isolate_, prototype,
factory->byte_offset_string(),
4483 Builtin::kDataViewPrototypeGetByteOffset,
kDontAdapt);
4486 Builtin::kDataViewPrototypeGetInt8, 1,
kDontAdapt);
4488 Builtin::kDataViewPrototypeSetInt8, 2,
kDontAdapt);
4490 Builtin::kDataViewPrototypeGetUint8, 1,
kDontAdapt);
4492 Builtin::kDataViewPrototypeSetUint8, 2,
kDontAdapt);
4494 Builtin::kDataViewPrototypeGetInt16, 1,
kDontAdapt);
4496 Builtin::kDataViewPrototypeSetInt16, 2,
kDontAdapt);
4498 Builtin::kDataViewPrototypeGetUint16, 1,
kDontAdapt);
4500 Builtin::kDataViewPrototypeSetUint16, 2,
kDontAdapt);
4502 Builtin::kDataViewPrototypeGetInt32, 1,
kDontAdapt);
4504 Builtin::kDataViewPrototypeSetInt32, 2,
kDontAdapt);
4506 Builtin::kDataViewPrototypeGetUint32, 1,
kDontAdapt);
4508 Builtin::kDataViewPrototypeSetUint32, 2,
kDontAdapt);
4510 Builtin::kDataViewPrototypeGetFloat32, 1,
kDontAdapt);
4512 Builtin::kDataViewPrototypeSetFloat32, 2,
kDontAdapt);
4514 Builtin::kDataViewPrototypeGetFloat64, 1,
kDontAdapt);
4516 Builtin::kDataViewPrototypeSetFloat64, 2,
kDontAdapt);
4518 Builtin::kDataViewPrototypeGetBigInt64, 1,
4521 Builtin::kDataViewPrototypeSetBigInt64, 2,
4524 Builtin::kDataViewPrototypeGetBigUint64, 1,
4527 Builtin::kDataViewPrototypeSetBigUint64, 2,
4533 isolate_, global,
"Map", JS_MAP_TYPE, JSMap::kHeaderSize, 0,
4536 Context::JS_MAP_FUN_INDEX);
4548 isolate_, prototype,
"get", Builtin::kMapPrototypeGet, 1,
kAdapt);
4552 isolate_, prototype,
"set", Builtin::kMapPrototypeSet, 2,
kAdapt);
4555 prototype->map()->LastAdded().as_int());
4559 isolate_, prototype,
"has", Builtin::kMapPrototypeHas, 1,
kAdapt);
4563 isolate_, prototype,
"delete", Builtin::kMapPrototypeDelete, 1,
kAdapt);
4567 Builtin::kMapPrototypeClear, 0,
kAdapt);
4570 Builtin::kMapPrototypeEntries, 0,
kAdapt);
4574 Builtin::kMapPrototypeForEach, 1,
kDontAdapt);
4576 Builtin::kMapPrototypeKeys, 0,
kAdapt);
4577 SimpleInstallGetter(
isolate_, prototype,
4579 Builtin::kMapPrototypeGetSize,
kAdapt);
4581 Builtin::kMapPrototypeValues, 0,
kAdapt);
4583 native_context()->set_initial_map_prototype_map(prototype->map());
4585 InstallSpeciesGetter(
isolate_, js_map_fun);
4587 DCHECK(js_map_fun->HasFastProperties());
4594 isolate_, global,
"BigInt", JS_PRIMITIVE_WRAPPER_TYPE,
4595 JSPrimitiveWrapper::kHeaderSize, 0,
factory->the_hole_value(),
4598 Context::BIGINT_FUNCTION_INDEX);
4617 Builtin::kBigIntPrototypeToLocaleString, 0,
4621 Builtin::kBigIntPrototypeToString, 0,
kDontAdapt);
4624 Builtin::kBigIntPrototypeValueOf, 0,
kDontAdapt);
4631 isolate_, global,
"Set", JS_SET_TYPE, JSSet::kHeaderSize, 0,
4634 Context::JS_SET_FUN_INDEX);
4643 isolate_, prototype,
"has", Builtin::kSetPrototypeHas, 1,
kAdapt);
4647 isolate_, prototype,
"add", Builtin::kSetPrototypeAdd, 1,
kAdapt);
4650 prototype->map()->LastAdded().as_int());
4654 isolate_, prototype,
"delete", Builtin::kSetPrototypeDelete, 1,
kAdapt);
4658 Builtin::kSetPrototypeDifference, 1,
kAdapt);
4660 Builtin::kSetPrototypeClear, 0,
kAdapt);
4662 Builtin::kSetPrototypeEntries, 0,
kAdapt);
4664 Builtin::kSetPrototypeForEach, 1,
kDontAdapt);
4666 Builtin::kSetPrototypeIntersection, 1,
kAdapt);
4668 Builtin::kSetPrototypeIsSubsetOf, 1,
kAdapt);
4670 Builtin::kSetPrototypeIsSupersetOf, 1,
kAdapt);
4672 Builtin::kSetPrototypeIsDisjointFrom, 1,
kAdapt);
4673 SimpleInstallGetter(
isolate_, prototype,
4675 Builtin::kSetPrototypeGetSize,
kAdapt);
4677 Builtin::kSetPrototypeSymmetricDifference, 1,
kAdapt);
4679 Builtin::kSetPrototypeUnion, 1,
kAdapt);
4682 isolate_, prototype,
"values", Builtin::kSetPrototypeValues, 0,
kAdapt);
4688 native_context()->set_initial_set_prototype_map(prototype->map());
4691 InstallSpeciesGetter(
isolate_, js_set_fun);
4693 DCHECK(js_set_fun->HasFastProperties());
4697 isolate_->initial_object_prototype()->map().ptr());
4698 prototype->map()->set_instance_type(JS_SET_PROTOTYPE_TYPE);
4717 map->AppendDescriptor(
isolate(), &d);
4725 isolate(), global,
"Iterator", JS_OBJECT_TYPE, JSObject::kHeaderSize, 0,
4726 iterator_prototype, Builtin::kIteratorConstructor, 0,
kAdapt);
4729 Builtin::kIteratorFrom, 1,
kAdapt);
4731 Context::ITERATOR_FUNCTION_INDEX);
4738 iterator_prototype);
4740 factory->constructor_string(), iterator_function,
4743 Builtin::kWrapForValidIteratorPrototypeNext, 0,
4746 isolate(), wrap_for_valid_iterator_prototype,
"return",
4747 Builtin::kWrapForValidIteratorPrototypeReturn, 0,
kAdapt);
4750 JS_VALID_ITERATOR_WRAPPER_TYPE, JSValidIteratorWrapper::kHeaderSize,
4753 wrap_for_valid_iterator_prototype);
4754 valid_iterator_wrapper_map->SetConstructor(*iterator_function);
4756 *valid_iterator_wrapper_map);
4762 iterator_prototype);
4763 InstallToStringTag(
isolate(), iterator_helper_prototype,
"Iterator Helper");
4765 Builtin::kIteratorHelperPrototypeNext, 0,
kAdapt);
4767 Builtin::kIteratorHelperPrototypeReturn, 0,
kAdapt);
4769 Builtin::kIteratorPrototypeReduce, 1,
kDontAdapt);
4771 Builtin::kIteratorPrototypeToArray, 0,
kAdapt);
4773 Builtin::kIteratorPrototypeForEach, 1,
kAdapt);
4775 Builtin::kIteratorPrototypeSome, 1,
kAdapt);
4777 Builtin::kIteratorPrototypeEvery, 1,
kAdapt);
4779 Builtin::kIteratorPrototypeFind, 1,
kAdapt);
4780 SimpleInstallGetterSetter(
isolate(), iterator_prototype,
4781 factory->to_string_tag_symbol(),
4782 Builtin::kIteratorPrototypeGetToStringTag,
4783 Builtin::kIteratorPrototypeSetToStringTag);
4785 SimpleInstallGetterSetter(
isolate(), iterator_prototype,
4786 factory->constructor_string(),
4787 Builtin::kIteratorPrototypeGetConstructor,
4788 Builtin::kIteratorPrototypeSetConstructor);
4791#define INSTALL_ITERATOR_HELPER(lowercase_name, Capitalized_name, \
4792 ALL_CAPS_NAME, argc) \
4794 DirectHandle<Map> map = factory->NewContextfulMapForCurrentContext( \
4795 JS_ITERATOR_##ALL_CAPS_NAME##_HELPER_TYPE, \
4796 JSIterator##Capitalized_name##Helper::kHeaderSize, \
4797 TERMINAL_FAST_ELEMENTS_KIND, 0); \
4798 Map::SetPrototype(isolate(), map, iterator_helper_prototype); \
4799 map->SetConstructor(*iterator_function); \
4800 native_context()->set_iterator_##lowercase_name##_helper_map(*map); \
4801 SimpleInstallFunction(isolate(), iterator_prototype, #lowercase_name, \
4802 Builtin::kIteratorPrototype##Capitalized_name, argc, \
4806#define ITERATOR_HELPERS(V) \
4807 V(map, Map, MAP, 1) \
4808 V(filter, Filter, FILTER, 1) \
4809 V(take, Take, TAKE, 1) \
4810 V(drop, Drop, DROP, 1) \
4811 V(flatMap, FlatMap, FLAT_MAP, 1)
4815#undef INSTALL_ITERATOR_HELPER
4816#undef ITERATOR_HELPERS
4820 std::array<DirectHandle<Name>, 2> fields{
factory->value_string(),
4828 InstallFunction(
isolate_, global,
"WeakMap", JS_WEAK_MAP_TYPE,
4829 JSWeakMap::kHeaderSize, 0,
factory->the_hole_value(),
4830 Builtin::kWeakMapConstructor, 0,
kDontAdapt);
4832 Context::JS_WEAK_MAP_FUN_INDEX);
4840 Builtin::kWeakMapPrototypeDelete, 1,
kAdapt);
4848 isolate_, prototype,
"set", Builtin::kWeakMapPrototypeSet, 2,
kAdapt);
4851 prototype->map()->LastAdded().as_int());
4855 Builtin::kWeakMapPrototypeHas, 1,
kAdapt);
4857 InstallToStringTag(
isolate_, prototype,
"WeakMap");
4859 native_context()->set_initial_weakmap_prototype_map(prototype->map());
4864 InstallFunction(
isolate_, global,
"WeakSet", JS_WEAK_SET_TYPE,
4865 JSWeakSet::kHeaderSize, 0,
factory->the_hole_value(),
4866 Builtin::kWeakSetConstructor, 0,
kDontAdapt);
4868 Context::JS_WEAK_SET_FUN_INDEX);
4875 Builtin::kWeakSetPrototypeDelete, 1,
kAdapt);
4877 Builtin::kWeakSetPrototypeHas, 1,
kAdapt);
4880 isolate_, prototype,
"add", Builtin::kWeakSetPrototypeAdd, 1,
kAdapt);
4883 prototype->map()->LastAdded().as_int());
4887 InstallToStringTag(
isolate_, prototype,
4890 native_context()->set_initial_weakset_prototype_map(prototype->map());
4899 proxy_function_map->set_is_constructor(
true);
4903 CreateFunctionForBuiltin(
isolate(), name, proxy_function_map,
4904 Builtin::kProxyConstructor, 2,
kAdapt);
4906 isolate_->proxy_map()->SetConstructor(*proxy_function);
4911 DCHECK(!proxy_function->has_prototype_property());
4914 Builtin::kProxyRevocable, 2,
kAdapt);
4923 InstallToStringTag(
isolate_, reflect, reflect_string);
4926 Builtin::kReflectDefineProperty, 3,
kAdapt);
4929 Builtin::kReflectDeleteProperty, 2,
kAdapt);
4943 Builtin::kReflectGetOwnPropertyDescriptor, 2,
kAdapt);
4945 Builtin::kReflectGetPrototypeOf, 1,
kAdapt);
4949 Builtin::kReflectIsExtensible, 1,
kAdapt);
4951 Builtin::kReflectOwnKeys, 1,
kAdapt);
4953 Builtin::kReflectPreventExtensions, 1,
kAdapt);
4957 Builtin::kReflectSetPrototypeOf, 2,
kAdapt);
4962 JS_BOUND_FUNCTION_TYPE, JSBoundFunction::kHeaderSize,
4965 map->set_is_callable(
true);
4977 factory->length_string(),
factory->bound_function_length_accessor(),
4979 map->AppendDescriptor(
isolate(), &d);
4989 map->AppendDescriptor(
isolate(), &d);
4991 native_context()->set_bound_function_without_constructor_map(*map);
4994 map->set_is_constructor(
true);
5001 JS_FINALIZATION_REGISTRY_TYPE, JSFinalizationRegistry::kHeaderSize, 0,
5002 factory->the_hole_value(), Builtin::kFinalizationRegistryConstructor, 1,
5005 isolate_, finalization_registry_fun,
5006 Context::JS_FINALIZATION_REGISTRY_FUNCTION_INDEX);
5012 InstallToStringTag(
isolate_, finalization_registry_prototype,
5013 factory->FinalizationRegistry_string());
5016 Builtin::kFinalizationRegistryRegister, 2,
5020 isolate_, finalization_registry_prototype,
"unregister",
5021 Builtin::kFinalizationRegistryUnregister, 1,
kDontAdapt);
5026 InstallFunction(
isolate_, global,
"WeakRef", JS_WEAK_REF_TYPE,
5027 JSWeakRef::kHeaderSize, 0,
factory->the_hole_value(),
5028 Builtin::kWeakRefConstructor, 1,
kDontAdapt);
5030 Context::JS_WEAK_REF_FUNCTION_INDEX);
5035 InstallToStringTag(
isolate_, weak_ref_prototype,
factory->WeakRef_string());
5038 Builtin::kWeakRefDeref, 0,
kAdapt);
5044 isolate(), arguments_string, Builtin::kIllegal,
5045 isolate()->initial_object_prototype(), JS_ARGUMENTS_OBJECT_TYPE,
5057 map->AppendDescriptor(
isolate(), &d);
5064 map->AppendDescriptor(
isolate(), &d);
5070 DCHECK(!map->is_dictionary_map());
5078 DCHECK_EQ(2, map->GetInObjectProperties());
5083 DCHECK_EQ(2, map->GetInObjectProperties());
5097 callee->set_getter(*poison);
5098 callee->set_setter(*poison);
5102 JS_ARGUMENTS_OBJECT_TYPE, JSStrictArgumentsObject::kSize,
5112 map->AppendDescriptor(
isolate(), &d);
5116 callee, attributes);
5117 map->AppendDescriptor(
isolate(), &d);
5122 *
isolate_->initial_object_prototype());
5126 map->SetConstructor(
5131 DCHECK(!map->is_dictionary_map());
5139 JSObject::kHeaderSize, 0,
factory->the_hole_value(), Builtin::kIllegal,
5141 native_context()->set_context_extension_function(*context_extension_fun);
5148 Builtin::kHandleApiCallAsFunctionDelegate, 0,
kDontAdapt);
5156 Builtin::kHandleApiCallAsConstructorDelegate, 0,
kDontAdapt);