Add support for snapshot loading to Sky
This CL adds the ability to load Dart snapshot files created by sky_packager in Sky. Using a snapshot lets us transmit all the code for an app in a single blob and should improve startup time. Later CLs will make this codepath easier to use and evaluate performance. R=eseidel@chromium.org Review URL: https://codereview.chromium.org/1197133004.
This commit is contained in:
parent
2c58c80af2
commit
69e7997ae9
@ -15,9 +15,6 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
static const char kSkyInternalsLibraryName[] = "dart:sky.internals";
|
|
||||||
static const char kSkyInternalsURL[] = "package:sky/internals.dart";
|
|
||||||
|
|
||||||
std::string Fetch(const std::string& url) {
|
std::string Fetch(const std::string& url) {
|
||||||
base::FilePath path(url);
|
base::FilePath path(url);
|
||||||
std::string source;
|
std::string source;
|
||||||
@ -122,14 +119,6 @@ Dart_Handle HandleLibraryTag(Dart_LibraryTag tag,
|
|||||||
return Dart_NewApiError("Unknown library tag.");
|
return Dart_NewApiError("Unknown library tag.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadSkyInternals() {
|
|
||||||
DartApiScope api_scope;
|
|
||||||
|
|
||||||
Dart_Handle library_name = StringToDart(kSkyInternalsLibraryName);
|
|
||||||
std::string url = GetLoader().CanonicalizePackageURL(kSkyInternalsURL);
|
|
||||||
LogIfError(Dart_LoadLibrary(library_name, StringToDart(Fetch(url)), 0, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
void LoadScript(const std::string& url) {
|
void LoadScript(const std::string& url) {
|
||||||
LogIfError(
|
LogIfError(
|
||||||
Dart_LoadScript(StringToDart(url), StringToDart(Fetch(url)), 0, 0));
|
Dart_LoadScript(StringToDart(url), StringToDart(Fetch(url)), 0, 0));
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
Dart_Handle HandleLibraryTag(Dart_LibraryTag tag,
|
Dart_Handle HandleLibraryTag(Dart_LibraryTag tag,
|
||||||
Dart_Handle library,
|
Dart_Handle library,
|
||||||
Dart_Handle url);
|
Dart_Handle url);
|
||||||
void LoadSkyInternals();
|
|
||||||
void LoadScript(const std::string& url);
|
void LoadScript(const std::string& url);
|
||||||
|
|
||||||
#endif // SKY_TOOLS_PACKAGER_LOADER_H_
|
#endif // SKY_TOOLS_PACKAGER_LOADER_H_
|
||||||
|
@ -32,7 +32,6 @@ Dart_Isolate CreateDartIsolate() {
|
|||||||
|
|
||||||
CHECK(isolate) << error;
|
CHECK(isolate) << error;
|
||||||
CHECK(!LogIfError(Dart_SetLibraryTagHandler(HandleLibraryTag)));
|
CHECK(!LogIfError(Dart_SetLibraryTagHandler(HandleLibraryTag)));
|
||||||
LoadSkyInternals();
|
|
||||||
|
|
||||||
Dart_ExitIsolate();
|
Dart_ExitIsolate();
|
||||||
return isolate;
|
return isolate;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user