24#if V8_ENABLE_WEBASSEMBLY
32static MaybeDirectHandle<SharedFunctionInfo> GetFunctionInfo(
33 Isolate* isolate, Handle<String> source,
REPLMode repl_mode) {
34 ScriptDetails script_details(isolate->factory()->empty_string(),
35 ScriptOriginOptions(
true,
true));
36 script_details.repl_mode = repl_mode;
37 ScriptCompiler::CompilationDetails compilation_details;
49 if (!GetFunctionInfo(isolate, source, repl_mode).ToHandle(&shared_info)) {
64 isolate->debug()->StartSideEffectCheckMode();
68 Cast<Script>(function->shared()->script())->host_defined_options(),
73 host_defined_options);
75 isolate->debug()->StopSideEffectCheckMode();
82 int inlined_jsframe_index,
84 bool throw_on_side_effect) {
90#if V8_ENABLE_WEBASSEMBLY
92#if V8_ENABLE_DRUMBRAKE
94 if (it.is_wasm_interpreter_entry())
return {};
96 WasmFrame* frame = WasmFrame::cast(it.frame());
98 isolate->native_context()->empty_function()->shared(), isolate);
103 isolate->native_context(), scope_info, context_extension);
104 return Evaluate(isolate, outer_info, context, context_extension, source,
105 throw_on_side_effect);
109 CHECK(it.is_javascript());
117 ContextBuilder context_builder(isolate, frame, inlined_jsframe_index);
118 if (isolate->has_exception())
return {};
124 throw_on_side_effect);
133 Factory* factory = isolate->factory();
138 Cast<Context>(it.frame()->context())->native_context(), isolate);
144 materialized, arguments_str,
150 DCHECK_EQ(it.frame()->IsConstructor(), IsTheHole(*this_value, isolate));
151 if (!IsTheHole(*this_value, isolate)) {
161 scope_info->SetIsDebugEvaluateScope();
167 const bool throw_on_side_effect =
false;
170 throw_on_side_effect);
188 bool success =
false;
189 if (throw_on_side_effect) isolate->debug()->StartSideEffectCheckMode();
191 if (throw_on_side_effect) isolate->debug()->StopSideEffectCheckMode();
192 if (!success)
DCHECK(isolate->has_exception());
203 int inlined_jsframe_index)
205 frame_inspector_(frame, inlined_jsframe_index, isolate),
206 scope_iterator_(isolate, &frame_inspector_,
211 Factory* factory = isolate->factory();
256 scope_info->SetIsDebugEvaluateScope();
260 const bool paused_scope_is_script_scope =
262 if (rit ==
context_chain_.rbegin() && !paused_scope_is_script_scope) {
272 CHECK(IsStringSet(*block_list));
284 scope_iterator_.Restart();
286 if (!element.materialized_object.is_null()) {
293 for (
int i = 0;
i < keys->
length();
i++) {
294 DCHECK(IsString(keys->get(
i)));
298 scope_iterator_.SetVariableValue(
key, value);
301 scope_iterator_.Next();
308#define INTRINSIC_ALLOWLIST(V) \
310 V(NumberToStringSlow) \
322 V(LoadLookupSlotForCall) \
323 V(GetPrivateMember) \
326 V(ArraySpeciesConstructor) \
327 V(HasFastPackedElements) \
329 V(NormalizeElements) \
330 V(TypedArrayGetBuffer) \
334 V(ThrowCalledNonCallable) \
335 V(ThrowInvalidStringLength) \
336 V(ThrowIteratorError) \
337 V(ThrowIteratorResultNotAnObject) \
338 V(ThrowPatternAssignmentNonCoercible) \
339 V(ThrowReferenceError) \
340 V(ThrowSymbolIteratorInvalid) \
342 V(StringReplaceOneCharWithString) \
346 V(BigIntEqualToBigInt) \
349 V(CreateArrayLiteral) \
350 V(CreateObjectLiteral) \
351 V(CreateRegExpLiteral) \
354 V(AllocateInYoungGeneration) \
355 V(AllocateInOldGeneration) \
356 V(ArrayIncludes_Slow) \
364 V(ObjectEntriesSkipFastPath) \
365 V(ObjectHasOwnProperty) \
368 V(ObjectValuesSkipFastPath) \
369 V(ObjectGetOwnPropertyNames) \
370 V(ObjectGetOwnPropertyNamesTryFast) \
371 V(ObjectIsExtensible) \
372 V(RegExpInitializeAndCompile) \
374 V(HandleNoHeapWritesInterrupts) \
376 V(StringCharCodeAt) \
378 V(StringParseFloat) \
380 V(SymbolDescriptiveString) \
384 V(TransitionElementsKind) \
387 V(CompleteInobjectSlackTrackingForMap) \
388 V(HasInPrototypeChain) \
389 V(IncrementUseCounter) \
394 V(AsyncFunctionEnter) \
395 V(AsyncFunctionResolve) \
397 V(GetOptimizationStatus) \
398 V(OptimizeFunctionOnNextCall) \
402#define INLINE_INTRINSIC_ALLOWLIST(V) \
403 V(AsyncFunctionEnter) \
404 V(AsyncFunctionResolve)
406#define CASE(Name) case Runtime::k##Name:
407#define INLINE_CASE(Name) case Runtime::kInline##Name:
413 if (
v8_flags.trace_side_effect_free_debug_evaluate) {
414 PrintF(
"[debug-evaluate] intrinsic %s may cause side effect.\n",
422#undef INTRINSIC_ALLOWLIST
423#undef INLINE_INTRINSIC_ALLOWLIST
431 if (Bytecodes::IsWithoutExternalSideEffects(bytecode))
return true;
432 if (Bytecodes::IsCallOrConstruct(bytecode))
return true;
433 if (Bytecodes::IsJumpIfToBoolean(bytecode))
return true;
434 if (Bytecodes::IsPrefixScalingBytecode(bytecode))
return true;
438 case Bytecode::kLdaLookupSlot:
439 case Bytecode::kLdaGlobal:
440 case Bytecode::kGetNamedProperty:
441 case Bytecode::kGetKeyedProperty:
442 case Bytecode::kLdaGlobalInsideTypeof:
443 case Bytecode::kLdaLookupSlotInsideTypeof:
444 case Bytecode::kGetIterator:
447 case Bytecode::kAddSmi:
449 case Bytecode::kSubSmi:
451 case Bytecode::kMulSmi:
453 case Bytecode::kDivSmi:
455 case Bytecode::kModSmi:
457 case Bytecode::kExpSmi:
458 case Bytecode::kNegate:
459 case Bytecode::kBitwiseAnd:
460 case Bytecode::kBitwiseAndSmi:
461 case Bytecode::kBitwiseNot:
462 case Bytecode::kBitwiseOr:
463 case Bytecode::kBitwiseOrSmi:
464 case Bytecode::kBitwiseXor:
465 case Bytecode::kBitwiseXorSmi:
466 case Bytecode::kShiftLeft:
467 case Bytecode::kShiftLeftSmi:
468 case Bytecode::kShiftRight:
469 case Bytecode::kShiftRightSmi:
470 case Bytecode::kShiftRightLogical:
471 case Bytecode::kShiftRightLogicalSmi:
474 case Bytecode::kLogicalNot:
475 case Bytecode::kToBooleanLogicalNot:
476 case Bytecode::kTypeOf:
478 case Bytecode::kCreateBlockContext:
479 case Bytecode::kCreateCatchContext:
480 case Bytecode::kCreateFunctionContext:
481 case Bytecode::kCreateEvalContext:
482 case Bytecode::kCreateWithContext:
484 case Bytecode::kCreateArrayLiteral:
485 case Bytecode::kCreateEmptyArrayLiteral:
486 case Bytecode::kCreateArrayFromIterable:
487 case Bytecode::kCreateObjectLiteral:
488 case Bytecode::kCreateEmptyObjectLiteral:
489 case Bytecode::kCreateRegExpLiteral:
491 case Bytecode::kCreateClosure:
492 case Bytecode::kCreateUnmappedArguments:
493 case Bytecode::kCreateRestParameter:
495 case Bytecode::kTestEqual:
496 case Bytecode::kTestEqualStrict:
497 case Bytecode::kTestLessThan:
498 case Bytecode::kTestLessThanOrEqual:
499 case Bytecode::kTestGreaterThan:
500 case Bytecode::kTestGreaterThanOrEqual:
501 case Bytecode::kTestInstanceOf:
502 case Bytecode::kTestIn:
503 case Bytecode::kTestReferenceEqual:
504 case Bytecode::kTestUndetectable:
505 case Bytecode::kTestTypeOf:
506 case Bytecode::kTestUndefined:
507 case Bytecode::kTestNull:
509 case Bytecode::kToObject:
510 case Bytecode::kToName:
511 case Bytecode::kToNumber:
512 case Bytecode::kToNumeric:
513 case Bytecode::kToString:
514 case Bytecode::kToBoolean:
516 case Bytecode::kIncBlockCounter:
517 case Bytecode::kForInEnumerate:
518 case Bytecode::kForInPrepare:
519 case Bytecode::kForInNext:
520 case Bytecode::kForInStep:
521 case Bytecode::kJumpLoop:
522 case Bytecode::kThrow:
523 case Bytecode::kReThrow:
524 case Bytecode::kThrowReferenceErrorIfHole:
525 case Bytecode::kThrowSuperNotCalledIfHole:
526 case Bytecode::kThrowSuperAlreadyCalledIfNotHole:
527 case Bytecode::kIllegal:
528 case Bytecode::kCallJSRuntime:
529 case Bytecode::kReturn:
530 case Bytecode::kSetPendingMessage:
541 case Builtin::kObjectConstructor:
542 case Builtin::kObjectCreate:
543 case Builtin::kObjectEntries:
544 case Builtin::kObjectGetOwnPropertyDescriptor:
545 case Builtin::kObjectGetOwnPropertyDescriptors:
546 case Builtin::kObjectGetOwnPropertyNames:
547 case Builtin::kObjectGetOwnPropertySymbols:
548 case Builtin::kObjectGetPrototypeOf:
549 case Builtin::kObjectGroupBy:
550 case Builtin::kObjectHasOwn:
551 case Builtin::kObjectIs:
552 case Builtin::kObjectIsExtensible:
553 case Builtin::kObjectIsFrozen:
554 case Builtin::kObjectIsSealed:
555 case Builtin::kObjectKeys:
556 case Builtin::kObjectPrototypeValueOf:
557 case Builtin::kObjectValues:
558 case Builtin::kObjectPrototypeHasOwnProperty:
559 case Builtin::kObjectPrototypeIsPrototypeOf:
560 case Builtin::kObjectPrototypePropertyIsEnumerable:
561 case Builtin::kObjectPrototypeToString:
562 case Builtin::kObjectPrototypeToLocaleString:
564 case Builtin::kArrayIsArray:
565 case Builtin::kArrayConstructor:
566 case Builtin::kArrayFrom:
567 case Builtin::kArrayIndexOf:
568 case Builtin::kArrayOf:
569 case Builtin::kArrayPrototypeValues:
570 case Builtin::kArrayIncludes:
571 case Builtin::kArrayPrototypeAt:
572 case Builtin::kArrayPrototypeConcat:
573 case Builtin::kArrayPrototypeEntries:
574 case Builtin::kArrayPrototypeFind:
575 case Builtin::kArrayPrototypeFindIndex:
576 case Builtin::kArrayPrototypeFindLast:
577 case Builtin::kArrayPrototypeFindLastIndex:
578 case Builtin::kArrayPrototypeFlat:
579 case Builtin::kArrayPrototypeFlatMap:
580 case Builtin::kArrayPrototypeJoin:
581 case Builtin::kArrayPrototypeKeys:
582 case Builtin::kArrayPrototypeLastIndexOf:
583 case Builtin::kArrayPrototypeSlice:
584 case Builtin::kArrayPrototypeToLocaleString:
585 case Builtin::kArrayPrototypeToReversed:
586 case Builtin::kArrayPrototypeToSorted:
587 case Builtin::kArrayPrototypeToSpliced:
588 case Builtin::kArrayPrototypeToString:
589 case Builtin::kArrayPrototypeWith:
590 case Builtin::kArrayForEach:
591 case Builtin::kArrayEvery:
592 case Builtin::kArraySome:
593 case Builtin::kArrayConcat:
594 case Builtin::kArrayFilter:
595 case Builtin::kArrayMap:
596 case Builtin::kArrayReduce:
597 case Builtin::kArrayReduceRight:
599 case Builtin::kIsTraceCategoryEnabled:
600 case Builtin::kTrace:
602 case Builtin::kTypedArrayConstructor:
603 case Builtin::kTypedArrayOf:
604 case Builtin::kTypedArrayPrototypeAt:
605 case Builtin::kTypedArrayPrototypeBuffer:
606 case Builtin::kTypedArrayPrototypeByteLength:
607 case Builtin::kTypedArrayPrototypeByteOffset:
608 case Builtin::kTypedArrayPrototypeLength:
609 case Builtin::kTypedArrayPrototypeEntries:
610 case Builtin::kTypedArrayPrototypeKeys:
611 case Builtin::kTypedArrayPrototypeValues:
612 case Builtin::kTypedArrayPrototypeFind:
613 case Builtin::kTypedArrayPrototypeFindIndex:
614 case Builtin::kTypedArrayPrototypeFindLast:
615 case Builtin::kTypedArrayPrototypeFindLastIndex:
616 case Builtin::kTypedArrayPrototypeIncludes:
617 case Builtin::kTypedArrayPrototypeJoin:
618 case Builtin::kTypedArrayPrototypeIndexOf:
619 case Builtin::kTypedArrayPrototypeLastIndexOf:
620 case Builtin::kTypedArrayPrototypeSlice:
621 case Builtin::kTypedArrayPrototypeSubArray:
622 case Builtin::kTypedArrayPrototypeEvery:
623 case Builtin::kTypedArrayPrototypeSome:
624 case Builtin::kTypedArrayPrototypeToLocaleString:
625 case Builtin::kTypedArrayPrototypeFilter:
626 case Builtin::kTypedArrayPrototypeMap:
627 case Builtin::kTypedArrayPrototypeReduce:
628 case Builtin::kTypedArrayPrototypeReduceRight:
629 case Builtin::kTypedArrayPrototypeForEach:
630 case Builtin::kTypedArrayPrototypeToReversed:
631 case Builtin::kTypedArrayPrototypeToSorted:
632 case Builtin::kTypedArrayPrototypeWith:
634 case Builtin::kArrayBufferConstructor:
635 case Builtin::kArrayBufferPrototypeGetByteLength:
636 case Builtin::kArrayBufferIsView:
637 case Builtin::kArrayBufferPrototypeSlice:
638 case Builtin::kReturnReceiver:
640 case Builtin::kDataViewConstructor:
641 case Builtin::kDataViewPrototypeGetBuffer:
642 case Builtin::kDataViewPrototypeGetByteLength:
643 case Builtin::kDataViewPrototypeGetByteOffset:
644 case Builtin::kDataViewPrototypeGetInt8:
645 case Builtin::kDataViewPrototypeGetUint8:
646 case Builtin::kDataViewPrototypeGetInt16:
647 case Builtin::kDataViewPrototypeGetUint16:
648 case Builtin::kDataViewPrototypeGetInt32:
649 case Builtin::kDataViewPrototypeGetUint32:
650 case Builtin::kDataViewPrototypeGetFloat16:
651 case Builtin::kDataViewPrototypeGetFloat32:
652 case Builtin::kDataViewPrototypeGetFloat64:
653 case Builtin::kDataViewPrototypeGetBigInt64:
654 case Builtin::kDataViewPrototypeGetBigUint64:
656 case Builtin::kBooleanConstructor:
657 case Builtin::kBooleanPrototypeToString:
658 case Builtin::kBooleanPrototypeValueOf:
660 case Builtin::kDateConstructor:
661 case Builtin::kDateNow:
662 case Builtin::kDateParse:
663 case Builtin::kDatePrototypeGetDate:
664 case Builtin::kDatePrototypeGetDay:
665 case Builtin::kDatePrototypeGetFullYear:
666 case Builtin::kDatePrototypeGetHours:
667 case Builtin::kDatePrototypeGetMilliseconds:
668 case Builtin::kDatePrototypeGetMinutes:
669 case Builtin::kDatePrototypeGetMonth:
670 case Builtin::kDatePrototypeGetSeconds:
671 case Builtin::kDatePrototypeGetTime:
672 case Builtin::kDatePrototypeGetTimezoneOffset:
673 case Builtin::kDatePrototypeGetUTCDate:
674 case Builtin::kDatePrototypeGetUTCDay:
675 case Builtin::kDatePrototypeGetUTCFullYear:
676 case Builtin::kDatePrototypeGetUTCHours:
677 case Builtin::kDatePrototypeGetUTCMilliseconds:
678 case Builtin::kDatePrototypeGetUTCMinutes:
679 case Builtin::kDatePrototypeGetUTCMonth:
680 case Builtin::kDatePrototypeGetUTCSeconds:
681 case Builtin::kDatePrototypeGetYear:
682 case Builtin::kDatePrototypeToDateString:
683 case Builtin::kDatePrototypeToISOString:
684 case Builtin::kDatePrototypeToUTCString:
685 case Builtin::kDatePrototypeToString:
686#ifdef V8_INTL_SUPPORT
687 case Builtin::kDatePrototypeToLocaleString:
688 case Builtin::kDatePrototypeToLocaleDateString:
689 case Builtin::kDatePrototypeToLocaleTimeString:
691 case Builtin::kDatePrototypeToTimeString:
692 case Builtin::kDatePrototypeToJson:
693 case Builtin::kDatePrototypeToPrimitive:
694 case Builtin::kDatePrototypeValueOf:
696 case Builtin::kDisposableStackConstructor:
697 case Builtin::kDisposableStackPrototypeGetDisposed:
699 case Builtin::kAsyncDisposableStackConstructor:
700 case Builtin::kAsyncDisposableStackPrototypeGetDisposed:
702 case Builtin::kMapConstructor:
703 case Builtin::kMapGroupBy:
704 case Builtin::kMapPrototypeForEach:
705 case Builtin::kMapPrototypeGet:
706 case Builtin::kMapPrototypeHas:
707 case Builtin::kMapPrototypeEntries:
708 case Builtin::kMapPrototypeGetSize:
709 case Builtin::kMapPrototypeKeys:
710 case Builtin::kMapPrototypeValues:
712 case Builtin::kWeakMapConstructor:
713 case Builtin::kWeakMapGet:
714 case Builtin::kWeakMapPrototypeHas:
716 case Builtin::kMathAbs:
717 case Builtin::kMathAcos:
718 case Builtin::kMathAcosh:
719 case Builtin::kMathAsin:
720 case Builtin::kMathAsinh:
721 case Builtin::kMathAtan:
722 case Builtin::kMathAtanh:
723 case Builtin::kMathAtan2:
724 case Builtin::kMathCeil:
725 case Builtin::kMathCbrt:
726 case Builtin::kMathExpm1:
727 case Builtin::kMathClz32:
728 case Builtin::kMathCos:
729 case Builtin::kMathCosh:
730 case Builtin::kMathExp:
731 case Builtin::kMathFloor:
732 case Builtin::kMathF16round:
733 case Builtin::kMathFround:
734 case Builtin::kMathHypot:
735 case Builtin::kMathImul:
736 case Builtin::kMathLog:
737 case Builtin::kMathLog1p:
738 case Builtin::kMathLog2:
739 case Builtin::kMathLog10:
740 case Builtin::kMathMax:
741 case Builtin::kMathMin:
742 case Builtin::kMathPow:
743 case Builtin::kMathRound:
744 case Builtin::kMathSign:
745 case Builtin::kMathSin:
746 case Builtin::kMathSinh:
747 case Builtin::kMathSqrt:
748 case Builtin::kMathTan:
749 case Builtin::kMathTanh:
750 case Builtin::kMathTrunc:
752 case Builtin::kNumberConstructor:
753 case Builtin::kNumberIsFinite:
754 case Builtin::kNumberIsInteger:
755 case Builtin::kNumberIsNaN:
756 case Builtin::kNumberIsSafeInteger:
757 case Builtin::kNumberParseFloat:
758 case Builtin::kNumberParseInt:
759 case Builtin::kNumberPrototypeToExponential:
760 case Builtin::kNumberPrototypeToFixed:
761 case Builtin::kNumberPrototypeToPrecision:
762 case Builtin::kNumberPrototypeToString:
763 case Builtin::kNumberPrototypeToLocaleString:
764 case Builtin::kNumberPrototypeValueOf:
766 case Builtin::kBigIntConstructor:
767 case Builtin::kBigIntAsIntN:
768 case Builtin::kBigIntAsUintN:
769 case Builtin::kBigIntPrototypeToString:
770 case Builtin::kBigIntPrototypeValueOf:
772 case Builtin::kSetConstructor:
773 case Builtin::kSetPrototypeEntries:
774 case Builtin::kSetPrototypeForEach:
775 case Builtin::kSetPrototypeGetSize:
776 case Builtin::kSetPrototypeHas:
777 case Builtin::kSetPrototypeValues:
779 case Builtin::kWeakSetConstructor:
780 case Builtin::kWeakSetPrototypeHas:
782 case Builtin::kStringFromCharCode:
783 case Builtin::kStringFromCodePoint:
784 case Builtin::kStringConstructor:
785 case Builtin::kStringListFromIterable:
786 case Builtin::kStringPrototypeAnchor:
787 case Builtin::kStringPrototypeAt:
788 case Builtin::kStringPrototypeBig:
789 case Builtin::kStringPrototypeBlink:
790 case Builtin::kStringPrototypeBold:
791 case Builtin::kStringPrototypeCharAt:
792 case Builtin::kStringPrototypeCharCodeAt:
793 case Builtin::kStringPrototypeCodePointAt:
794 case Builtin::kStringPrototypeConcat:
795 case Builtin::kStringPrototypeEndsWith:
796 case Builtin::kStringPrototypeFixed:
797 case Builtin::kStringPrototypeFontcolor:
798 case Builtin::kStringPrototypeFontsize:
799 case Builtin::kStringPrototypeIncludes:
800 case Builtin::kStringPrototypeIndexOf:
801 case Builtin::kStringPrototypeIsWellFormed:
802 case Builtin::kStringPrototypeItalics:
803 case Builtin::kStringPrototypeLastIndexOf:
804 case Builtin::kStringPrototypeLink:
805 case Builtin::kStringPrototypeMatch:
806 case Builtin::kStringPrototypeMatchAll:
808 case Builtin::kStringPrototypePadEnd:
809 case Builtin::kStringPrototypePadStart:
810 case Builtin::kStringPrototypeRepeat:
811 case Builtin::kStringPrototypeReplace:
812 case Builtin::kStringPrototypeReplaceAll:
813 case Builtin::kStringPrototypeSearch:
814 case Builtin::kStringPrototypeSlice:
815 case Builtin::kStringPrototypeSmall:
816 case Builtin::kStringPrototypeSplit:
817 case Builtin::kStringPrototypeStartsWith:
818 case Builtin::kStringSlowFlatten:
819 case Builtin::kStringPrototypeStrike:
820 case Builtin::kStringPrototypeSub:
821 case Builtin::kStringPrototypeSubstr:
822 case Builtin::kStringPrototypeSubstring:
823 case Builtin::kStringPrototypeSup:
824 case Builtin::kStringPrototypeToString:
825 case Builtin::kStringPrototypeToLocaleLowerCase:
826 case Builtin::kStringPrototypeToLocaleUpperCase:
827#ifdef V8_INTL_SUPPORT
828 case Builtin::kStringToLowerCaseIntl:
829 case Builtin::kStringPrototypeLocaleCompareIntl:
830 case Builtin::kStringPrototypeToLowerCaseIntl:
831 case Builtin::kStringPrototypeToUpperCaseIntl:
832 case Builtin::kStringPrototypeNormalizeIntl:
834 case Builtin::kStringPrototypeLocaleCompare:
835 case Builtin::kStringPrototypeToLowerCase:
836 case Builtin::kStringPrototypeToUpperCase:
837 case Builtin::kStringPrototypeNormalize:
839 case Builtin::kStringPrototypeToWellFormed:
840 case Builtin::kStringPrototypeTrim:
841 case Builtin::kStringPrototypeTrimEnd:
842 case Builtin::kStringPrototypeTrimStart:
843 case Builtin::kStringPrototypeValueOf:
844 case Builtin::kStringToNumber:
845 case Builtin::kStringSubstring:
847 case Builtin::kSymbolConstructor:
848 case Builtin::kSymbolKeyFor:
849 case Builtin::kSymbolPrototypeToString:
850 case Builtin::kSymbolPrototypeValueOf:
851 case Builtin::kSymbolPrototypeToPrimitive:
853 case Builtin::kJsonParse:
854 case Builtin::kJsonStringify:
856 case Builtin::kGlobalDecodeURI:
857 case Builtin::kGlobalDecodeURIComponent:
858 case Builtin::kGlobalEncodeURI:
859 case Builtin::kGlobalEncodeURIComponent:
860 case Builtin::kGlobalEscape:
861 case Builtin::kGlobalUnescape:
862 case Builtin::kGlobalIsFinite:
863 case Builtin::kGlobalIsNaN:
865 case Builtin::kFunctionPrototypeToString:
866 case Builtin::kFunctionPrototypeBind:
867 case Builtin::kFastFunctionPrototypeBind:
868 case Builtin::kFunctionPrototypeCall:
869 case Builtin::kFunctionPrototypeApply:
871 case Builtin::kErrorConstructor:
873 case Builtin::kRegExpConstructor:
875 case Builtin::kReflectApply:
876 case Builtin::kReflectConstruct:
877 case Builtin::kReflectGetOwnPropertyDescriptor:
878 case Builtin::kReflectGetPrototypeOf:
879 case Builtin::kReflectHas:
880 case Builtin::kReflectIsExtensible:
881 case Builtin::kReflectOwnKeys:
883 case Builtin::kStrictPoisonPillThrower:
884 case Builtin::kAllocateInYoungGeneration:
885 case Builtin::kAllocateInOldGeneration:
886 case Builtin::kConstructVarargs:
887 case Builtin::kConstructWithArrayLike:
888 case Builtin::kGetOwnPropertyDescriptor:
889 case Builtin::kOrdinaryGetOwnPropertyDescriptor:
890#if V8_ENABLE_WEBASSEMBLY
891 case Builtin::kWasmAllocateInYoungGeneration:
892 case Builtin::kWasmAllocateInOldGeneration:
894#ifdef V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA
895 case Builtin::kGetContinuationPreservedEmbedderData:
899#ifdef V8_INTL_SUPPORT
901 case Builtin::kIntlGetCanonicalLocales:
903 case Builtin::kCollatorConstructor:
904 case Builtin::kCollatorInternalCompare:
905 case Builtin::kCollatorPrototypeCompare:
906 case Builtin::kCollatorPrototypeResolvedOptions:
907 case Builtin::kCollatorSupportedLocalesOf:
909 case Builtin::kDateTimeFormatConstructor:
910 case Builtin::kDateTimeFormatInternalFormat:
911 case Builtin::kDateTimeFormatPrototypeFormat:
912 case Builtin::kDateTimeFormatPrototypeFormatRange:
913 case Builtin::kDateTimeFormatPrototypeFormatRangeToParts:
914 case Builtin::kDateTimeFormatPrototypeFormatToParts:
915 case Builtin::kDateTimeFormatPrototypeResolvedOptions:
916 case Builtin::kDateTimeFormatSupportedLocalesOf:
918 case Builtin::kDisplayNamesConstructor:
919 case Builtin::kDisplayNamesPrototypeOf:
920 case Builtin::kDisplayNamesPrototypeResolvedOptions:
921 case Builtin::kDisplayNamesSupportedLocalesOf:
923 case Builtin::kListFormatConstructor:
924 case Builtin::kListFormatPrototypeFormat:
925 case Builtin::kListFormatPrototypeFormatToParts:
926 case Builtin::kListFormatPrototypeResolvedOptions:
927 case Builtin::kListFormatSupportedLocalesOf:
929 case Builtin::kLocaleConstructor:
930 case Builtin::kLocalePrototypeBaseName:
931 case Builtin::kLocalePrototypeCalendar:
932 case Builtin::kLocalePrototypeCalendars:
933 case Builtin::kLocalePrototypeCaseFirst:
934 case Builtin::kLocalePrototypeCollation:
935 case Builtin::kLocalePrototypeCollations:
936 case Builtin::kLocalePrototypeFirstDayOfWeek:
937 case Builtin::kLocalePrototypeGetCalendars:
938 case Builtin::kLocalePrototypeGetCollations:
939 case Builtin::kLocalePrototypeGetHourCycles:
940 case Builtin::kLocalePrototypeGetNumberingSystems:
941 case Builtin::kLocalePrototypeGetTextInfo:
942 case Builtin::kLocalePrototypeGetTimeZones:
943 case Builtin::kLocalePrototypeGetWeekInfo:
944 case Builtin::kLocalePrototypeHourCycle:
945 case Builtin::kLocalePrototypeHourCycles:
946 case Builtin::kLocalePrototypeLanguage:
947 case Builtin::kLocalePrototypeMaximize:
948 case Builtin::kLocalePrototypeMinimize:
949 case Builtin::kLocalePrototypeNumeric:
950 case Builtin::kLocalePrototypeNumberingSystem:
951 case Builtin::kLocalePrototypeNumberingSystems:
952 case Builtin::kLocalePrototypeRegion:
953 case Builtin::kLocalePrototypeScript:
954 case Builtin::kLocalePrototypeTextInfo:
955 case Builtin::kLocalePrototypeTimeZones:
956 case Builtin::kLocalePrototypeToString:
957 case Builtin::kLocalePrototypeWeekInfo:
959 case Builtin::kNumberFormatConstructor:
960 case Builtin::kNumberFormatInternalFormatNumber:
961 case Builtin::kNumberFormatPrototypeFormatNumber:
962 case Builtin::kNumberFormatPrototypeFormatToParts:
963 case Builtin::kNumberFormatPrototypeResolvedOptions:
964 case Builtin::kNumberFormatSupportedLocalesOf:
966 case Builtin::kPluralRulesConstructor:
967 case Builtin::kPluralRulesPrototypeResolvedOptions:
968 case Builtin::kPluralRulesPrototypeSelect:
969 case Builtin::kPluralRulesSupportedLocalesOf:
971 case Builtin::kRelativeTimeFormatConstructor:
972 case Builtin::kRelativeTimeFormatPrototypeFormat:
973 case Builtin::kRelativeTimeFormatPrototypeFormatToParts:
974 case Builtin::kRelativeTimeFormatPrototypeResolvedOptions:
975 case Builtin::kRelativeTimeFormatSupportedLocalesOf:
980 case Builtin::kSetIteratorPrototypeNext:
981 case Builtin::kSetPrototypeAdd:
982 case Builtin::kSetPrototypeClear:
983 case Builtin::kSetPrototypeDelete:
985 case Builtin::kArrayIteratorPrototypeNext:
986 case Builtin::kArrayPrototypeFill:
987 case Builtin::kArrayPrototypePop:
988 case Builtin::kArrayPrototypePush:
989 case Builtin::kArrayPrototypeReverse:
990 case Builtin::kArrayPrototypeShift:
991 case Builtin::kArrayPrototypeUnshift:
992 case Builtin::kArrayPrototypeSort:
993 case Builtin::kArrayPrototypeSplice:
994 case Builtin::kArrayUnshift:
996 case Builtin::kMapIteratorPrototypeNext:
997 case Builtin::kMapPrototypeClear:
998 case Builtin::kMapPrototypeDelete:
999 case Builtin::kMapPrototypeSet:
1001 case Builtin::kDatePrototypeSetDate:
1002 case Builtin::kDatePrototypeSetFullYear:
1003 case Builtin::kDatePrototypeSetHours:
1004 case Builtin::kDatePrototypeSetMilliseconds:
1005 case Builtin::kDatePrototypeSetMinutes:
1006 case Builtin::kDatePrototypeSetMonth:
1007 case Builtin::kDatePrototypeSetSeconds:
1008 case Builtin::kDatePrototypeSetTime:
1009 case Builtin::kDatePrototypeSetUTCDate:
1010 case Builtin::kDatePrototypeSetUTCFullYear:
1011 case Builtin::kDatePrototypeSetUTCHours:
1012 case Builtin::kDatePrototypeSetUTCMilliseconds:
1013 case Builtin::kDatePrototypeSetUTCMinutes:
1014 case Builtin::kDatePrototypeSetUTCMonth:
1015 case Builtin::kDatePrototypeSetUTCSeconds:
1016 case Builtin::kDatePrototypeSetYear:
1018 case Builtin::kDisposableStackPrototypeUse:
1019 case Builtin::kDisposableStackPrototypeDispose:
1020 case Builtin::kDisposableStackPrototypeAdopt:
1021 case Builtin::kDisposableStackPrototypeDefer:
1022 case Builtin::kDisposableStackPrototypeMove:
1024 case Builtin::kAsyncDisposableStackPrototypeUse:
1025 case Builtin::kAsyncDisposableStackPrototypeDisposeAsync:
1026 case Builtin::kAsyncDisposableStackPrototypeAdopt:
1027 case Builtin::kAsyncDisposableStackPrototypeDefer:
1028 case Builtin::kAsyncDisposableStackPrototypeMove:
1030 case Builtin::kRegExpPrototypeTest:
1031 case Builtin::kRegExpPrototypeExec:
1032 case Builtin::kRegExpPrototypeSplit:
1033 case Builtin::kRegExpPrototypeFlagsGetter:
1034 case Builtin::kRegExpPrototypeGlobalGetter:
1035 case Builtin::kRegExpPrototypeHasIndicesGetter:
1036 case Builtin::kRegExpPrototypeIgnoreCaseGetter:
1037 case Builtin::kRegExpPrototypeMatch:
1038 case Builtin::kRegExpPrototypeMatchAll:
1039 case Builtin::kRegExpPrototypeMultilineGetter:
1040 case Builtin::kRegExpPrototypeDotAllGetter:
1041 case Builtin::kRegExpPrototypeUnicodeGetter:
1042 case Builtin::kRegExpPrototypeUnicodeSetsGetter:
1043 case Builtin::kRegExpPrototypeStickyGetter:
1044 case Builtin::kRegExpPrototypeReplace:
1045 case Builtin::kRegExpPrototypeSearch:
1049 case Builtin::kDebugPrintFloat64:
1050 case Builtin::kDebugPrintWordPtr:
1054 if (
v8_flags.trace_side_effect_free_debug_evaluate) {
1055 PrintF(
"[debug-evaluate] built-in %s may cause side effect.\n",
1065 case Bytecode::kSetNamedProperty:
1066 case Bytecode::kDefineNamedOwnProperty:
1067 case Bytecode::kSetKeyedProperty:
1068 case Bytecode::kStaInArrayLiteral:
1069 case Bytecode::kDefineKeyedOwnPropertyInLiteral:
1070 case Bytecode::kStaCurrentContextSlot:
1082 if (
v8_flags.trace_side_effect_free_debug_evaluate) {
1083 PrintF(
"[debug-evaluate] Checking function %s for side effect.\n",
1084 info->DebugNameCStr().get());
1087 DCHECK(info->is_compiled());
1088 DCHECK(!info->needs_script_context());
1089 if (info->HasBytecodeArray()) {
1093 if (
v8_flags.trace_side_effect_free_debug_evaluate) {
1094 Print(*bytecode_array);
1096 bool requires_runtime_checks =
false;
1100 if (BytecodeHasNoSideEffect(bytecode))
continue;
1101 if (BytecodeRequiresRuntimeCheck(bytecode)) {
1102 requires_runtime_checks =
true;
1106 if (
v8_flags.trace_side_effect_free_debug_evaluate) {
1107 PrintF(
"[debug-evaluate] bytecode %s may cause side effect.\n",
1116 }
else if (info->IsApiFunction()) {
1118 if (code->is_builtin()) {
1119 return code->builtin_id() == Builtin::kHandleApiCallOrConstruct
1136static bool TransitivelyCalledBuiltinHasNoSideEffect(
Builtin caller,
1140 case Builtin::kAbort:
1141 case Builtin::kAbortCSADcheck:
1142 case Builtin::kAdaptorWithBuiltinExitFrame0:
1143 case Builtin::kAdaptorWithBuiltinExitFrame1:
1144 case Builtin::kAdaptorWithBuiltinExitFrame2:
1145 case Builtin::kAdaptorWithBuiltinExitFrame3:
1146 case Builtin::kAdaptorWithBuiltinExitFrame4:
1147 case Builtin::kAdaptorWithBuiltinExitFrame5:
1148 case Builtin::kArrayConstructorImpl:
1149 case Builtin::kArrayEveryLoopContinuation:
1150 case Builtin::kArrayFilterLoopContinuation:
1151 case Builtin::kArrayFindIndexLoopContinuation:
1152 case Builtin::kArrayFindLoopContinuation:
1153 case Builtin::kArrayFindLastIndexLoopContinuation:
1154 case Builtin::kArrayFindLastLoopContinuation:
1155 case Builtin::kArrayForEachLoopContinuation:
1156 case Builtin::kArrayIncludesHoleyDoubles:
1157 case Builtin::kArrayIncludesPackedDoubles:
1158 case Builtin::kArrayIncludesSmi:
1159 case Builtin::kArrayIncludesSmiOrObject:
1160 case Builtin::kArrayIndexOfHoleyDoubles:
1161 case Builtin::kArrayIndexOfPackedDoubles:
1162 case Builtin::kArrayIndexOfSmi:
1163 case Builtin::kArrayIndexOfSmiOrObject:
1164 case Builtin::kArrayMapLoopContinuation:
1165 case Builtin::kArrayReduceLoopContinuation:
1166 case Builtin::kArrayReduceRightLoopContinuation:
1167 case Builtin::kArraySomeLoopContinuation:
1168 case Builtin::kArrayTimSort:
1169 case Builtin::kArrayTimSortIntoCopy:
1170 case Builtin::kCall_ReceiverIsAny:
1171 case Builtin::kCall_ReceiverIsNotNullOrUndefined:
1172 case Builtin::kCall_ReceiverIsNullOrUndefined:
1173 case Builtin::kCallWithArrayLike:
1174 case Builtin::kCEntry_Return1_ArgvOnStack_NoBuiltinExit:
1175 case Builtin::kCEntry_Return1_ArgvOnStack_BuiltinExit:
1176 case Builtin::kCEntry_Return1_ArgvInRegister_NoBuiltinExit:
1177 case Builtin::kCEntry_Return2_ArgvOnStack_NoBuiltinExit:
1178 case Builtin::kCEntry_Return2_ArgvOnStack_BuiltinExit:
1179 case Builtin::kCEntry_Return2_ArgvInRegister_NoBuiltinExit:
1180 case Builtin::kWasmCEntry:
1181 case Builtin::kCloneFastJSArray:
1182 case Builtin::kCloneFastJSArrayFillingHoles:
1183 case Builtin::kConstruct:
1184 case Builtin::kConvertToLocaleString:
1185 case Builtin::kCreateTypedArray:
1186 case Builtin::kDirectCEntry:
1187 case Builtin::kDoubleToI:
1188 case Builtin::kExtractFastJSArray:
1189 case Builtin::kFastNewObject:
1190 case Builtin::kFindOrderedHashMapEntry:
1191 case Builtin::kFindOrderedHashSetEntry:
1192 case Builtin::kFlattenIntoArrayWithMapFn:
1193 case Builtin::kFlattenIntoArrayWithoutMapFn:
1194 case Builtin::kGenericArrayToReversed:
1195 case Builtin::kGenericArrayWith:
1196 case Builtin::kGetProperty:
1197 case Builtin::kGetPropertyWithReceiver:
1198 case Builtin::kGroupByGeneric:
1199 case Builtin::kHasProperty:
1200 case Builtin::kCreateHTML:
1201 case Builtin::kMapIteratorToList:
1202 case Builtin::kNonNumberToNumber:
1203 case Builtin::kNonPrimitiveToPrimitive_Number:
1204 case Builtin::kNumberToString:
1205 case Builtin::kObjectToString:
1206 case Builtin::kOrderedHashTableHealIndex:
1207 case Builtin::kOrdinaryToPrimitive_Number:
1208 case Builtin::kOrdinaryToPrimitive_String:
1209 case Builtin::kParseInt:
1210 case Builtin::kProxyHasProperty:
1211 case Builtin::kProxyIsExtensible:
1212 case Builtin::kProxyGetPrototypeOf:
1213 case Builtin::kRecordWriteSaveFP:
1214 case Builtin::kRecordWriteIgnoreFP:
1215 case Builtin::kSetOrSetIteratorToList:
1216 case Builtin::kStringAdd_CheckNone:
1217 case Builtin::kStringEqual:
1218 case Builtin::kStringIndexOf:
1219 case Builtin::kStringRepeat:
1220 case Builtin::kStringToList:
1221 case Builtin::kBigIntEqual:
1222 case Builtin::kToInteger:
1223 case Builtin::kToLength:
1224 case Builtin::kToName:
1225 case Builtin::kToObject:
1226 case Builtin::kToString:
1227 case Builtin::kTypedArrayMergeSort:
1229 case Builtin::kTSANRelaxedStore8IgnoreFP:
1230 case Builtin::kTSANRelaxedStore8SaveFP:
1231 case Builtin::kTSANRelaxedStore16IgnoreFP:
1232 case Builtin::kTSANRelaxedStore16SaveFP:
1233 case Builtin::kTSANRelaxedStore32IgnoreFP:
1234 case Builtin::kTSANRelaxedStore32SaveFP:
1235 case Builtin::kTSANRelaxedStore64IgnoreFP:
1236 case Builtin::kTSANRelaxedStore64SaveFP:
1237 case Builtin::kTSANSeqCstStore8IgnoreFP:
1238 case Builtin::kTSANSeqCstStore8SaveFP:
1239 case Builtin::kTSANSeqCstStore16IgnoreFP:
1240 case Builtin::kTSANSeqCstStore16SaveFP:
1241 case Builtin::kTSANSeqCstStore32IgnoreFP:
1242 case Builtin::kTSANSeqCstStore32SaveFP:
1243 case Builtin::kTSANSeqCstStore64IgnoreFP:
1244 case Builtin::kTSANSeqCstStore64SaveFP:
1245 case Builtin::kTSANRelaxedLoad32IgnoreFP:
1246 case Builtin::kTSANRelaxedLoad32SaveFP:
1247 case Builtin::kTSANRelaxedLoad64IgnoreFP:
1248 case Builtin::kTSANRelaxedLoad64SaveFP:
1250 case Builtin::kWeakMapLookupHashIndex:
1252 case Builtin::kJoinStackPop:
1253 case Builtin::kJoinStackPush:
1255 case Builtin::kArrayPrototypeJoin:
1256 case Builtin::kArrayPrototypeToLocaleString:
1257 case Builtin::kTypedArrayPrototypeJoin:
1258 case Builtin::kTypedArrayPrototypeToLocaleString:
1263 case Builtin::kFastCreateDataProperty:
1265 case Builtin::kArrayOf:
1266 case Builtin::kArrayPrototypeSlice:
1267 case Builtin::kArrayPrototypeToSpliced:
1268 case Builtin::kArrayPrototypeWith:
1269 case Builtin::kArrayFilter:
1270 case Builtin::kArrayFrom:
1275 case Builtin::kSetProperty:
1277 case Builtin::kArrayOf:
1278 case Builtin::kArrayPrototypeSlice:
1279 case Builtin::kArrayPrototypeToSorted:
1280 case Builtin::kArrayFrom:
1281 case Builtin::kTypedArrayPrototypeMap:
1282 case Builtin::kStringPrototypeMatchAll:
1287 case Builtin::kRegExpMatchFast:
1290 return caller == Builtin::kStringPrototypeMatch;
1291 case Builtin::kRegExpReplace:
1294 return caller == Builtin::kStringPrototypeReplace;
1295 case Builtin::kRegExpSplit:
1298 return caller == Builtin::kStringPrototypeSplit;
1299 case Builtin::kRegExpSearchFast:
1302 return caller == Builtin::kStringPrototypeSearch;
1309void DebugEvaluate::VerifyTransitiveBuiltins(Isolate* isolate) {
1311 bool failed =
false;
1312 bool sanity_check =
false;
1320 for (RelocIterator it(code, mode); !it.done(); it.next()) {
1321 RelocInfo* rinfo = it.rinfo();
1324 isolate->heap()->FindCodeForInnerPointer(rinfo->target_address());
1325 Builtin callee = lookup_result->builtin_id();
1329 if (TransitivelyCalledBuiltinHasNoSideEffect(caller, callee)) {
1330 sanity_check =
true;
1333 PrintF(
"Allowlisted builtin %s calls non-allowlisted builtin %s\n",
1339#if defined(V8_TARGET_ARCH_PPC64) || defined(V8_TARGET_ARCH_MIPS64) || \
1340 defined(V8_TARGET_ARCH_RISCV32) || defined(V8_TARGET_ARCH_RISCV64)
1348 CHECK(sanity_check);
1359 if (BytecodeRequiresRuntimeCheck(bytecode)) it.ApplyDebugBreak();
static Handle< JSObject > FunctionGetArguments(JavaScriptFrame *frame, int inlined_jsframe_index)
static constexpr Builtin kFirst
static constexpr bool IsBuiltinId(Builtin builtin)
static constexpr Builtin kLast
static V8_EXPORT_PRIVATE const char * name(Builtin builtin)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSFunction > GetFunctionFromEval(DirectHandle< String > source, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< Context > context, LanguageMode language_mode, ParseRestriction restriction, int parameters_end_pos, int eval_position, ParsingWhileDebugging parsing_while_debugging=ParsingWhileDebugging::kNo)
static MaybeDirectHandle< SharedFunctionInfo > GetSharedFunctionInfoForScript(Isolate *isolate, Handle< String > source, const ScriptDetails &script_details, ScriptCompiler::CompileOptions compile_options, ScriptCompiler::NoCacheReason no_cache_reason, NativesFlag is_natives_code, ScriptCompiler::CompilationDetails *compilation_details)
Handle< Context > evaluation_context_
DirectHandle< Context > evaluation_context() const
std::vector< ContextChainElement > context_chain_
ScopeIterator scope_iterator_
ContextBuilder(Isolate *isolate, JavaScriptFrame *frame, int inlined_jsframe_index)
DirectHandle< SharedFunctionInfo > outer_info() const
FrameInspector frame_inspector_
static V8_EXPORT_PRIVATE MaybeDirectHandle< Object > Global(Isolate *isolate, Handle< String > source, debug::EvaluateGlobalMode mode, REPLMode repl_mode=REPLMode::kNo)
static void ApplySideEffectChecks(Handle< BytecodeArray > bytecode_array)
static MaybeDirectHandle< Object > WithTopmostArguments(Isolate *isolate, DirectHandle< String > source)
static bool IsSideEffectFreeIntrinsic(Runtime::FunctionId id)
static V8_EXPORT_PRIVATE MaybeDirectHandle< Object > Local(Isolate *isolate, StackFrameId frame_id, int inlined_jsframe_index, DirectHandle< String > source, bool throw_on_side_effect)
static DebugInfo::SideEffectState FunctionGetSideEffectState(Isolate *isolate, DirectHandle< SharedFunctionInfo > info)
static MaybeDirectHandle< Object > Evaluate(Isolate *isolate, DirectHandle< SharedFunctionInfo > outer_info, DirectHandle< Context > context, DirectHandle< Object > receiver, DirectHandle< String > source, bool throw_on_side_effect)
static V8_INLINE const DirectHandle null()
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeHandle< Object > CallScript(Isolate *isolate, DirectHandle< JSFunction > callable, DirectHandle< Object > receiver, DirectHandle< Object > host_defined_options)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeHandle< Object > Call(Isolate *isolate, DirectHandle< Object > callable, DirectHandle< Object > receiver, base::Vector< const DirectHandle< Object > > args)
V8_WARN_UNUSED_RESULT Handle< JSFunction > Build()
Handle< JSObject > NewSlowJSObjectWithNullProto()
Handle< Context > NewDebugEvaluateContext(DirectHandle< Context > previous, DirectHandle< ScopeInfo > scope_info, DirectHandle< JSReceiver > extension, DirectHandle< Context > wrapped)
Handle< JSFunction > GetFunction() const
void LocalsBlockListCacheSet(DirectHandle< ScopeInfo > scope_info, DirectHandle< ScopeInfo > outer_scope_info, DirectHandle< StringSet > locals_blocklist)
Tagged< Object > LocalsBlockListCacheGet(DirectHandle< ScopeInfo > scope_info)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > V8_EXPORT_PRIVATE SetOwnPropertyIgnoreAttributes(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes)
static Handle< Object > GetDataProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static MaybeHandle< FixedArray > GetKeys(Isolate *isolate, DirectHandle< JSReceiver > object, KeyCollectionMode mode, PropertyFilter filter, GetKeysConversion keys_conversion=GetKeysConversion::kKeepNumbers, bool is_for_in=false, bool skip_indices=false)
V8_INLINE bool is_null() const
static constexpr bool IsCodeTargetMode(Mode mode)
static constexpr int ModeMask(Mode mode)
static V8_EXPORT_PRIVATE const Function * FunctionForId(FunctionId id)
static V8_EXPORT_PRIVATE DirectHandle< ScopeInfo > CreateForWithScope(Isolate *isolate, MaybeDirectHandle< ScopeInfo > outer_scope)
bool DeclaresLocals(Mode mode) const
Handle< JSObject > ScopeObject(Mode mode)
Handle< Context > CurrentContext() const
bool InInnerScope() const
static constexpr bool IsCallRuntime(Bytecode bytecode)
static const char * ToString(Bytecode bytecode)
#define INTRINSIC_ALLOWLIST(V)
#define INLINE_INTRINSIC_ALLOWLIST(V)
#define INLINE_CASE(Name)
#define ASSIGN_RETURN_ON_EXCEPTION(isolate, dst, call)
ZoneVector< RpoNumber > & result
LiftoffAssembler::CacheState state
@ kDisableBreaksAndThrowOnSideEffect
constexpr int kNoSourcePosition
void PrintF(const char *format,...)
Tagged(T object) -> Tagged< T >
V8_INLINE DirectHandle< T > direct_handle(Tagged< T > object, Isolate *isolate)
void Print(Tagged< Object > obj)
DirectHandle< JSObject > GetWasmDebugProxy(WasmFrame *frame)
V8_EXPORT_PRIVATE FlagValues v8_flags
!IsContextMap !IsContextMap native_context
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
Handle< Context > wrapped_context
Handle< JSObject > materialized_object