24#define RETURN_IF_ERROR(handle) \
26 Dart_Handle __handle = handle; \
27 if (Dart_IsError((__handle))) { \
51 {0x23, 0x40, 0x64, 0x69, 0x6c, 0x6c, 0x0a}};
55#if defined(DART_HOST_OS_WINDOWS)
70 return dart_arguments;
72 for (
int i = 0; i < count_; i++) {
75 return argument_value;
82 return dart_arguments;
113 return static_cast<intptr_t
>(
value);
124 if (!valid)
return false;
133 const char* cstring =
nullptr;
176 return static_cast<intptr_t
>(
value);
187 if (tmp !=
nullptr) {
190 const char* cstring =
nullptr;
195 ASSERT(cstring !=
nullptr);
204 return data.GetScopedCString();
220 static const intptr_t kDartSchemeLen = strlen(
kDartScheme);
223 return (strncmp(url_name,
kDartScheme, kDartSchemeLen) == 0);
227 static const intptr_t kHttpSchemeLen = strlen(
kHttpScheme);
228 return (strncmp(url_name,
kHttpScheme, kHttpSchemeLen) == 0);
232 return (strcmp(url_name,
kIOLibURL) == 0);
248 const char* colon = strchr(url,
':');
249 if (colon ==
nullptr) {
258 if (slash ==
nullptr) {
268 return reinterpret_cast<void*
>(file);
274 return reinterpret_cast<void*
>(file);
280 ASSERT(stream !=
nullptr);
281 File* file_stream =
reinterpret_cast<File*
>(stream);
282 int64_t file_len = file_stream->
Length();
283 if ((file_len < 0) || (file_len >
kIntptrMax)) {
288 *len =
static_cast<intptr_t
>(file_len);
289 *
data =
reinterpret_cast<uint8_t*
>(
malloc(*len));
301 ASSERT(stream !=
nullptr);
302 File* file_stream =
reinterpret_cast<File*
>(stream);
308 File* file =
reinterpret_cast<File*
>(stream);
319 const int kNumArgs = 1;
327#define SET_ERROR_MSG(error_msg, format, ...) \
328 intptr_t len = snprintf(nullptr, 0, format, __VA_ARGS__); \
329 char* msg = reinterpret_cast<char*>(malloc(len + 1)); \
330 snprintf(msg, len + 1, format, __VA_ARGS__); \
335 const char** error_msg) {
338 if (stream ==
nullptr) {
339 SET_ERROR_MSG(error_msg,
"Unable to open file: %s", filename);
342 uint8_t* text_buffer =
nullptr;
344 if (text_buffer ==
nullptr || *file_len == -1) {
345 *error_msg =
"Unable to read file contents";
346 text_buffer =
nullptr;
353 const char* error_msg =
nullptr;
355 uint8_t* text_buffer =
ReadFileFully(filename, &len, &error_msg);
356 if (text_buffer ==
nullptr) {
376 ASSERT(td_data !=
nullptr);
377 memmove(td_data,
buffer, td_len);
391 const int kNumArgs = 1;
395 NewString(
"_resolveScriptUri"), kNumArgs, dart_args);
399 intptr_t buffer_length,
401 if ((buffer_length >= magic_number.
length)) {
423 if (file !=
nullptr) {
435 intptr_t buffer_length) {
493 bool is_service_isolate,
494 bool trace_loading) {
503 if (!is_service_isolate) {
514 result = SetWorkingDirectory();
522 bool is_service_isolate) {
523 if (!is_service_isolate) {
542 args[0] = schedule_immediate_closure;
562 if (packages_config !=
nullptr) {
565 const int kNumArgs = 1;
569 NewString(
"_setPackagesMap"), kNumArgs, dart_args);
575 bool trace_loading) {
609 result = PrepareBuiltinLibrary(builtin_lib, internal_lib, is_service_isolate,
614 RETURN_IF_ERROR(PrepareCoreLibrary(core_lib, io_lib, is_service_isolate));
622 const char* script_uri,
629 if (namespc_path !=
nullptr) {
665 NewString(
"_registerServiceExtension"), 0,
nullptr);
678 int32_t
min = 0xc0000000;
679 int32_t
max = 0x3fffffff;
683 object.value.as_int32 =
value;
691 object.value.as_int64 =
value;
723 const char* exception_name,
736 const char* exception_name,
771 va_list measure_args;
799 va_list measure_args;
800 va_copy(measure_args,
args);
810 va_copy(print_args,
args);
850 char* name_chars =
reinterpret_cast<char*
>(
malloc(utf8_len + 1));
851 memmove(name_chars, utf8_array, utf8_len);
852 name_chars[utf8_len] =
'\0';
853 const char*
value =
nullptr;
854 if (environment_ !=
nullptr) {
858 if (entry !=
nullptr) {
859 value =
reinterpret_cast<char*
>(entry->
value);
862 if (
value !=
nullptr) {
898 return value ? &true_ : &false_;
934 intptr_t
length = strlen(str);
936 char* payload =
reinterpret_cast<char*
>(cobject + 1);
937 memmove(payload, str,
length + 1);
953 memmove(
reinterpret_cast<uint8_t*
>(cobject + 1),
data,
length);
957 reinterpret_cast<const uint8_t*
>(cobject + 1);
992 if (
data ==
nullptr) {
1000 if (cobject ==
nullptr)
return;
1007 ASSERT(0 <= new_length && new_length <= old_length);
1012 const auto free_memory = old_length - new_length;
1013 if ((old_length >> 2) <= free_memory && 100 <= free_memory) {
1015 if (new_data !=
nullptr) {
1055 result->SetAt(2, error_message);
Entry * Lookup(void *key, uint32_t hash, bool insert)
static uint32_t StringHash(const char *key)
static char * StrDup(const char *s)
static int static int VSNPrint(char *str, size_t size, const char *format, va_list args)
static char * StrNDup(const char *s, intptr_t n)
static Dart_Handle LoadAndCheckLibrary(BuiltinLibraryId id)
static void SetNativeResolver(BuiltinLibraryId id)
static Dart_CObject * NewString(const char *str)
static CObject * IllegalArgumentError()
static CObject * FileClosedError()
static Dart_CObject * NewExternalUint8Array(intptr_t length, uint8_t *data, void *peer, Dart_HandleFinalizer callback)
static void FreeIOBufferData(Dart_CObject *object)
static Dart_CObject * NewIntptr(intptr_t value)
static constexpr int kOSError
static constexpr int kFileClosedError
static Dart_CObject * NewIOBuffer(int64_t length)
static CObject * Bool(bool value)
static Dart_CObject * NewArray(intptr_t length)
static Dart_CObject * NewUint8Array(const void *data, intptr_t length)
static constexpr int kArgumentError
static Dart_CObject * NewNativePointer(intptr_t ptr, intptr_t size, Dart_HandleFinalizer callback)
static Dart_CObject * NewInt32(int32_t value)
static Dart_CObject * NewInt64(int64_t value)
static Dart_CObject * NewDouble(double value)
static CObject * NewOSError()
static void ShrinkIOBuffer(Dart_CObject *cobject, int64_t new_length)
Dart_Handle CreateRuntimeOptions()
const char * GetArgument(int index) const
static bool GetRandomBytes(intptr_t count, uint8_t *buffer)
static constexpr const char * kDartScheme
static constexpr const char * kCLILibURL
static int64_t GetNativeIntegerArgument(Dart_NativeArguments args, intptr_t index)
static Dart_Handle NewDartFormatException(const char *message)
static char static char * ScopedCStringVFormatted(const char *format, va_list args)
static int64_t GetIntegerValue(Dart_Handle value_obj)
static Dart_Handle SetupPackageConfig(const char *packages_file)
static int64_t GetInt64ValueCheckRange(Dart_Handle value_obj, int64_t lower, int64_t upper)
static Dart_Handle NewDartExceptionWithMessage(const char *library_url, const char *exception_name, const char *message)
static Dart_Handle LookupBuiltinLib()
static constexpr const char * kIOLibURL
static const char * GetNativeTypedDataArgument(Dart_NativeArguments args, intptr_t index)
static Dart_Handle NewDartOSError()
static constexpr const char * kAsyncLibURL
static constexpr const char * kIsolateLibURL
static char * DirName(const char *url)
static void ReadFile(uint8_t **data, intptr_t *file_len, void *stream)
static Dart_Handle ReadStringFromFile(const char *filename)
static bool GetBooleanValue(Dart_Handle bool_obj)
static bool GetInt64Value(Dart_Handle value_obj, int64_t *value)
static bool IsHttpSchemeURL(const char *url_name)
static const char * GetStringValue(Dart_Handle str_obj)
static void * OpenFileUri(const char *uri, bool write)
static Dart_Handle NewDartExceptionWithOSError(const char *library_url, const char *exception_name, const char *message, Dart_Handle os_error)
static Dart_Handle MakeUint8Array(const void *buffer, intptr_t length)
static bool IsDartBuiltinLibURL(const char *url_name)
static constexpr const char * kInternalLibURL
static Dart_Handle SetupIOLibrary(const char *namespc_path, const char *script_uri, bool disable_exit)
static bool PostInt32(Dart_Port port_id, int32_t value)
static Dart_Handle NewStringFormatted(const char *format,...)
static const char * original_working_directory
static bool SetOriginalWorkingDirectory()
static bool PostNull(Dart_Port port_id)
static Dart_Handle NewError(const char *format,...)
static char * ScopedCStringFormatted(const char *format,...) PRINTF_ATTRIBUTE(1
static bool EntropySource(uint8_t *buffer, intptr_t length)
static Dart_Handle EnvironmentCallback(Dart_Handle name)
static Dart_Handle NewDartIOException(const char *exception_name, const char *message, Dart_Handle os_error)
static bool PostString(Dart_Port port_id, const char *value)
static constexpr const char * kHttpLibURL
static constexpr const char * kCoreLibURL
static bool PostInt64(Dart_Port port_id, int64_t value)
static Dart_Handle NewDartUnsupportedError(const char *message)
static intptr_t GetNativeIntptrArgument(Dart_NativeArguments args, intptr_t index)
static char * ScopedCString(intptr_t length)
static Dart_Handle NewString(const char *str)
static Dart_Handle PrepareForScriptLoading(bool is_service_isolate, bool trace_loading)
static void SetEnvironment(dart::SimpleHashMap *environment)
static Dart_Handle SetIntegerField(Dart_Handle handle, const char *name, int64_t val)
static void CloseFile(void *stream)
static Dart_Handle NewDartArgumentError(const char *message)
static MagicNumber SniffForMagicNumber(const char *filename)
static void * OpenFile(const char *name, bool write)
static Dart_Handle NewInternalError(const char *message)
static const char * RemoveScheme(const char *url)
static bool IsDartCLILibURL(const char *url_name)
static constexpr const char * kBuiltinLibURL
static bool IsDartSchemeURL(const char *url_name)
static Dart_Handle SetStringField(Dart_Handle handle, const char *name, const char *val)
static bool IsDartHttpLibURL(const char *url_name)
static constexpr int64_t kMaxMagicNumberSize
static Dart_Handle ResolveScript(Dart_Handle url)
static bool IsDartIOLibURL(const char *url_name)
static Dart_Handle GetDartType(const char *library_url, const char *class_name)
static intptr_t GetIntptrValue(Dart_Handle value_obj)
static constexpr const char * kHttpScheme
static const char * GetNativeStringArgument(Dart_NativeArguments args, intptr_t index)
static void WriteFile(const void *buffer, intptr_t num_bytes, void *stream)
static bool GetNativeBooleanArgument(Dart_NativeArguments args, intptr_t index)
@ kAotCoffARM64MagicNumber
@ kAotMachO64Arm64MagicNumber
@ kAotCoffRISCV64MagicNumber
@ kAotCoffARM32MagicNumber
@ kAotCoffRISCV32MagicNumber
static char * CurrentNoScope()
static File * OpenUri(Namespace *namespc, const char *uri, FileOpenMode mode)
static const char * PathSeparator()
bool WriteFully(const void *buffer, int64_t num_bytes)
bool ReadFully(void *buffer, int64_t num_bytes)
static File * Open(Namespace *namespc, const char *path, FileOpenMode mode)
static Type GetType(Namespace *namespc, const char *path, bool follow_links)
static void Finalizer(void *isolate_callback_data, void *buffer)
static Dart_Handle Allocate(intptr_t size, uint8_t **buffer)
static uint8_t * Reallocate(uint8_t *buffer, intptr_t new_size)
struct _Dart_Handle * Dart_Handle
void(* Dart_HandleFinalizer)(void *isolate_callback_data, void *peer)
struct _Dart_NativeArguments * Dart_NativeArguments
@ Dart_CObject_kNativePointer
@ Dart_CObject_kTypedData
@ Dart_CObject_kExternalTypedData
#define SET_ERROR_MSG(error_msg, format,...)
#define RETURN_IF_ERROR(handle)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
FlKeyEvent uint64_t FlKeyResponderAsyncCallback callback
static const uint8_t buffer[]
uint32_t uint32_t * format
static float max(float r, float g, float b)
static float min(float r, float g, float b)
#define MSAN_UNPOISON(ptr, len)
MagicNumberData gzip_magic_number
MagicNumberData aotcoff_riscv32_magic_number
MagicNumberData appjit_magic_number
static void * GetHashmapKeyFromString(char *key)
MagicNumberData aotmacho32_magic_number
static uint8_t * ReadFileFully(const char *filename, intptr_t *file_len, const char **error_msg)
CObject CObject::false_ & api_false_
MagicNumberData aotmacho64_magic_number
static Dart_Handle SingleArgDart_Invoke(Dart_Handle lib, const char *method, Dart_Handle arg)
MagicNumberData kernel_list_magic_number
MagicNumberData aotelf_magic_number
CObject CObject::true_ & api_true_
static bool CheckMagicNumber(const uint8_t *buffer, intptr_t buffer_length, const MagicNumberData &magic_number)
MagicNumberData aotcoff_riscv64_magic_number
CObject CObject::null_ & api_null_
MagicNumberData kernel_magic_number
static bool IsWindowsHost()
MagicNumberData aotcoff_arm64_magic_number
MagicNumberData aotcoff_arm32_magic_number
MagicNumberData aotmacho64_arm64_magic_number
static dart::SimpleHashMap * environment
DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str, uint8_t **utf8_array, intptr_t *length)
DART_EXPORT Dart_Handle Dart_GetNativeStringArgument(Dart_NativeArguments args, int arg_index, void **peer)
DART_EXPORT Dart_Handle Dart_FinalizeLoading(bool complete_futures)
DART_EXPORT Dart_Handle Dart_False()
DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, Dart_Handle name, int number_of_arguments, Dart_Handle *arguments)
DART_EXPORT Dart_Handle Dart_True()
void * malloc(size_t size)
const char *const class_name
constexpr intptr_t kIntptrMin
DART_EXPORT Dart_Handle Dart_NewInteger(int64_t value)
DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj, bool *value)
DART_EXPORT Dart_Handle Dart_NewStringFromUTF8(const uint8_t *utf8_array, intptr_t length)
DART_EXPORT void Dart_PropagateError(Dart_Handle handle)
DART_EXPORT Dart_Handle Dart_GetNonNullableType(Dart_Handle library, Dart_Handle class_name, intptr_t number_of_type_arguments, Dart_Handle *type_arguments)
DART_EXPORT const char * Dart_GetError(Dart_Handle handle)
DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type, intptr_t length)
DART_EXPORT uint8_t * Dart_ScopeAllocate(intptr_t size)
DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, Dart_TypedData_Type *type, void **data, intptr_t *len)
DART_EXPORT Dart_Handle Dart_NewListOfTypeFilled(Dart_Handle element_type, Dart_Handle fill_object, intptr_t length)
DART_EXPORT Dart_Handle Dart_ListSetAt(Dart_Handle list, intptr_t index, Dart_Handle value)
DART_EXPORT bool Dart_IsError(Dart_Handle handle)
DART_EXPORT Dart_Handle Dart_EmptyString()
DART_EXPORT Dart_Handle Dart_GetNativeArgument(Dart_NativeArguments args, int index)
DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, Dart_Handle name, Dart_Handle value)
DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object)
DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, bool *fits)
DART_EXPORT Dart_Handle Dart_NewApiError(const char *error)
DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url)
DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception)
DART_EXPORT Dart_Handle Dart_GetNativeIntegerArgument(Dart_NativeArguments args, int index, int64_t *value)
DART_EXPORT bool Dart_IsInteger(Dart_Handle object)
DART_EXPORT bool Dart_PostCObject(Dart_Port port_id, Dart_CObject *message)
DART_EXPORT Dart_Handle Dart_Null()
DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, Dart_Handle constructor_name, int number_of_arguments, Dart_Handle *arguments)
static int8_t data[kExtLength]
DART_EXPORT Dart_Handle Dart_GetNativeBooleanArgument(Dart_NativeArguments args, int index, bool *value)
DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object, const char **cstr)
constexpr intptr_t kIntptrMax
DART_EXPORT Dart_Handle Dart_IntegerToInt64(Dart_Handle integer, int64_t *value)
static const char header[]
void write(SkWStream *wStream, const T &text)
Dart_HandleFinalizer callback
union _Dart_CObject::@86 value
struct _Dart_CObject::@86::@90 as_typed_data
struct _Dart_CObject::@86::@91 as_external_typed_data
struct _Dart_CObject::@86::@89 as_array
struct _Dart_CObject ** values
struct _Dart_CObject::@86::@92 as_native_pointer
const uint8_t bytes[kMaxLength]