25void Builtins::Generate_CallFunction_ReceiverIsNullOrUndefined(
 
   26    MacroAssembler* masm) {
 
   30void Builtins::Generate_CallFunction_ReceiverIsNotNullOrUndefined(
 
   31    MacroAssembler* masm) {
 
   35void Builtins::Generate_CallFunction_ReceiverIsAny(MacroAssembler* masm) {
 
   39void Builtins::Generate_CallBoundFunction(MacroAssembler* masm) {
 
   43void Builtins::Generate_Call_ReceiverIsNullOrUndefined(MacroAssembler* masm) {
 
   47void Builtins::Generate_Call_ReceiverIsNotNullOrUndefined(
 
   48    MacroAssembler* masm) {
 
   52void Builtins::Generate_Call_ReceiverIsAny(MacroAssembler* masm) {
 
   56void Builtins::Generate_CallVarargs(MacroAssembler* masm) {
 
   60void Builtins::Generate_CallForwardVarargs(MacroAssembler* masm) {
 
   65void Builtins::Generate_CallFunctionForwardVarargs(MacroAssembler* masm) {
 
   70void Builtins::Generate_CallApiCallbackGeneric(MacroAssembler* masm) {
 
   74void Builtins::Generate_CallApiCallbackOptimizedNoProfiling(
 
   75    MacroAssembler* masm) {
 
   80void Builtins::Generate_CallApiCallbackOptimized(MacroAssembler* masm) {
 
   86TF_BUILTIN(Call_ReceiverIsNullOrUndefined_Baseline_Compact,
 
   89  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsNullOrUndefined, 
receiver);
 
 
   94  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
   95  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
   97  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsNullOrUndefined, argc, slot,
 
 
  101TF_BUILTIN(Call_ReceiverIsNotNullOrUndefined_Baseline_Compact,
 
  103  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsNotNullOrUndefined);
 
 
  108  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  109  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  110  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsNotNullOrUndefined, argc,
 
 
  116  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsAny);
 
 
  120  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  121  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  122  CallReceiver<Descriptor>(Builtin::kCall_ReceiverIsAny, argc, slot);
 
 
  127  auto target = Parameter<JSAny>(Descriptor::kFunction);
 
  128  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  129  auto context = Parameter<Context>(Descriptor::kContext);
 
  130  auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
 
  131  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  132  auto receiver = Parameter<JSAny>(Descriptor::kReceiver);
 
  135  TailCallBuiltin(Builtin::kCall_ReceiverIsNullOrUndefined, context, target,
 
 
  141  auto target = Parameter<JSAny>(Descriptor::kFunction);
 
  142  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  143  auto context = Parameter<Context>(Descriptor::kContext);
 
  144  auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
 
  145  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  146  auto receiver = Parameter<JSAny>(Descriptor::kReceiver);
 
  149  TailCallBuiltin(Builtin::kCall_ReceiverIsNotNullOrUndefined, context, target,
 
 
  154  auto target = Parameter<JSAny>(Descriptor::kFunction);
 
  155  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  156  auto context = Parameter<Context>(Descriptor::kContext);
 
  157  auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
 
  158  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  159  auto receiver = Parameter<JSAny>(Descriptor::kReceiver);
 
  162  TailCallBuiltin(Builtin::kCall_ReceiverIsAny, context, target, argc);
 
 
  168  Label if_done(
this), if_arguments(
this), if_array(
this),
 
  175    Label if_target_callable(
this),
 
  179           &if_target_not_callable);
 
  180    BIND(&if_target_not_callable);
 
  182      CallRuntime(Runtime::kThrowApplyNonFunction, context, target);
 
  185    BIND(&if_target_callable);
 
  188    Label if_target_constructor(
this),
 
  192           &if_target_not_constructor);
 
  193    BIND(&if_target_not_constructor);
 
  195      CallRuntime(Runtime::kThrowNotConstructor, context, target);
 
  198    BIND(&if_target_constructor);
 
  201    Label if_new_target_constructor(
this),
 
  205           &if_new_target_not_constructor);
 
  206    BIND(&if_new_target_not_constructor);
 
  211    BIND(&if_new_target_constructor);
 
  221      LoadContextElement(
native_context, Context::SLOPPY_ARGUMENTS_MAP_INDEX));
 
  224      LoadContextElement(
native_context, Context::STRICT_ARGUMENTS_MAP_INDEX));
 
  257  BIND(&if_holey_array);
 
  274    var_elements = elements;
 
  282    var_elements = 
CAST(
CallRuntime(Runtime::kCreateListFromArrayLike, context,
 
  293    Label if_not_double(
this), if_double(
this);
 
  299      Label normalize_done(
this);
 
  306      var_elements = EmptyFixedArrayConstant();
 
  307      Goto(&normalize_done);
 
  309      BIND(&normalize_done);
 
  313    Branch(IsFixedDoubleArray(elements), &if_double, &if_not_double);
 
  315    BIND(&if_not_double);
 
 
  357                         new_elements, intptr_length, intptr_length,
 
  360    TailCallBuiltin(Builtin::kCallVarargs, context, target, args_count, length,
 
  364                    args_count, length, new_elements);
 
 
  371  Label if_smiorobject(
this), if_double(
this),
 
  399    var_js_array = spread_array;
 
  400    var_elements_kind = spread_kind;
 
  410           &if_smiorobject, &if_generic);
 
  423        GetProperty(context, spread, IteratorSymbolConstant());
 
  427                         spread, iterator_fn));
 
  432    Branch(Int32LessThan(var_elements_kind.value(),
 
  434           &if_smiorobject, &if_double);
 
  436    BIND(&if_iterator_fn_not_callable);
 
  438        static_cast<int>(MessageTemplate::kSpreadIteratorSymbolNonCallable)),
 
  439    Goto(&throw_spread_error);
 
  441    BIND(&if_iterator_is_null_or_undefined);
 
  443        static_cast<int>(MessageTemplate::kNotIterableNoSymbolLoad));
 
  444    Goto(&throw_spread_error);
 
  446    BIND(&throw_spread_error);
 
  447    CallRuntime(Runtime::kThrowSpreadArgError, context, message_id.value(),
 
  452  BIND(&if_smiorobject);
 
  455        var_js_array.value(), JSArray::kLengthOffset);
 
  465                      args_count, length, elements);
 
  472        var_js_array.value(), JSArray::kLengthOffset);
 
  475                                 length, args_count, context,
 
  476                                 var_elements_kind.value());
 
 
  480template <
class Descriptor>
 
  484      std::is_same_v<Descriptor, CallTrampoline_Baseline_CompactDescriptor>,
 
  485      "Incompatible Descriptor");
 
 
  497template <
class Descriptor>
 
  505    if (maybe_receiver) {
 
  506      return *maybe_receiver;
 
  509      return args.GetReceiver();
 
  513  CollectCallFeedback(target, 
receiver, context, feedback_vector, slot);
 
 
  518  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  519  std::optional<TNode<Object>> 
new_target = std::nullopt;
 
  520  auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList);
 
  521  auto context = Parameter<Context>(Descriptor::kContext);
 
  522  CallOrConstructWithArrayLike(target, 
new_target, arguments_list, context);
 
 
  527  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  528  std::optional<TNode<Object>> 
new_target = std::nullopt;
 
  529  auto arguments_list = Parameter<Object>(Descriptor::kArgumentsList);
 
  530  auto context = Parameter<Context>(Descriptor::kContext);
 
  531  auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
 
  532  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  533  auto receiver = Parameter<JSAny>(Descriptor::kReceiver);
 
  536  CallOrConstructWithArrayLike(target, 
new_target, arguments_list, context);
 
 
  540  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  541  std::optional<TNode<Object>> 
new_target = std::nullopt;
 
  542  auto spread = Parameter<JSAny>(Descriptor::kSpread);
 
  543  auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  544  auto context = Parameter<Context>(Descriptor::kContext);
 
  545  CallOrConstructWithSpread(target, 
new_target, spread, args_count, context);
 
 
  549  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  550  std::optional<TNode<Object>> 
new_target = std::nullopt;
 
  551  auto spread = Parameter<JSAny>(Descriptor::kSpread);
 
  552  auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  553  auto context = LoadContextFromBaseline();
 
  554  auto feedback_vector = LoadFeedbackVectorFromBaseline();
 
  555  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  558      target, [=] { 
return args.GetReceiver(); }, 
context, feedback_vector,
 
  560  CallOrConstructWithSpread(target, 
new_target, spread, args_count, context);
 
 
  564  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  565  std::optional<TNode<Object>> 
new_target = std::nullopt;
 
  566  auto spread = Parameter<JSAny>(Descriptor::kSpread);
 
  567  auto args_count = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  568  auto context = Parameter<Context>(Descriptor::kContext);
 
  569  auto feedback_vector = Parameter<FeedbackVector>(Descriptor::kFeedbackVector);
 
  570  auto slot = UncheckedParameter<UintPtrT>(Descriptor::kSlot);
 
  571  auto receiver = Parameter<JSAny>(Descriptor::kReceiver);
 
  574  CallOrConstructWithSpread(target, 
new_target, spread, args_count, context);
 
 
  588  Label holder_loop(
this, &var_holder), holder_found(
this, &var_holder),
 
  599    Label template_map_loop(
this, &var_template),
 
  600        template_loop(
this, &var_template),
 
  601        template_from_closure(
this, &var_template);
 
  602    Goto(&template_map_loop);
 
  603    BIND(&template_map_loop);
 
  611                          Map::kConstructorOrBackPointerOrNativeContextOffset);
 
  627      var_template = 
CAST(constructor);
 
  634    BIND(&template_from_closure);
 
  643              var_template.value(), JSFunction::kSharedFunctionInfoOffset);
 
  645          LoadSharedFunctionInfoUntrustedFunctionData(template_shared);
 
  647      var_template = 
CAST(template_data);
 
  648      Goto(&template_loop);
 
  651    BIND(&template_loop);
 
  663          current, FunctionTemplateInfo::kRareDataOffset);
 
  664      GotoIf(IsUndefined(current_rare), &holder_next);
 
  666          current_rare, FunctionTemplateRareData::kParentTemplateOffset);
 
  667      Goto(&template_loop);
 
  684  return CAST(var_holder.value());
 
 
  725        function_template_info, FunctionTemplateInfo::kFlagOffset);
 
  727               function_template_info_flags),
 
  728           &receiver_done, &receiver_needs_access_check);
 
  730    BIND(&receiver_needs_access_check);
 
  733      Goto(&receiver_done);
 
  736    BIND(&receiver_done);
 
  756          function_template_info, FunctionTemplateInfo::kSignatureOffset);
 
  757      CSA_DCHECK(
this, Word32BinaryNot(IsUndefined(signature)));
 
  769          function_template_info, FunctionTemplateInfo::kSignatureOffset);
 
  771          IsUndefined(signature),  
 
  781      function_template_info, FunctionTemplateInfo::kCallbackDataOffset);
 
  786    Label if_continue(
this);
 
  787    GotoIfNot(IsTheHole(callback_data), &if_continue);
 
  798                      topmost_script_having_context, function_template_info);
 
  809                      function_template_info);
 
 
  816  auto context = Parameter<Context>(Descriptor::kContext);
 
  817  auto function_template_info = UncheckedParameter<FunctionTemplateInfo>(
 
  818      Descriptor::kFunctionTemplateInfo);
 
  819  auto argc = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  823  auto topmost_script_having_context =
 
  824      Parameter<Object>(Descriptor::kTopmostScriptHavingContext);
 
  825  CallFunctionTemplate(CallFunctionTemplateMode::kGeneric,
 
  826                       function_template_info, argc, context,
 
  827                       topmost_script_having_context);
 
 
  831  auto context = Parameter<Context>(Descriptor::kContext);
 
  832  auto function_template_info = UncheckedParameter<FunctionTemplateInfo>(
 
  833      Descriptor::kFunctionTemplateInfo);
 
  834  auto argc = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  838  auto topmost_script_having_context = 
context;
 
  839  CallFunctionTemplate(CallFunctionTemplateMode::kCheckAccess,
 
  840                       function_template_info, argc, context,
 
  841                       topmost_script_having_context);
 
 
  846  auto context = Parameter<Context>(Descriptor::kContext);
 
  847  auto function_template_info = UncheckedParameter<FunctionTemplateInfo>(
 
  848      Descriptor::kFunctionTemplateInfo);
 
  849  auto argc = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  853  auto topmost_script_having_context = 
context;
 
  854  CallFunctionTemplate(CallFunctionTemplateMode::kCheckCompatibleReceiver,
 
  855                       function_template_info, argc, context,
 
  856                       topmost_script_having_context);
 
 
  859TF_BUILTIN(CallFunctionTemplate_CheckAccessAndCompatibleReceiver,
 
  861  auto context = Parameter<Context>(Descriptor::kContext);
 
  862  auto function_template_info = UncheckedParameter<FunctionTemplateInfo>(
 
  863      Descriptor::kFunctionTemplateInfo);
 
  864  auto argc = UncheckedParameter<Int32T>(Descriptor::kArgumentsCount);
 
  868  auto topmost_script_having_context = 
context;
 
  869  CallFunctionTemplate(
 
  870      CallFunctionTemplateMode::kCheckAccessAndCompatibleReceiver,
 
  871      function_template_info, argc, context, topmost_script_having_context);
 
 
  875  auto target = Parameter<JSAny>(Descriptor::kTarget);
 
  876  auto new_target = Parameter<Object>(Descriptor::kNewTarget);
 
  877  auto context = Parameter<Context>(Descriptor::kContext);
 
  878  auto argc = UncheckedParameter<Int32T>(Descriptor::kActualArgumentsCount);
 
  879#ifdef V8_JS_LINKAGE_INCLUDES_DISPATCH_HANDLE 
  880  auto dispatch_handle =
 
  881      UncheckedParameter<JSDispatchHandleT>(Descriptor::kDispatchHandle);
 
  883  auto dispatch_handle = InvalidDispatchHandleConstant();
 
  886  Label if_call(
this), if_construct(
this);
 
  887  Branch(IsUndefined(
new_target), &if_call, &if_construct);
 
  892        LoadJSFunctionSharedFunctionInfo(
CAST(target));
 
  894        CAST(LoadSharedFunctionInfoUntrustedFunctionData(shared));
 
  902    TNode<Object> topmost_script_having_context = NoContextConstant();
 
  906    TailCallBuiltin(Builtin::kCallFunctionTemplate_Generic, context,
 
  907                    function_template_info, argc,
 
  908                    topmost_script_having_context);
 
  914    TailCallJSBuiltin(Builtin::kHandleApiConstruct, context, target, 
new_target,
 
  915                      argc, dispatch_handle);
 
 
#define CSA_DCHECK(csa,...)
#define TF_BUILTIN(Name, AssemblerBase)
static void Generate_CallOrConstructForwardVarargs(MacroAssembler *masm, CallOrConstructMode mode, Builtin target_builtin)
static constexpr Builtin CallFunction(ConvertReceiverMode=ConvertReceiverMode::kAny)
static void Generate_Call(MacroAssembler *masm, ConvertReceiverMode mode)
static void Generate_CallFunction(MacroAssembler *masm, ConvertReceiverMode mode)
static void Generate_CallOrConstructVarargs(MacroAssembler *masm, Builtin target_builtin)
static void Generate_CallApiCallbackImpl(MacroAssembler *masm, CallApiCallbackMode mode)
static constexpr Builtin Call(ConvertReceiverMode=ConvertReceiverMode::kAny)
static void Generate_CallBoundFunctionImpl(MacroAssembler *masm)
void CallOrConstructDoubleVarargs(TNode< JSAny > target, std::optional< TNode< Object > > new_target, TNode< FixedDoubleArray > elements, TNode< Int32T > length, TNode< Int32T > args_count, TNode< Context > context, TNode< Int32T > kind)
void CallFunctionTemplate(CallFunctionTemplateMode mode, TNode< FunctionTemplateInfo > function_template_info, TNode< Int32T > argc, TNode< Context > context, TNode< Object > maybe_incumbent_context)
TNode< JSReceiver > GetCompatibleReceiver(TNode< JSReceiver > receiver, TNode< HeapObject > signature, TNode< Context > context)
static constexpr bool IsAccessCheckRequired(CallFunctionTemplateMode mode)
void CallReceiver(Builtin id, std::optional< TNode< JSAny > >=std::nullopt)
void CallOrConstructWithArrayLike(TNode< JSAny > target, std::optional< TNode< Object > > new_target, TNode< Object > arguments_list, TNode< Context > context)
void CallOrConstructWithSpread(TNode< JSAny > target, std::optional< TNode< Object > > new_target, TNode< JSAny > spread, TNode< Int32T > args_count, TNode< Context > context)
@ kCheckCompatibleReceiver
@ kCheckAccessAndCompatibleReceiver
TNode< Context > LoadContextFromBaseline()
TNode< BoolT > IsNullOrUndefined(TNode< Object > object)
TNode< FixedArrayBase > AllocateFixedArray(ElementsKind kind, TNode< TIndex > capacity, AllocationFlags flags=AllocationFlag::kNone, std::optional< TNode< Map > > fixed_array_map=std::nullopt)
TNode< BoolT > IsConstructor(TNode< HeapObject > object)
TNode< Int32T > TruncateIntPtrToInt32(TNode< IntPtrT > value)
TNode< Smi > LoadFixedArrayBaseLength(TNode< FixedArrayBase > array)
TNode< BoolT > IsPrototypeInitialArrayPrototype(TNode< Context > context, TNode< Map > map)
TNode< BoolT > InstanceTypeEqual(TNode< Int32T > instance_type, int type)
void ThrowTypeError(TNode< Context > context, MessageTemplate message, char const *arg0=nullptr, char const *arg1=nullptr)
TNode< JSAny > GetProperty(TNode< Context > context, TNode< JSAny > receiver, Handle< Name > name)
TNode< BoolT > TaggedEqual(TNode< AnyTaggedT > a, TNode< AnyTaggedT > b)
TNode< FixedArrayBase > LoadElements(TNode< JSObject > object)
TNode< T > LoadObjectField(TNode< HeapObject > object, int offset)
TNode< BoolT > TaggedIsCallable(TNode< Object > object)
TNode< JSPrototype > LoadMapPrototype(TNode< Map > map)
TNode< BoolT > IsSetWord32(TNode< Word32T > word32)
TNode< BoolT > IsNoElementsProtectorCellInvalid()
void CopyFixedArrayElements(ElementsKind kind, TNode< FixedArrayBase > from_array, TNode< FixedArrayBase > to_array, TNode< TIndex > length, WriteBarrierMode barrier_mode=UPDATE_WRITE_BARRIER)
TNode< BoolT > IsJSGlobalProxyMap(TNode< Map > map)
TNode< BoolT > IsElementsKindLessThanOrEqual(TNode< Int32T > target_kind, ElementsKind reference_kind)
TNode< Uint32T > DecodeWord32(TNode< Word32T > word32)
TNode< Int32T > LoadElementsKind(TNode< HeapObject > object)
TNode< Int32T > LoadAndUntagToWord32ObjectField(TNode< HeapObject > object, int offset)
std::function< TNode< T >()> LazyNode
TNode< BoolT > IsElementsKindGreaterThan(TNode< Int32T > target_kind, ElementsKind reference_kind)
TNode< RawPtrT > LoadFunctionTemplateInfoJsCallbackPtr(TNode< FunctionTemplateInfo > object)
TNode< BoolT > IsJSArrayMap(TNode< Map > map)
TNode< Uint16T > LoadInstanceType(TNode< HeapObject > object)
TNode< NativeContext > LoadNativeContext(TNode< Context > context)
TNode< T > Select(TNode< BoolT > condition, const NodeGenerator< T > &true_body, const NodeGenerator< T > &false_body, BranchHint branch_hint=BranchHint::kNone)
TNode< BoolT > TaggedIsSmi(TNode< MaybeObject > a)
TNode< Int32T > LoadMapBitField(TNode< Map > map)
TNode< Map > LoadMap(TNode< HeapObject > object)
TNode< Int32T > SmiToInt32(TNode< Smi > value)
TNode< Int32T > LoadMapElementsKind(TNode< Map > map)
TNode< Object > LoadJSArgumentsObjectLength(TNode< Context > context, TNode< JSArgumentsObject > array)
TNode< BoolT > IsCallable(TNode< HeapObject > object)
TNode< BoolT > IsJSFunctionInstanceType(TNode< Int32T > instance_type)
TNode< FeedbackVector > LoadFeedbackVectorFromBaseline()
static constexpr int kMaxLength
static const int kProtectorInvalid
TNode< Int32T > Signed(TNode< Word32T > x)
TNode< IntPtrT > IntPtrConstant(intptr_t value)
TNode< UintPtrT > ChangeUint32ToWord(TNode< Word32T > value)
void GotoIfNot(TNode< IntegralT > condition, Label *false_label, GotoHint goto_hint=GotoHint::kNone)
TNode< Int32T > Word32And(TNode< Int32T > left, TNode< Int32T > right)
TNode< Smi > SmiConstant(Tagged< Smi > value)
void GotoIf(TNode< IntegralT > condition, Label *true_label, GotoHint goto_hint=GotoHint::kNone)
TNode< T > UncheckedParameter(int value)
TNode< IntPtrT > ChangeInt32ToIntPtr(TNode< Word32T > value)
void TailCallBuiltin(Builtin id, TNode< Object > context, TArgs... args)
TNode< Int32T > Int32Constant(int32_t value)
TNode< BoolT > WordNotEqual(TNode< WordT > left, TNode< WordT > right)
TNode< BoolT > Word32Equal(TNode< Word32T > left, TNode< Word32T > right)
TNode< T > CallRuntime(Runtime::FunctionId function, TNode< Object > context, TArgs... args)
TNode< T > CallBuiltin(Builtin id, TNode< Object > context, TArgs... args)
void Branch(TNode< IntegralT > condition, Label *true_label, Label *false_label, BranchHint branch_hint=BranchHint::kNone)
TNode< T > Parameter(int value, const SourceLocation &loc=SourceLocation::Current())
base::Vector< const DirectHandle< Object > > args
DirectHandle< Object > new_target
@ LAST_FAST_ELEMENTS_KIND
@ LAST_ANY_NONEXTENSIBLE_ELEMENTS_KIND
DONT_OVERRIDE DISABLE_ALLOCATION_SITES HOLEY_ELEMENTS
DONT_OVERRIDE DISABLE_ALLOCATION_SITES DISABLE_ALLOCATION_SITES HOLEY_DOUBLE_ELEMENTS
constexpr int JSParameterCount(int param_count_without_receiver)
!IsContextMap !IsContextMap native_context