50 Dart_Handle print =
InvokeFunction(builtin_library,
"_getPrintClosure");
52 Dart_Handle internal_library = Dart_LookupLibrary(ToDart(
"dart:_internal"));
55 Dart_SetField(internal_library, ToDart(
"_printClosure"), print);
60 Dart_Handle method_name = Dart_NewStringFromCString(
"_setupHooks");
61 result = Dart_Invoke(builtin_library, method_name, 0, NULL);
65 Dart_Handle setup_hooks = Dart_NewStringFromCString(
"_setupHooks");
67 Dart_Handle isolate_lib = Dart_LookupLibrary(ToDart(
"dart:isolate"));
68 result = Dart_Invoke(isolate_lib, setup_hooks, 0, NULL);
72static void InitDartCore(Dart_Handle builtin,
const std::string& script_uri) {
73 Dart_Handle io_lib = Dart_LookupLibrary(ToDart(
"dart:io"));
74 Dart_Handle get_base_url =
75 Dart_Invoke(io_lib, ToDart(
"_getUriBaseClosure"), 0, NULL);
76 Dart_Handle core_library = Dart_LookupLibrary(ToDart(
"dart:core"));
78 Dart_SetField(core_library, ToDart(
"_uriBaseClosure"), get_base_url);
84 bool enable_microtask_profiling) {
85 Dart_Handle schedule_microtask;
90 Dart_Handle isolate_lib = Dart_LookupLibrary(ToDart(
"dart:isolate"));
91 Dart_Handle method_name =
92 Dart_NewStringFromCString(
"_getIsolateScheduleImmediateClosure");
93 schedule_microtask = Dart_Invoke(isolate_lib, method_name, 0, NULL);
95 Dart_Handle async_library = Dart_LookupLibrary(ToDart(
"dart:async"));
96 Dart_Handle set_schedule_microtask = ToDart(
"_setScheduleImmediateClosure");
97 Dart_Handle result = Dart_Invoke(async_library, set_schedule_microtask, 1,
102 if (enable_microtask_profiling) {
103 Dart_Handle microtask_mirror_queue_type_name =
104 Dart_NewStringFromCString(
"_MicrotaskMirrorQueue");
107 Dart_Handle microtask_mirror_queue_type =
108 Dart_GetNonNullableType(async_library, microtask_mirror_queue_type_name,
113 Dart_Handle should_profile_microtasks_field_name =
114 Dart_NewStringFromCString(
"_shouldProfileMicrotasks");
117 Dart_Handle set_field_result =
118 Dart_SetField(microtask_mirror_queue_type,
119 should_profile_microtasks_field_name, Dart_True());
126 bool enable_microtask_profiling,
127 const std::string& script_uri) {
128 Dart_Handle builtin = Dart_LookupLibrary(ToDart(
"dart:ui"));
131 InitDartAsync(builtin, is_ui_isolate, enable_microtask_profiling);
166 if (Dart_IsClosure(closure)) {
167 closure = Dart_ClosureFunction(closure);
171 if (!Dart_IsFunction(closure)) {
175 Dart_Handle url = Dart_Null();
176 Dart_Handle owner = Dart_FunctionOwner(closure);
177 if (Dart_IsInstance(owner)) {
178 owner = Dart_ClassLibrary(owner);
180 if (Dart_IsLibrary(owner)) {
181 url = Dart_LibraryUrl(owner);
190 if (Dart_IsClosure(closure)) {
191 closure = Dart_ClosureFunction(closure);
195 if (!Dart_IsFunction(closure)) {
199 bool is_static =
false;
200 result = Dart_FunctionIsStatic(closure, &is_static);
206 result = Dart_FunctionOwner(closure);
209 if (Dart_IsLibrary(result) || !Dart_IsInstance(result)) {