29 if (!isolate->MayAccess(isolate->native_context(),
object)) {
31 isolate->ReportFailedAccessCheck(
object));
40 isolate->heap()->FatalProcessOutOfMemory(
"CodeStubAssembler::AllocateRaw");
47 isolate->heap()->FatalProcessOutOfMemory(
"invalid array length");
54 FATAL(
"Invalid size");
61 return isolate->Throw(
args[0]);
67 return isolate->ReThrow(
args[0]);
73 return isolate->ReThrow(
args[0],
args[1]);
79 return isolate->StackOverflow();
86 isolate, NewTypeError(MessageTemplate::kSymbolAsyncIteratorInvalid));
92 return isolate->TerminateExecution();
101 int message_id_smi =
args.smi_value_at(0);
103 constexpr int kMaxMessageArgs = 3;
104 DirectHandle<Object> message_args[kMaxMessageArgs];
105 int num_message_args = 0;
106 while (num_message_args < kMaxMessageArgs &&
107 args.length() > num_message_args + 1) {
108 message_args[num_message_args] =
args.at(num_message_args + 1);
114 return *isolate->factory()->NewError(
115 (isolate->*constructor_fn)(), message_id,
121 return isolate->Throw(NewError(isolate,
args, constructor_fn));
127 if (
v8_flags.correctness_fuzzer_suppressions) {
129 int message_id_smi =
args.smi_value_at(0);
138 MessageTemplate::kBigIntTooBig) {
139 FATAL(
"Aborting on invalid BigInt length");
143 return ThrowError(isolate,
args, &Isolate::range_error_function);
147 return ThrowError(isolate,
args, &Isolate::type_error_function);
155 return ThrowError(isolate,
args, &Isolate::type_error_function);
160const char* ElementsKindToType(
ElementsKind fixed_elements_kind) {
161 switch (fixed_elements_kind) {
162#define ELEMENTS_KIND_CASE(Type, type, TYPE, ctype) \
163 case TYPE##_ELEMENTS: \
164 return #Type "Array";
168#undef ELEMENTS_KIND_CASE
186 isolate->factory()->NewStringFromAsciiChecked(ElementsKindToType(
kind));
195 isolate, NewRangeError(MessageTemplate::kInvalidTypedArrayAlignment,
196 problem_string, type, element_size));
202 return isolate->UnwindAndFindHandler();
208 DCHECK(isolate->has_exception());
217 isolate, NewReferenceError(MessageTemplate::kNotDefined, name));
226 NewReferenceError(MessageTemplate::kAccessedUninitializedVariable, name));
232 int template_index =
args.smi_value_at(0);
235 return *isolate->factory()->NewError(message_template, arg0);
239 return NewError(isolate,
args, &Isolate::type_error_function);
245 int template_index =
args.smi_value_at(0);
248 return *isolate->factory()->NewReferenceError(message_template, arg0);
262 NewTypeError(MessageTemplate::kIteratorResultNotAnObject, value));
269 isolate, NewTypeError(MessageTemplate::kThrowMethodMissing));
276 isolate, NewTypeError(MessageTemplate::kSymbolIteratorInvalid));
287 impl->LastEnteredContext()->native_context());
289 NewTypeError(MessageTemplate::kNoAccess));
297 isolate, NewTypeError(MessageTemplate::kNotConstructor,
object));
308 msg = isolate->factory()->NewStringFromAsciiChecked(
"null");
309 }
else if (isolate->factory()->object_string()->Equals(*type)) {
311 msg = isolate->factory()->NewStringFromAsciiChecked(
"an object");
314 msg = isolate->factory()
316 isolate->factory()->NewStringFromAsciiChecked(
"a "), type)
320 isolate, NewTypeError(MessageTemplate::kApplyNonFunction,
object, msg));
330 if (check.JsHasOverflowed()) {
331 return isolate->StackOverflow();
334 return isolate->stack_guard()->HandleInterrupts(
345 if (check.JsHasOverflowed()) {
346 return isolate->StackOverflow();
349 return isolate->stack_guard()->HandleInterrupts(
356 uint32_t gap =
args.positive_smi_value_at(0);
361 if (check.JsHasOverflowed(gap)) {
362 return isolate->StackOverflow();
365 return isolate->stack_guard()->HandleInterrupts(
376 DirectHandle<JSFunction> function =
args.at<JSFunction>(0);
377 TRACE_EVENT0(
"v8.execute",
"V8.BytecodeBudgetInterruptWithStackCheck");
381 StackLimitCheck check(isolate);
382 if (check.JsHasOverflowed()) {
386 return isolate->StackOverflow();
387 }
else if (check.InterruptRequested()) {
388 Tagged<Object> return_value = isolate->stack_guard()->HandleInterrupts();
389 if (!IsUndefined(return_value, isolate)) {
394 isolate->tiering_manager()->OnInterruptTick(function, code_kind);
395 return ReadOnlyRoots(isolate).undefined_value();
400 HandleScope scope(isolate);
402 DirectHandle<JSFunction> function =
args.at<JSFunction>(0);
403 function->TraceOptimizationStatus(
"budget from %s",
405 TRACE_EVENT0(
"v8.execute",
"V8.BytecodeBudgetInterrupt");
407 isolate->tiering_manager()->OnInterruptTick(function, code_kind);
408 return ReadOnlyRoots(isolate).undefined_value();
414 return BytecodeBudgetInterruptWithStackCheck(isolate,
args,
415 CodeKind::INTERPRETED_FUNCTION);
419 return BytecodeBudgetInterrupt(isolate,
args, CodeKind::INTERPRETED_FUNCTION);
423 return BytecodeBudgetInterruptWithStackCheck(isolate,
args,
428 return BytecodeBudgetInterrupt(isolate,
args, CodeKind::BASELINE);
432 return BytecodeBudgetInterrupt(isolate,
args, CodeKind::MAGLEV);
436 return BytecodeBudgetInterruptWithStackCheck(isolate,
args, CodeKind::MAGLEV);
441 DCHECK(isolate->IsOnCentralStack());
445 int flags =
args.smi_value_at(1);
460 return *isolate->factory()->NewFillerObject(size, alignment,
470 int flags =
args.smi_value_at(1);
481 return *isolate->factory()->NewFillerObject(
488 int length =
args.smi_value_at(0);
490 return *isolate->factory()->NewByteArray(length);
503 int message_id_smi =
args.smi_value_at(0);
513 return isolate->Throw(
521 return isolate->Throw(
539 NewTypeError(MessageTemplate::kDerivedConstructorReturnedNonObject));
554 int counter =
args.smi_value_at(0);
566 MessageTemplate::kInvalid,
567 isolate->factory()->NewStringFromAsciiChecked(
"Runtime Call"),
568 isolate->factory()->NewStringFromAsciiChecked(
569 "V8 was not built with v8_enable_builtins_profiling=true")));
572 std::stringstream stats_stream;
575 isolate->factory()->NewStringFromAsciiChecked(stats_stream.str().c_str());
583#ifdef V8_RUNTIME_CALL_STATS
586 isolate, NewTypeError(MessageTemplate::kInvalid,
587 isolate->factory()->NewStringFromAsciiChecked(
589 isolate->factory()->NewStringFromAsciiChecked(
590 "--runtime-call-stats is not set")));
594 isolate->counters()->worker_thread_runtime_call_stats()->AddToMainTable(
595 isolate->counters()->runtime_call_stats());
597 if (
args.length() == 0) {
599 std::stringstream stats_stream;
600 isolate->counters()->runtime_call_stats()->Print(stats_stream);
602 stats_stream.str().c_str());
603 isolate->counters()->runtime_call_stats()->Reset();
608 if (IsString(
args[0])) {
611 f = std::fopen(
filename->ToCString().get(),
"a");
615 int fd =
args.smi_value_at(0);
616 DCHECK(fd == 1 || fd == 2);
617 f = fd == 1 ? stdout : stderr;
620 if (
args.length() >= 2) {
627 isolate->counters()->runtime_call_stats()->Print(stats_stream);
628 isolate->counters()->runtime_call_stats()->Reset();
629 if (IsString(
args[0])) {
637 isolate, NewTypeError(MessageTemplate::kInvalid,
638 isolate->factory()->NewStringFromAsciiChecked(
640 isolate->factory()->NewStringFromAsciiChecked(
641 "RCS was disabled at compile-time")));
666 return *isolate->factory()->ToBoolean(
678 isolate, NewTypeError(MessageTemplate::kSymbolIteratorInvalid));
685 isolate->factory()->next_string()));
687 return *isolate->factory()->NewJSAsyncFromSyncIterator(sync_iterator, next);
696 int slot_id =
args.smi_value_at(2);
699 isolate->context()->native_context(), isolate);
713 DCHECK(!isolate->has_exception());
714 isolate->set_exception(*exception);
717 isolate->CreateMessageOrAbort(exception, no_location);
719 isolate->clear_exception();
737 double number =
args.number_value_at(0);
745 isolate->factory()->NewStringFromAsciiChecked(str);
756 return *shared_value;
762 auto const_tracking_let_cell =
765 isolate, *const_tracking_let_cell,
static constexpr T decode(U value)
static V8_EXPORT_PRIVATE BasicBlockProfiler * Get()
V8_EXPORT_PRIVATE void Log(Isolate *isolate, std::ostream &os)
V8_EXPORT_PRIVATE void ResetCounts(Isolate *isolate)
static bool AllowDynamicFunction(Isolate *isolate, DirectHandle< JSFunction > target, DirectHandle< JSObject > target_global_proxy)
@ kScriptContextSlotPropertyChangedGroup
static void DeoptimizeDependencyGroups(Isolate *isolate, ObjectT object, DependencyGroups groups)
static Tagged< Object > ThrowLoadFromNullOrUndefined(Isolate *isolate, DirectHandle< Object > object, MaybeDirectHandle< Object > key)
static DirectHandle< JSObject > NewCalledNonCallableError(Isolate *isolate, DirectHandle< Object > source)
static DirectHandle< JSObject > NewIteratorError(Isolate *isolate, DirectHandle< Object > source)
static Tagged< Object > ThrowSpreadArgError(Isolate *isolate, MessageTemplate id, DirectHandle< Object > object)
static DirectHandle< JSObject > NewConstructedNonConstructable(Isolate *isolate, DirectHandle< Object > source)
static void TypeAndSizeForElementsKind(ElementsKind kind, ExternalArrayType *array_type, size_t *element_size)
static Handle< Object > GetDataProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static V8_EXPORT_PRIVATE void ReportMessage(Isolate *isolate, const MessageLocation *loc, DirectHandle< JSMessageObject > message)
static V8_WARN_UNUSED_RESULT MaybeHandle< Object > OrdinaryHasInstance(Isolate *isolate, DirectHandle< JSAny > callable, DirectHandle< JSAny > object)
static Handle< String > TypeOf(Isolate *isolate, DirectHandle< Object > object)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< FixedArray > CreateListFromArrayLike(Isolate *isolate, DirectHandle< Object > object, ElementTypes element_types)
static V8_EXPORT_PRIVATE bool ToInt32(Tagged< Object > obj, int32_t *value)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeHandle< Object > GetProperty(LookupIterator *it, bool is_global_reference=false)
static HandleType< Object >::MaybeType ShareSlow(Isolate *isolate, HandleType< HeapObject > value, ShouldThrow throw_if_cannot_be_shared)
static constexpr Tagged< Smi > FromInt(int value)
V8_EXPORT_PRIVATE void PrintOn(FILE *out)
static DirectHandle< JSArray > GetTemplateObject(Isolate *isolate, DirectHandle< NativeContext > native_context, DirectHandle< TemplateObjectDescription > description, DirectHandle< SharedFunctionInfo > shared_info, int slot_id)
#define ALIGN_TO_ALLOCATION_ALIGNMENT(value)
#define RAB_GSAB_TYPED_ARRAYS_WITH_TYPED_ARRAY_TYPE(V)
#define RUNTIME_FUNCTION(Name)
#define ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, dst, call)
#define THROW_NEW_ERROR_RETURN_FAILURE(isolate, call)
#define RETURN_FAILURE_ON_EXCEPTION(isolate, call)
#define RETURN_RESULT_OR_FAILURE(isolate, call)
base::Vector< const DirectHandle< Object > > args
ZoneVector< RpoNumber > & result
constexpr Vector< T > ArrayVector(T(&arr)[N])
constexpr Vector< T > VectorOf(T *start, size_t size)
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
MessageTemplate MessageTemplateFromInt(int message_id)
bool TryCast(Tagged< From > value, Tagged< To > *out)
constexpr int kTaggedSize
const char * CodeKindToString(CodeKind kind)
ShouldThrow GetShouldThrow(Isolate *isolate, Maybe< ShouldThrow > should_throw)
constexpr int kDoubleToRadixMaxChars
V8_EXPORT_PRIVATE FlagValues v8_flags
std::string_view DoubleToRadixStringView(double value, int radix, base::Vector< char > buffer)
Arguments< ArgumentsType::kRuntime > RuntimeArguments
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset IsNull(value)||IsJSProxy(value)||IsWasmObject(value)||(IsJSObject(value) &&(HeapLayout
!IsContextMap !IsContextMap native_context
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define ELEMENTS_KIND_CASE(Type, type, TYPE, ctype)
#define DCHECK_LE(v1, v2)
#define CHECK_GT(lhs, rhs)
#define DCHECK_NOT_NULL(val)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)
constexpr bool IsAligned(T value, U alignment)
#define TRACE_EVENT0(category_group, name)