21#if !defined(DART_PRECOMPILED_RUNTIME)
31 const auto& send_function =
32 Function::CheckedHandle(zone, arguments->NativeArg0());
34 ReceivePort::CheckedHandle(zone, arguments->NativeArgAt(1));
36 isolate->CreateAsyncFfiCallback(zone, send_function, port.Id()));
40 const auto& trampoline =
41 Function::CheckedHandle(zone, arguments->NativeArg0());
42 const auto&
target = Closure::CheckedHandle(zone, arguments->NativeArgAt(1));
43 const bool keep_isolate_alive =
44 Bool::CheckedHandle(zone, arguments->NativeArgAt(2)).value();
45 return Pointer::New(isolate->CreateIsolateLocalFfiCallback(
46 zone, trampoline,
target, keep_isolate_alive));
50 const auto& pointer = Pointer::CheckedHandle(zone, arguments->NativeArg0());
51 isolate->DeleteFfiCallback(pointer.NativeAddress());
57 Integer::CheckedHandle(zone, arguments->NativeArg0()).AsInt64Value();
58 isolate->UpdateNativeCallableKeepIsolateAliveCounter(delta);
64 const char*
name = name_dart.ToCString();
66#define RETURN_FUNCTION_ADDRESS(function_name, R, A) \
67 if (strcmp(name, #function_name) == 0) { \
68 return Integer::New(reinterpret_cast<intptr_t>(function_name)); \
71#undef RETURN_FUNCTION_ADDRESS
87#define ENTRY(name, R, A) \
88 DartApiEntry{#name, reinterpret_cast<void (*)()>(name)},
102 (
Dart_Handle entry_handle, intptr_t external_size)) {
106 const auto& entry_object =
108 const auto& entry = FinalizerEntry::Cast(entry_object);
111 intptr_t external_size_diff;
115 const intptr_t external_size_old = entry.external_size();
116 if (FLAG_trace_finalizers) {
118 " bytes in %s space\n",
119 external_size_old, external_size, space == 0 ?
"new" :
"old");
121 external_size_diff = external_size - external_size_old;
122 if (external_size_diff == 0) {
125 entry.set_external_size(external_size);
128 if (external_size_diff > 0) {
139struct AsTypedListFinalizerData {
140 void (*callback)(
void*);
146 auto*
result =
malloc(
sizeof(AsTypedListFinalizerData));
153 const auto*
data =
reinterpret_cast<AsTypedListFinalizerData*
>(peer);
static ObjectPtr UnwrapHandle(Dart_Handle object)
static DART_NORETURN void ThrowOOM()
static DART_NORETURN void ThrowArgumentError(const Instance &arg)
bool AllocatedExternal(intptr_t size, Space space)
void FreedExternal(intptr_t size, Space space)
static IntegerPtr New(const String &str, Heap::Space space=Heap::kNew)
static PointerPtr New(uword native_address, Heap::Space space=Heap::kNew)
static StringPtr NewFormatted(const char *format,...) PRINTF_ATTRIBUTE(1
static Thread * Current()
IsolateGroup * isolate_group() const
#define THR_Print(format,...)
struct _Dart_Handle * Dart_Handle
#define DART_NATIVE_API_DL_SYMBOLS(F)
#define DART_API_ALL_DL_SYMBOLS(F)
#define DART_API_DL_MAJOR_VERSION
#define DART_API_DL_MINOR_VERSION
#define ENTRY(name, R, A)
#define RETURN_FUNCTION_ADDRESS(function_name, R, A)
const uint8_t uint32_t uint32_t GError ** error
#define MSAN_UNPOISON(ptr, len)
void * malloc(size_t size)
static const DartApi dart_api_data
static const DartApiEntry dart_api_entries[]
void AsTypedListFinalizerCallback(void *peer)
Heap::Space SpaceForExternal(FinalizerEntryPtr raw_entry)
static int8_t data[kExtLength]
#define DEFINE_NATIVE_ENTRY(name, type_argument_count, argument_count)
#define DEFINE_FFI_NATIVE_ENTRY(name, return_type, argument_types)
#define GET_NON_NULL_NATIVE_ARGUMENT(type, name, value)