35 return ReadOnlyRoots(isolate).undefined_value();
38struct WasmCompileControls {
42using WasmCompileControlsMap = std::map<v8::Isolate*, WasmCompileControls>;
48 GetPerIsolateWasmControls)
55 const WasmCompileControls& ctrls = GetPerIsolateWasmControls()->at(isolate);
56 return (is_async && ctrls.AllowAnySizeForAsync) ||
58 ctrls.MaxWasmBufferSize) ||
59 (value->IsArrayBufferView() &&
61 ctrls.MaxWasmBufferSize);
70 const WasmCompileControls& ctrls = GetPerIsolateWasmControls()->at(isolate);
71 if (is_async && ctrls.AllowAnySizeForAsync)
return true;
72 if (!module_or_bytes->IsWasmModuleObject()) {
73 return IsWasmCompileAllowed(isolate, module_or_bytes, is_async);
77 return static_cast<uint32_t
>(
78 module->GetCompiledModule().GetWireBytesRef().size()) <=
79 ctrls.MaxWasmBufferSize;
83 const char* message) {
86 reinterpret_cast<const uint8_t*
>(message))
90void ThrowRangeException(
v8::Isolate* isolate,
const char* message) {
91 isolate->ThrowException(NewRangeException(isolate, message));
96 if (IsWasmCompileAllowed(info.GetIsolate(), info[0],
false))
return false;
97 ThrowRangeException(info.GetIsolate(),
"Sync compile not allowed");
103 if (IsWasmInstantiateAllowed(info.GetIsolate(), info[0],
false))
return false;
104 ThrowRangeException(info.GetIsolate(),
"Sync instantiate not allowed");
115 return CrashUnlessFuzzing(isolate);
118 int block_size =
args.smi_value_at(0);
121 WasmCompileControls& ctrl = (*GetPerIsolateWasmControls())[v8_isolate];
122 ctrl.AllowAnySizeForAsync = allow_async;
123 ctrl.MaxWasmBufferSize =
static_cast<uint32_t
>(block_size);
137void PrintIndentation(
int stack_size) {
138 const int max_display = 80;
139 if (stack_size <= max_display) {
140 PrintF(
"%4d:%*s", stack_size, stack_size,
"");
142 PrintF(
"%4d:%*s", stack_size, max_display,
"...");
146int WasmStackSize(Isolate* isolate) {
150 for (DebuggableStackFrameIterator it(isolate); !it.done(); it.Advance()) {
151 if (it.is_wasm()) n++;
160 if (
args.length() != 1 || !IsWasmInstanceObject(
args[0])) {
161 return CrashUnlessFuzzing(isolate);
173 int import_count = dispatch_table->length();
175 for (
int i = 0;
i < import_count; ++
i) {
181 int table_count = dispatch_tables->length();
182 for (
int table_index = 0; table_index < table_count; ++table_index) {
183 if (dispatch_tables->get(table_index) ==
Smi::zero())
continue;
186 int table_size = table->length();
187 for (
int entry_index = 0; entry_index < table_size; ++entry_index) {
199 if (
args.length() != 1 || !IsJSFunction(
args[0])) {
200 return CrashUnlessFuzzing(isolate);
204 if (!sfi->HasWasmFunctionData())
return isolate->heap()->ToBoolean(
false);
210 return isolate->heap()->ToBoolean(
212 call_target, wrapper_entry));
217 if (
args.length() != 1) {
218 return CrashUnlessFuzzing(isolate);
222 return isolate->heap()->ToBoolean(
false);
226 wasm_js_function->shared()->wasm_js_function_data(), isolate);
235 Tagged<Code> wrapper = isolate->builtins()->code(Builtin::kJSToJSWrapper);
240 if (!wrapper.
SafeEquals(*external_function_code)) {
241 return isolate->heap()->ToBoolean(
false);
243 if (wrapper != *function_data_code) {
244 return isolate->heap()->ToBoolean(
false);
247 return isolate->heap()->ToBoolean(
true);
254 PrintIndentation(WasmStackSize(isolate));
261#if V8_ENABLE_DRUMBRAKE
262 DCHECK(!it.is_wasm_interpreter_entry());
264 WasmFrame* frame = WasmFrame::cast(it.frame());
267 int func_index = frame->function_index();
272 module->lazily_generated_names.LookupFunctionName(wire_bytes, func_index);
276 PrintF(code->is_liftoff() ?
"~" :
"*");
279 PrintF(
"wasm-function[%d] {\n", func_index);
281 PrintF(
"wasm-function[%d] \"%.*s\" {\n", func_index, name.length(),
294 PrintIndentation(WasmStackSize(isolate));
302#if V8_ENABLE_DRUMBRAKE
303 DCHECK(!it.is_wasm_interpreter_entry());
305 WasmFrame* frame = WasmFrame::cast(it.frame());
306 int func_index = frame->function_index();
313 if (num_returns == 1) {
315 switch (return_type.
kind()) {
319 PrintF(
" -> %d\n", value);
325 PrintF(
" -> %" PRId64
"\n", value);
330 PrintF(
" -> %f\n", value);
335 PrintF(
" -> %f\n", value);
339 PrintF(
" -> Unsupported type\n");
352 if (
args.length() != 1 || !IsJSFunction(
args[0])) {
353 return CrashUnlessFuzzing(isolate);
356 if (!function->shared()->HasAsmWasmData()) {
359 if (function->shared()->HasBuiltinId() &&
360 function->shared()->builtin_id() == Builtin::kInstantiateAsmJs) {
378 if (
args.length() != 1 || !IsBoolean(
args[0])) {
379 return CrashUnlessFuzzing(isolate);
384 flag ? DisallowWasmCodegenFromStringsCallback :
nullptr);
390 if (
args.length() != 1 || !IsJSFunction(
args[0])) {
391 return CrashUnlessFuzzing(isolate);
395 bool is_js_to_wasm = code->kind() == CodeKind::JS_TO_WASM_FUNCTION ||
396 (code->builtin_id() == Builtin::kJSToWasmWrapper);
397#if V8_ENABLE_DRUMBRAKE
403 (code->builtin_id() == Builtin::kGenericJSToWasmInterpreterWrapper);
405 return isolate->heap()->ToBoolean(is_js_to_wasm);
426 return *isolate->factory()->NewNumberFromSize(trap_count);
431 if (
args.length() != 2 || !IsWasmExceptionPackage(
args[0]) ||
432 !IsWasmInstanceObject(
args[1]) ||
434 ->trusted_data(isolate)
435 ->has_tags_table()) {
436 return CrashUnlessFuzzing(isolate);
446 CHECK(IsWasmExceptionTag(*tag));
448 for (
int index = 0; index < tags_table->length(); ++
index) {
449 if (tags_table->get(index) == *tag)
return Smi::FromInt(index);
451 return CrashUnlessFuzzing(isolate);
456 if (
args.length() != 1 || !IsWasmExceptionPackage(
args[0])) {
457 return CrashUnlessFuzzing(isolate);
463 if (!IsFixedArray(*values_obj)) {
465 return CrashUnlessFuzzing(isolate);
469 isolate->factory()->NewFixedArray(values->length());
470 for (
int i = 0;
i < values->
length();
i++) {
472 if (!
IsSmi(*value)) {
477 externalized_values->set(
i, *value);
479 return *isolate->factory()->NewJSArrayWithElements(externalized_values);
484 if (
args.length() != 1 || !IsWasmModuleObject(
args[0])) {
485 return CrashUnlessFuzzing(isolate);
490 DCHECK(!native_module->compilation_state()->failed());
497 ->NewJSArrayBufferAndBackingStore(byte_length,
502 {
static_cast<uint8_t*
>(array_buffer->backing_store()), byte_length});
504 return *array_buffer;
518 CHECK(!buffer->was_detached());
519 CHECK(!wire_bytes->WasDetached());
523 reinterpret_cast<const uint8_t*
>(wire_bytes_buffer->backing_store()) +
524 wire_bytes->byte_offset(),
525 wire_bytes->byte_length()};
527 reinterpret_cast<uint8_t*
>(buffer->backing_store()),
528 buffer->byte_length()};
535 compile_imports, {});
537 if (!maybe_module_object.
ToHandle(&module_object)) {
540 return *module_object;
545 if (
args.length() != 1 || !IsWasmModuleObject(
args[0])) {
546 return CrashUnlessFuzzing(isolate);
549 int instance_count = 0;
551 module_obj->script()->wasm_weak_instance_list();
552 for (
int i = 0;
i < weak_instance_list->length(); ++
i) {
553 if (weak_instance_list->Get(
i).
IsWeak()) instance_count++;
560 if (
args.length() != 1 || !IsJSObject(
args[0])) {
561 return CrashUnlessFuzzing(isolate);
565 if (IsWasmInstanceObject(*argument)) {
567 ->trusted_data(isolate)
569 }
else if (IsWasmModuleObject(*argument)) {
572 return CrashUnlessFuzzing(isolate);
575 return *isolate->factory()->NewNumberFromSize(num_spaces);
580template <
typename T1,
typename T2 = T1>
581void PrintRep(
Address address,
const char* str) {
584 if constexpr (std::is_floating_point_v<T1>) {
586 }
else if constexpr (
sizeof(
T1) >
sizeof(uint32_t)) {
592 if constexpr (
sizeof(
T1) >
sizeof(uint32_t)) {
593 PrintF(
" / %016" PRIx64
"\n", t2);
595 PrintF(
" / %0*x\n",
static_cast<int>(2 *
sizeof(
T2)), t2);
604 return CrashUnlessFuzzing(isolate);
617#if V8_ENABLE_DRUMBRAKE
618 DCHECK(!it.is_wasm_interpreter_entry());
620 WasmFrame* frame = WasmFrame::cast(it.frame());
622 PrintF(
"%-11s func:%6d:0x%-4x %s %016" PRIuPTR
" val: ",
623 ExecutionTierToString(frame->wasm_code()->is_liftoff()
626 frame->function_index(), frame->position(),
629 info->is_store ?
" store to" :
"load from", info->offset);
632 reinterpret_cast<Address>(frame->trusted_instance_data()
639 PrintRep<uint8_t>(address,
"i8");
642 PrintRep<uint16_t>(address,
"i16");
645 PrintRep<uint32_t>(address,
"i32");
648 PrintRep<uint64_t>(address,
"i64");
651 PrintRep<float, uint32_t>(address,
"f32");
654 PrintRep<double, uint64_t>(address,
"f64");
661 PrintF(
"s128:%u %u %u %u / %08x %08x %08x %08x\n", a, b, c, d, a, b, c,
677bool ValidateFunctionNowIfNeeded(
Isolate* isolate,
678 wasm::NativeModule* native_module,
680 const wasm::WasmModule* module = native_module->module();
681 if (module->function_was_validated(func_index))
return true;
684 wasm::WasmDetectedFeatures unused_detected_features;
685 const wasm::WasmFunction* func = &
module->functions[func_index];
686 bool is_shared =
module->type(func->sig_index).is_shared;
688 wasm::FunctionBody body{
689 func->sig, func->code.offset(), wire_bytes.
begin() + func->code.offset(),
691 if (ValidateFunctionBody(&validation_zone, native_module->enabled_features(),
692 module, &unused_detected_features, body)
696 module->set_function_validated(func_index);
705 if (
args.length() != 1 ||
707 return CrashUnlessFuzzing(isolate);
710 auto func_data = exp_fun->shared()->wasm_exported_function_data();
712 int func_index = func_data->function_index();
716 return CrashUnlessFuzzing(isolate);
718 if (!ValidateFunctionNowIfNeeded(isolate, native_module, func_index)) {
719 return CrashUnlessFuzzing(isolate);
729 if (
args.length() != 1 ||
731 return CrashUnlessFuzzing(isolate);
734 auto func_data = exp_fun->shared()->wasm_exported_function_data();
736 int func_index = func_data->function_index();
740 return CrashUnlessFuzzing(isolate);
742 if (!ValidateFunctionNowIfNeeded(isolate, native_module, func_index)) {
743 return CrashUnlessFuzzing(isolate);
758 if (module_bytes.
size() >
v8_flags.wasm_max_module_size) {
759 return CrashUnlessFuzzing(isolate);
767 &thrower, std::move(bytes));
770 if (!maybe_module_object.
ToHandle(&module_object)) {
771 DCHECK(isolate->has_exception());
776 engine->SyncInstantiate(isolate, &thrower, module_object,
781 if (!maybe_instance.
ToHandle(&instance)) {
782 DCHECK(isolate->has_exception());
788 instance->trusted_data(isolate)->managed_object_maps()->get(
792 instance->module()->struct_type(type_index);
795 return *isolate->factory()->NewWasmStruct(struct_type, &value,
798 DCHECK_EQ(instance->module()->array_type(type_index)->element_type(),
800 return *isolate->factory()->NewWasmArray(
wasm::kWasmI64, 1, value,
811 CHECK(IsJSReceiver(*obj));
830 static constexpr uint8_t wasm_module_bytes[] = {
831 0x00, 0x61, 0x73, 0x6d,
832 0x01, 0x00, 0x00, 0x00,
837 0x5f, 0x01, 0x7e, 0x00,
854 static constexpr uint8_t wasm_module_bytes[] = {
855 0x00, 0x61, 0x73, 0x6d,
856 0x01, 0x00, 0x00, 0x00,
880 if (
args.length() != 1 ||
882 return CrashUnlessFuzzing(isolate);
885 auto data = exp_fun->shared()->wasm_exported_function_data();
887 uint32_t func_index = data->function_index();
888 if (
static_cast<uint32_t
>(func_index) <
889 data->instance_data()->module()->num_imported_functions) {
890 return CrashUnlessFuzzing(isolate);
894 return isolate->heap()->ToBoolean(code && code->is_liftoff() &&
895 code->for_debugging());
900 if (
args.length() != 1 ||
902 return CrashUnlessFuzzing(isolate);
905 auto data = exp_fun->shared()->wasm_exported_function_data();
907 uint32_t func_index = data->function_index();
908 if (
static_cast<uint32_t
>(func_index) <
909 data->instance_data()->module()->num_imported_functions) {
910 return CrashUnlessFuzzing(isolate);
914 return isolate->heap()->ToBoolean(code && code->is_liftoff());
919 if (
args.length() != 1 ||
921 return CrashUnlessFuzzing(isolate);
924 auto data = exp_fun->shared()->wasm_exported_function_data();
926 uint32_t func_index = data->function_index();
927 if (
static_cast<uint32_t
>(func_index) <
928 data->instance_data()->module()->num_imported_functions) {
929 return CrashUnlessFuzzing(isolate);
933 return isolate->heap()->ToBoolean(code && code->is_turbofan());
938 if (
args.length() != 1 ||
940 return CrashUnlessFuzzing(isolate);
943 auto data = exp_fun->shared()->wasm_exported_function_data();
945 uint32_t func_index = data->function_index();
946 if (
static_cast<uint32_t
>(func_index) <
947 data->instance_data()->module()->num_imported_functions) {
948 return CrashUnlessFuzzing(isolate);
950 return isolate->heap()->ToBoolean(!native_module->
HasCode(func_index));
960 instance_object->module_object()->native_module()->set_lazy_compile_frozen(
968 if (
args.length() != 1) {
969 return CrashUnlessFuzzing(isolate);
986 return Smi::FromInt(
static_cast<int>(code_size + metadata_size));
1000 int count = isolate->counters()
1001 ->wasm_compiled_export_wrapper()
1002 ->GetInternalPointer()
1013 if (
args.length() != 1 ||
1015 return CrashUnlessFuzzing(isolate);
1018 auto func_data = exp_fun->shared()->wasm_exported_function_data();
1020 func_data->instance_data()->native_module()->module();
1021 uint32_t func_index = func_data->function_index();
1022 if (
static_cast<uint32_t
>(func_index) <
1023 func_data->instance_data()->module()->num_imported_functions) {
1024 return CrashUnlessFuzzing(isolate);
1028 auto entry = feedback.deopt_count_for_function.find(func_index);
1029 if (entry == feedback.deopt_count_for_function.end()) {
1036 int count = isolate->wasm_switch_to_the_central_stack_counter();
1044 CHECK(isolate->IsOnCentralStack());
1053 return CrashUnlessFuzzing(isolate);
1065 module->has_type(type_index)
1066 ? wasm::ValueType::Ref(module->heap_type(type_index))
1067 : wasm::ValueType::Ref(type_index, false, wasm::RefTypeKind::kStruct);
1074#ifdef V8_WASM_RANDOM_FUZZERS
1077 return CrashUnlessFuzzing(isolate);
1079 HandleScope scope{isolate};
1080 Zone temporary_zone{isolate->allocator(),
"WasmGenerateRandomModule"};
1081 constexpr size_t kMaxInputBytes = 512;
1082 ZoneVector<uint8_t> input_bytes{&temporary_zone};
1083 auto add_input_bytes = [&input_bytes](
void* bytes,
size_t max_bytes) {
1084 size_t num_bytes = std::min(kMaxInputBytes - input_bytes.size(), max_bytes);
1085 input_bytes.resize(input_bytes.size() + num_bytes);
1086 memcpy(input_bytes.end() - num_bytes, bytes, num_bytes);
1088 if (
args.length() == 0) {
1092 1 + isolate->random_number_generator()->NextInt(kMaxInputBytes);
1093 input_bytes.resize(num_bytes);
1094 isolate->random_number_generator()->NextBytes(input_bytes.data(),
1098 if (IsJSTypedArray(
args[
i])) {
1100 add_input_bytes(typed_array->DataPtr(), typed_array->GetByteLength());
1101 }
else if (IsJSArrayBuffer(
args[
i])) {
1103 add_input_bytes(array_buffer->backing_store(),
1104 array_buffer->GetByteLength());
1107 add_input_bytes(&smi_value,
kIntSize);
1108 }
else if (IsHeapNumber(
args[
i])) {
1119 constexpr auto kAllOptions =
1120 wasm::fuzzing::WasmModuleGenerationOptions::All();
1121 constexpr auto kNoSimdOptions = wasm::fuzzing::WasmModuleGenerationOptions{
1122 {wasm::fuzzing::WasmModuleGenerationOption::kGenerateWasmGC}};
1125 wasm::fuzzing::WasmModuleGenerationOptions{
1126 {wasm::fuzzing::WasmModuleGenerationOption::kGenerateSIMD}}) ==
1131 base::Vector<const uint8_t> module_bytes =
1137 if (module_bytes.size() >
v8_flags.wasm_max_module_size) {
1138 return CrashUnlessFuzzing(isolate);
1141 wasm::ErrorThrower thrower{
isolate,
"WasmGenerateRandomModule"};
1142 MaybeDirectHandle<WasmModuleObject> maybe_module_object =
1145 wasm::CompileTimeImports{}, &thrower,
1147 if (thrower.error()) {
1149 "wasm::GenerateRandomWasmModule produced a module which did not "
1151 thrower.error_msg());
1153 return *maybe_module_object.ToHandleChecked();
size_t ByteLength() const
static Local< Value > RangeError(Local< String > message, Local< Value > options={})
void SetAllowWasmCodeGenerationCallback(AllowWasmCodeGenerationCallback callback)
void SetWasmInstanceCallback(ExtensionCallback callback)
void SetWasmModuleCallback(ExtensionCallback callback)
void SetWasmImportedStringsEnabledCallback(WasmImportedStringsEnabledCallback callback)
static V8_INLINE Local< T > Cast(Local< S > that)
static V8_WARN_UNUSED_RESULT MaybeLocal< String > NewFromOneByte(Isolate *isolate, const uint8_t *data, NewStringType type=NewStringType::kNormal, int length=-1)
constexpr size_t size() const
constexpr T * begin() const
static Address EntryOf(Builtin builtin, Isolate *isolate)
static V8_WARN_UNUSED_RESULT Maybe< bool > SetIntegrityLevel(Isolate *isolate, DirectHandle< JSReceiver > object, IntegrityLevel lvl, ShouldThrow should_throw)
V8_WARN_UNUSED_RESULT V8_INLINE bool ToHandle(DirectHandle< S > *out) const
static V8_EXPORT_PRIVATE bool BooleanValue(Tagged< Object > obj, IsolateT *isolate)
size_t return_count() const
static constexpr Tagged< Smi > FromInt(int value)
static constexpr Tagged< Smi > zero()
V8_INLINE constexpr StorageType ptr() const
constexpr bool SafeEquals(TaggedImpl< kOtherRefType, StorageType > other) const
constexpr bool IsWeak() const
static DirectHandle< Object > GetExceptionValues(Isolate *isolate, DirectHandle< WasmExceptionPackage > exception_package)
static DirectHandle< Object > GetExceptionTag(Isolate *isolate, DirectHandle< WasmExceptionPackage > exception_package)
static V8_EXPORT_PRIVATE bool IsWasmExportedFunction(Tagged< Object > object)
static V8_EXPORT_PRIVATE DirectHandle< JSFunction > GetOrCreateExternal(DirectHandle< WasmInternalFunction > internal)
static bool IsWasmJSFunction(Tagged< Object > object)
WasmCode * GetCode(uint32_t index) const
const WasmModule * module() const
bool HasCode(uint32_t index) const
size_t GetNumberOfCodeSpacesForTesting() const
uint32_t field_count() const
ValueType field(uint32_t index) const
constexpr ValueKind kind() const
static const int kNumIndexBits
bool EntrypointEqualTo(WasmCodePointer index, Address address)
static V8_EXPORT_PRIVATE WasmEnabledFeatures FromFlags()
void TriggerCodeGCForTesting()
MaybeDirectHandle< WasmModuleObject > SyncCompile(Isolate *isolate, WasmEnabledFeatures enabled, CompileTimeImports compile_imports, ErrorThrower *thrower, base::OwnedVector< const uint8_t > bytes)
int GetDeoptsExecutedCount() const
void EnterDebuggingForIsolate(Isolate *isolate)
size_t EstimateCurrentMemoryConsumption() const
void LeaveDebuggingForIsolate(Isolate *isolate)
std::pair< size_t, size_t > FlushLiftoffCode()
size_t GetSerializedNativeModuleSize() const
bool SerializeNativeModule(base::Vector< uint8_t > buffer) const
#define RUNTIME_FUNCTION(Name)
#define MAYBE_RETURN(call, value)
base::Vector< const DirectHandle< Object > > args
ZoneVector< RpoNumber > & result
#define DEFINE_LAZY_LEAKY_OBJECT_GETTER(T, FunctionName,...)
#define LAZY_MUTEX_INITIALIZER
static V ReadUnalignedValue(Address p)
constexpr Vector< T > VectorOf(T *start, size_t size)
static V ReadLittleEndianValue(Address p)
OwnedVector< T > OwnedCopyOf(const T *data, size_t size)
LockGuard< Mutex > MutexGuard
LazyStaticInstance< Mutex, DefaultConstructTrait< Mutex >, ThreadSafeInitOnceTrait >::type LazyMutex
bool IsTrapHandlerEnabled()
size_t GetRecoveredTrapCount()
TH_DISABLE_ASAN bool IsThreadInWasm()
base::Vector< uint8_t > GenerateRandomWasmModule(Zone *zone, WasmModuleGenerationOptions options, base::Vector< const uint8_t > data)
bool CheckHardwareSupportsSimd()
V8_EXPORT_PRIVATE WasmCodePointerTable * GetProcessWideWasmCodePointerTable()
void TierUpNowForTesting(Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data, int func_index)
void TriggerTierUp(Isolate *isolate, Tagged< WasmTrustedInstanceData > trusted_instance_data, int func_index)
constexpr WasmCodePointer kInvalidWasmCodePointer
MaybeDirectHandle< WasmModuleObject > DeserializeNativeModule(Isolate *isolate, base::Vector< const uint8_t > data, base::Vector< const uint8_t > wire_bytes_vec, const CompileTimeImports &compile_imports, base::Vector< const char > source_url)
WasmEngine * GetWasmEngine()
constexpr bool kPartialOOBWritesAreNoops
constexpr IndependentValueType kWasmI64
DirectHandle< Object > WasmToJSObject(Isolate *isolate, DirectHandle< Object > value)
void PrintF(const char *format,...)
Tagged(T object) -> Tagged< T >
V8_INLINE constexpr bool IsSmi(TaggedImpl< kRefType, StorageType > obj)
V8_INLINE DirectHandle< T > direct_handle(Tagged< T > object, Isolate *isolate)
kWasmInternalFunctionIndirectPointerTag kProtectedInstanceDataOffset sig
bool V8_EXPORT ValidateCallbackInfo(const FunctionCallbackInfo< void > &info)
static Tagged< Object > CreateDummyWasmLookAlikeForFuzzing(Isolate *isolate)
V8_EXPORT_PRIVATE FlagValues v8_flags
constexpr bool kAllCodeObjectsLiveInTrustedSpace
constexpr int kDoubleSize
JSArrayBuffer::IsDetachableBit is_shared
kMemory0SizeOffset Address kNewAllocationLimitAddressOffset Address kOldAllocationLimitAddressOffset uint8_t kGlobalsStartOffset kJumpTableStartOffset std::atomic< uint32_t > kTieringBudgetArrayOffset kDataSegmentStartsOffset kElementSegmentsOffset instance_object
static Tagged< Object > CreateWasmObject(Isolate *isolate, base::Vector< const uint8_t > module_bytes, bool is_struct)
static bool IsZero(const Operand &rt)
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
bool(*)(Local< Context > context) WasmImportedStringsEnabledCallback
bool AllowAnySizeForAsync
uint32_t MaxWasmBufferSize
#define DCHECK_IMPLIES(v1, v2)
#define CHECK_EQ(lhs, rhs)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define DCHECK_GT(v1, v2)
WasmName GetNameOrNull(WireBytesRef ref) const
uint32_t num_imported_functions
#define T1(name, string, precedence)
#define T2(name, string, precedence)
#define V8_WARN_UNUSED_RESULT