Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 2186423002: Only reload libraries when they may have been modified. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Code review Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/dart_api_impl.cc
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 34a8d33f97af77b721ac7514d7c0b81924c5279b..83ab446bbc45e5f5fafbe690e8bf9f67f178f4ba 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -21,6 +21,7 @@
#include "vm/flags.h"
#include "vm/growable_array.h"
#include "vm/lockers.h"
+#include "vm/isolate_reload.h"
#include "vm/message.h"
#include "vm/message_handler.h"
#include "vm/native_entry.h"
@@ -5221,6 +5222,7 @@ static void CompileSource(Thread* thread,
DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
+ Dart_Handle resolved_url,
Dart_Handle source,
intptr_t line_offset,
intptr_t column_offset) {
@@ -5231,6 +5233,13 @@ DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
if (url_str.IsNull()) {
RETURN_TYPE_ERROR(Z, url, String);
}
+ if (Dart_IsNull(resolved_url)) {
+ resolved_url = url;
+ }
+ const String& resolved_url_str = Api::UnwrapStringHandle(Z, resolved_url);
+ if (resolved_url_str.IsNull()) {
+ RETURN_TYPE_ERROR(Z, resolved_url, String);
+ }
const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
RETURN_TYPE_ERROR(Z, source, String);
@@ -5259,8 +5268,9 @@ DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
library.Register(T);
I->object_store()->set_root_library(library);
- const Script& script = Script::Handle(Z,
- Script::New(url_str, source_str, RawScript::kScriptTag));
+ const Script& script =
+ Script::Handle(Z, Script::New(url_str, resolved_url_str, source_str,
+ RawScript::kScriptTag));
script.SetLocationOffset(line_offset, column_offset);
Dart_Handle result;
CompileSource(T, library, script, &result);
@@ -5498,6 +5508,7 @@ DART_EXPORT Dart_Handle Dart_LibraryHandleError(Dart_Handle library_in,
DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
+ Dart_Handle resolved_url,
Dart_Handle source,
intptr_t line_offset,
intptr_t column_offset) {
@@ -5508,6 +5519,13 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
if (url_str.IsNull()) {
RETURN_TYPE_ERROR(Z, url, String);
}
+ if (Dart_IsNull(resolved_url)) {
+ resolved_url = url;
+ }
+ const String& resolved_url_str = Api::UnwrapStringHandle(Z, resolved_url);
+ if (resolved_url_str.IsNull()) {
+ RETURN_TYPE_ERROR(Z, resolved_url, String);
+ }
const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
RETURN_TYPE_ERROR(Z, source, String);
@@ -5537,8 +5555,9 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
return Api::NewError("%s: library '%s' has already been loaded.",
CURRENT_FUNC, url_str.ToCString());
}
- const Script& script = Script::Handle(Z,
- Script::New(url_str, source_str, RawScript::kLibraryTag));
+ const Script& script =
+ Script::Handle(Z, Script::New(url_str, resolved_url_str, source_str,
+ RawScript::kLibraryTag));
script.SetLocationOffset(line_offset, column_offset);
Dart_Handle result;
CompileSource(T, library, script, &result);
@@ -5604,6 +5623,7 @@ DART_EXPORT Dart_Handle Dart_LibraryImportLibrary(Dart_Handle library,
DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
Dart_Handle url,
+ Dart_Handle resolved_url,
Dart_Handle source,
intptr_t line_offset,
intptr_t column_offset) {
@@ -5618,6 +5638,13 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
if (url_str.IsNull()) {
RETURN_TYPE_ERROR(Z, url, String);
}
+ if (Dart_IsNull(resolved_url)) {
+ resolved_url = url;
+ }
+ const String& resolved_url_str = Api::UnwrapStringHandle(Z, resolved_url);
+ if (resolved_url_str.IsNull()) {
+ RETURN_TYPE_ERROR(Z, resolved_url, String);
+ }
const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
RETURN_TYPE_ERROR(Z, source, String);
@@ -5635,8 +5662,9 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
NoHeapGrowthControlScope no_growth_control;
- const Script& script = Script::Handle(Z,
- Script::New(url_str, source_str, RawScript::kSourceTag));
+ const Script& script =
+ Script::Handle(Z, Script::New(url_str, resolved_url_str, source_str,
+ RawScript::kSourceTag));
script.SetLocationOffset(line_offset, column_offset);
Dart_Handle result;
CompileSource(T, lib, script, &result);
@@ -5667,8 +5695,9 @@ DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library,
NoHeapGrowthControlScope no_growth_control;
- const Script& script = Script::Handle(Z,
- Script::New(url_str, source_str, RawScript::kPatchTag));
+ const Script& script =
+ Script::Handle(Z, Script::New(url_str, url_str, source_str,
+ RawScript::kPatchTag));
Dart_Handle result;
CompileSource(T, lib, script, &result);
return result;
@@ -5844,6 +5873,12 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id,
}
+DART_EXPORT Dart_Handle Dart_SetFileModifiedCallback(
+ Dart_FileModifiedCallback file_mod_callback) {
+ return Api::Success();
+}
+
+
DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask) {
return;
}
@@ -5956,6 +5991,30 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id,
}
+DART_EXPORT Dart_Handle Dart_SetFileModifiedCallback(
+ Dart_FileModifiedCallback file_modified_callback) {
+ if (!FLAG_support_service) {
+ return Api::Success();
+ }
+ if (file_modified_callback != NULL) {
+ if (IsolateReloadContext::file_modified_callback() != NULL) {
+ return Api::NewError(
+ "%s permits only one callback to be registered, please "
+ "remove the existing callback and then add this callback",
+ CURRENT_FUNC);
+ }
+ } else {
+ if (IsolateReloadContext::file_modified_callback() == NULL) {
+ return Api::NewError(
+ "%s expects 'file_modified_callback' to be set before it is cleared.",
+ CURRENT_FUNC);
+ }
+ }
+ IsolateReloadContext::SetFileModifiedCallback(file_modified_callback);
+ return Api::Success();
+}
+
+
DART_EXPORT void Dart_GlobalTimelineSetRecordedStreams(int64_t stream_mask) {
if (!FLAG_support_timeline) {
return;
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698