| Index: runtime/vm/dart_api_impl.cc
|
| diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
|
| index fd6ff190f364a23ea0dca9ab485680cb8e79b777..8f131db016283467611944b983379745f0ccd7fd 100644
|
| --- a/runtime/vm/dart_api_impl.cc
|
| +++ b/runtime/vm/dart_api_impl.cc
|
| @@ -6,10 +6,11 @@
|
| #include "include/dart_mirrors_api.h"
|
| #include "include/dart_native_api.h"
|
|
|
| -#include "platform/assert.h"
|
| #include "lib/stacktrace.h"
|
| +#include "platform/assert.h"
|
| #include "vm/class_finalizer.h"
|
| #include "vm/clustered_snapshot.h"
|
| +#include "vm/compilation_trace.h"
|
| #include "vm/compiler.h"
|
| #include "vm/dart.h"
|
| #include "vm/dart_api_impl.h"
|
| @@ -23,25 +24,25 @@
|
| #include "vm/exceptions.h"
|
| #include "vm/flags.h"
|
| #include "vm/growable_array.h"
|
| -#include "vm/lockers.h"
|
| #include "vm/isolate_reload.h"
|
| #include "vm/kernel_isolate.h"
|
| +#include "vm/lockers.h"
|
| #include "vm/message.h"
|
| #include "vm/message_handler.h"
|
| #include "vm/native_entry.h"
|
| #include "vm/object.h"
|
| #include "vm/object_store.h"
|
| -#include "vm/os_thread.h"
|
| #include "vm/os.h"
|
| +#include "vm/os_thread.h"
|
| #include "vm/port.h"
|
| #include "vm/precompiler.h"
|
| #include "vm/profiler.h"
|
| #include "vm/program_visitor.h"
|
| #include "vm/resolver.h"
|
| #include "vm/reusable_handles.h"
|
| +#include "vm/service.h"
|
| #include "vm/service_event.h"
|
| #include "vm/service_isolate.h"
|
| -#include "vm/service.h"
|
| #include "vm/stack_frame.h"
|
| #include "vm/symbols.h"
|
| #include "vm/tags.h"
|
| @@ -6488,6 +6489,37 @@ DART_EXPORT void Dart_SetThreadName(const char* name) {
|
| }
|
|
|
|
|
| +DART_EXPORT
|
| +Dart_Handle Dart_SaveCompilationTrace(uint8_t** buffer,
|
| + intptr_t* buffer_length) {
|
| + API_TIMELINE_DURATION;
|
| + Thread* thread = Thread::Current();
|
| + DARTSCOPE(thread);
|
| + CHECK_NULL(buffer);
|
| + CHECK_NULL(buffer_length);
|
| + CompilationTraceSaver saver(thread->zone());
|
| + ProgramVisitor::VisitFunctions(&saver);
|
| + saver.StealBuffer(buffer, buffer_length);
|
| + return Api::Success();
|
| +}
|
| +
|
| +
|
| +DART_EXPORT
|
| +Dart_Handle Dart_LoadCompilationTrace(uint8_t* buffer, intptr_t buffer_length) {
|
| + Thread* thread = Thread::Current();
|
| + API_TIMELINE_DURATION;
|
| + DARTSCOPE(thread);
|
| + CHECK_NULL(buffer);
|
| + CompilationTraceLoader loader(thread);
|
| + const Object& error =
|
| + Object::Handle(loader.CompileTrace(reinterpret_cast<char*>(buffer)));
|
| + if (error.IsError()) {
|
| + return Api::NewHandle(T, Error::Cast(error).raw());
|
| + }
|
| + return Api::Success();
|
| +}
|
| +
|
| +
|
| DART_EXPORT
|
| Dart_Handle Dart_SaveJITFeedback(uint8_t** buffer, intptr_t* buffer_length) {
|
| #if defined(DART_PRECOMPILED_RUNTIME)
|
|
|