Adapt to refactoring of snapshot APIs in the Dart VM. (flutter/engine#3354)
Adapt to refactoring of snapshot APIs in the Dart VM.
This commit is contained in:
2
DEPS
2
DEPS
@@ -27,7 +27,7 @@ vars = {
|
||||
|
||||
# Note: When updating the Dart revision, ensure that all entries that are
|
||||
# dependencies of dart are also updated
|
||||
'dart_revision': 'b43da048c31a16b9993de1536406ed014ef73ffd',
|
||||
'dart_revision': 'b46af1e75f9d124ce0e5f8226d570e93ac87d3a9',
|
||||
'dart_boringssl_gen_revision': '1a810313a0290e1caace9da73fa3ab89995ad2c7',
|
||||
'dart_boringssl_revision': 'd519bf6be0b447fb80fbc539d4bff4479b5482a2',
|
||||
'dart_observatory_packages_revision': '26aad88f1c1915d39bbcbff3cad589e2402fdcf1',
|
||||
|
||||
@@ -25,10 +25,10 @@ struct Settings {
|
||||
bool enable_dart_profiling = false;
|
||||
bool use_test_fonts = false;
|
||||
std::string aot_snapshot_path;
|
||||
std::string aot_isolate_snapshot_file_name;
|
||||
std::string aot_vm_isolate_snapshot_file_name;
|
||||
std::string aot_instructions_blob_file_name;
|
||||
std::string aot_rodata_blob_file_name;
|
||||
std::string aot_vm_snapshot_data_filename;
|
||||
std::string aot_vm_snapshot_instr_filename;
|
||||
std::string aot_isolate_snapshot_data_filename;
|
||||
std::string aot_isolate_snapshot_instr_filename;
|
||||
std::string application_library_path;
|
||||
std::string temp_directory_path;
|
||||
std::vector<std::string> dart_flags;
|
||||
|
||||
@@ -10,12 +10,16 @@
|
||||
// generated snapshot binary file for the vm isolate.
|
||||
// This string forms the content of the dart vm isolate snapshot which
|
||||
// is loaded into the vm isolate.
|
||||
const uint8_t kVmIsolateSnapshot[]
|
||||
const uint8_t kDartVmSnapshotData[]
|
||||
__attribute__((visibility("default"), aligned(8), used)) = { %s };
|
||||
const uint8_t kDartVmSnapshotInstructions[]
|
||||
__attribute__((visibility("default"), aligned(8), used)) = {};
|
||||
|
||||
// The string on the next line will be filled in with the contents of the
|
||||
// generated snapshot binary file for a regular dart isolate.
|
||||
// This string forms the content of a regular dart isolate snapshot which
|
||||
// is loaded into an isolate when it is created.
|
||||
const uint8_t kIsolateSnapshot[]
|
||||
const uint8_t kDartIsolateSnapshotData[]
|
||||
__attribute__((visibility("default"), aligned(8), used)) = { %s };
|
||||
const uint8_t kDartIsolateSnapshotInstructions[]
|
||||
__attribute__((visibility("default"), aligned(8), used)) = {};
|
||||
|
||||
@@ -136,7 +136,9 @@ void DartController::CreateIsolateFor(const std::string& script_uri,
|
||||
char* error = nullptr;
|
||||
Dart_Isolate isolate = Dart_CreateIsolate(
|
||||
script_uri.c_str(), "main",
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kIsolateSnapshot)), nullptr,
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotData)),
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotInstructions)),
|
||||
nullptr,
|
||||
static_cast<tonic::DartState*>(state.get()), &error);
|
||||
FTL_CHECK(isolate) << error;
|
||||
ui_dart_state_ = state.release();
|
||||
|
||||
@@ -198,7 +198,9 @@ Dart_Isolate ServiceIsolateCreateCallback(const char* script_uri,
|
||||
tonic::DartState* dart_state = new tonic::DartState();
|
||||
Dart_Isolate isolate = Dart_CreateIsolate(
|
||||
script_uri, "main",
|
||||
reinterpret_cast<const uint8_t*>(DART_SYMBOL(kIsolateSnapshot)), nullptr,
|
||||
reinterpret_cast<const uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotData)),
|
||||
reinterpret_cast<const uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotInstructions)),
|
||||
nullptr,
|
||||
dart_state, error);
|
||||
FTL_CHECK(isolate) << error;
|
||||
dart_state->SetIsolate(isolate);
|
||||
@@ -276,7 +278,9 @@ Dart_Isolate IsolateCreateCallback(const char* script_uri,
|
||||
|
||||
Dart_Isolate isolate = Dart_CreateIsolate(
|
||||
script_uri, main,
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kIsolateSnapshot)), nullptr,
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotData)),
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartIsolateSnapshotInstructions)),
|
||||
nullptr,
|
||||
dart_state, error);
|
||||
FTL_CHECK(isolate) << error;
|
||||
dart_state->SetIsolate(isolate);
|
||||
@@ -373,10 +377,10 @@ DartJniIsolateData* GetDartJniDataForCurrentIsolate() {
|
||||
|
||||
#if DART_ALLOW_DYNAMIC_RESOLUTION
|
||||
|
||||
constexpr char kVmIsolateSnapshotName[] = "kVmIsolateSnapshot";
|
||||
constexpr char kIsolateSnapshotName[] = "kIsolateSnapshot";
|
||||
constexpr char kInstructionsSnapshotName[] = "kInstructionsSnapshot";
|
||||
constexpr char kDataSnapshotName[] = "kDataSnapshot";
|
||||
constexpr char kDartVmSnapshotDataName[] = "kDartVmSnapshotData";
|
||||
constexpr char kDartVmSnapshotInstructionsName[] = "kDartVmSnapshotInstructions";
|
||||
constexpr char kDartIsolateSnapshotDataName[] = "kDartIsolateSnapshotData";
|
||||
constexpr char kDartIsolateSnapshotInstructionsName[] = "kDartIsolateSnapshotInstructions";
|
||||
|
||||
#if OS(IOS)
|
||||
|
||||
@@ -437,14 +441,14 @@ struct SymbolAsset {
|
||||
};
|
||||
|
||||
static SymbolAsset g_symbol_assets[] = {
|
||||
{kVmIsolateSnapshotName, "snapshot_aot_vmisolate", false,
|
||||
offsetof(Settings, aot_vm_isolate_snapshot_file_name)},
|
||||
{kIsolateSnapshotName, "snapshot_aot_isolate", false,
|
||||
offsetof(Settings, aot_isolate_snapshot_file_name)},
|
||||
{kInstructionsSnapshotName, "snapshot_aot_instr", true,
|
||||
offsetof(Settings, aot_instructions_blob_file_name)},
|
||||
{kDataSnapshotName, "snapshot_aot_rodata", false,
|
||||
offsetof(Settings, aot_rodata_blob_file_name)},
|
||||
{kDartVmSnapshotDataName, "vm_snapshot_data", false,
|
||||
offsetof(Settings, aot_vm_snapshot_data_filename)},
|
||||
{kDartVmSnapshotInstructionsName, "vm_snapshot_instr", true,
|
||||
offsetof(Settings, aot_vm_snapshot_instr_filename)},
|
||||
{kDartIsolateSnapshotDataName, "isolate_snapshot_data", false,
|
||||
offsetof(Settings, aot_isolate_snapshot_data_filename)},
|
||||
{kDartIsolateSnapshotInstructionsName, "isolate_snapshot_instr", true,
|
||||
offsetof(Settings, aot_isolate_snapshot_instr_filename)},
|
||||
};
|
||||
|
||||
// Resolve a precompiled snapshot symbol by mapping the corresponding asset
|
||||
@@ -498,29 +502,13 @@ void* _DartSymbolLookup(const char* symbol_name) {
|
||||
|
||||
#endif
|
||||
|
||||
static const uint8_t* PrecompiledInstructionsSymbolIfPresent() {
|
||||
return reinterpret_cast<uint8_t*>(DART_SYMBOL(kInstructionsSnapshot));
|
||||
}
|
||||
|
||||
static const uint8_t* PrecompiledDataSnapshotSymbolIfPresent() {
|
||||
return reinterpret_cast<uint8_t*>(DART_SYMBOL(kDataSnapshot));
|
||||
}
|
||||
|
||||
bool IsRunningPrecompiledCode() {
|
||||
TRACE_EVENT0("flutter", __func__);
|
||||
return PrecompiledInstructionsSymbolIfPresent() != nullptr;
|
||||
return Dart_IsPrecompiledRuntime();
|
||||
}
|
||||
|
||||
#else // DART_ALLOW_DYNAMIC_RESOLUTION
|
||||
|
||||
static const uint8_t* PrecompiledInstructionsSymbolIfPresent() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static const uint8_t* PrecompiledDataSnapshotSymbolIfPresent() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool IsRunningPrecompiledCode() {
|
||||
return false;
|
||||
}
|
||||
@@ -691,10 +679,10 @@ void InitDartVM() {
|
||||
TRACE_EVENT0("flutter", "Dart_Initialize");
|
||||
Dart_InitializeParams params = {};
|
||||
params.version = DART_INITIALIZE_PARAMS_CURRENT_VERSION;
|
||||
params.vm_isolate_snapshot =
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kVmIsolateSnapshot));
|
||||
params.instructions_snapshot = PrecompiledInstructionsSymbolIfPresent();
|
||||
params.data_snapshot = PrecompiledDataSnapshotSymbolIfPresent();
|
||||
params.vm_snapshot_data =
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartVmSnapshotData));
|
||||
params.vm_snapshot_instructions =
|
||||
reinterpret_cast<uint8_t*>(DART_SYMBOL(kDartVmSnapshotInstructions));
|
||||
params.create = IsolateCreateCallback;
|
||||
params.shutdown = IsolateShutdownCallback;
|
||||
params.thread_exit = ThreadExitCallback;
|
||||
|
||||
@@ -18,10 +18,10 @@ namespace blink {
|
||||
|
||||
#if DART_ALLOW_DYNAMIC_RESOLUTION
|
||||
|
||||
extern const char kVmIsolateSnapshotName[];
|
||||
extern const char kIsolateSnapshotName[];
|
||||
extern const char kInstructionsSnapshotName[];
|
||||
extern const char kDataSnapshotName[];
|
||||
extern const char kDartVmSnapshotDataName[];
|
||||
extern const char kDartVmSnapshotInstructionsName[];
|
||||
extern const char kDartIsolateSnapshotDataName[];
|
||||
extern const char kDartIsolateSnapshotInstructionsName[];
|
||||
|
||||
void* _DartSymbolLookup(const char* symbol_name);
|
||||
|
||||
@@ -30,8 +30,10 @@ void* _DartSymbolLookup(const char* symbol_name);
|
||||
#else // DART_ALLOW_DYNAMIC_RESOLUTION
|
||||
|
||||
extern "C" {
|
||||
extern void* kVmIsolateSnapshot;
|
||||
extern void* kIsolateSnapshot;
|
||||
extern void* kDartVmSnapshotData;
|
||||
extern void* kDartVmSnapshotInstructions;
|
||||
extern void* kDartIsolateSnapshotData;
|
||||
extern void* kDartIsolateSnapshotInstructions;
|
||||
}
|
||||
|
||||
#define DART_SYMBOL(symbol) (&symbol)
|
||||
|
||||
@@ -181,18 +181,14 @@ void Shell::InitStandalone(std::string icu_data_path,
|
||||
|
||||
settings.aot_snapshot_path =
|
||||
command_line.GetSwitchValueASCII(FlagForSwitch(Switch::AotSnapshotPath));
|
||||
|
||||
settings.aot_isolate_snapshot_file_name = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotIsolateSnapshot));
|
||||
|
||||
settings.aot_vm_isolate_snapshot_file_name = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotVmIsolateSnapshot));
|
||||
|
||||
settings.aot_instructions_blob_file_name = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotInstructionsBlob));
|
||||
|
||||
settings.aot_rodata_blob_file_name =
|
||||
command_line.GetSwitchValueASCII(FlagForSwitch(Switch::AotRodataBlob));
|
||||
settings.aot_vm_snapshot_data_filename = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotVmSnapshotData));
|
||||
settings.aot_vm_snapshot_instr_filename = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotVmSnapshotInstructions));
|
||||
settings.aot_isolate_snapshot_data_filename = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotIsolateSnapshotData));
|
||||
settings.aot_isolate_snapshot_instr_filename = command_line.GetSwitchValueASCII(
|
||||
FlagForSwitch(Switch::AotIsolateSnapshotInstructions));
|
||||
|
||||
settings.temp_directory_path =
|
||||
command_line.GetSwitchValueASCII(FlagForSwitch(Switch::CacheDirPath));
|
||||
|
||||
@@ -20,17 +20,11 @@ namespace shell {
|
||||
// clang-format on
|
||||
|
||||
DEF_SWITCHES_START
|
||||
DEF_SWITCH(AotInstructionsBlob,
|
||||
"instructions-blob",
|
||||
"Path to the instructions snapshot blob.")
|
||||
DEF_SWITCH(AotIsolateSnapshot,
|
||||
"isolate-snapshot",
|
||||
"Path to the isolate snapshot blob.")
|
||||
DEF_SWITCH(AotRodataBlob, "rodata-blob", "Path to the rodata blob.")
|
||||
DEF_SWITCH(AotSnapshotPath, "aot-snapshot-path", "Path to the AOT snapshot.")
|
||||
DEF_SWITCH(AotVmIsolateSnapshot,
|
||||
"vm-isolate-snapshot",
|
||||
"Path to the VM isolate snapshot.")
|
||||
DEF_SWITCH(AotVmSnapshotData, "vm-snapshot-data", "")
|
||||
DEF_SWITCH(AotVmSnapshotInstructions, "vm-snapshot-instr", "")
|
||||
DEF_SWITCH(AotIsolateSnapshotData, "isolate-snapshot-data", "")
|
||||
DEF_SWITCH(AotIsolateSnapshotInstructions, "isolate-snapshot-instr", "")
|
||||
DEF_SWITCH(CacheDirPath, "cache-dir-path", "Path to the cache directory.")
|
||||
DEF_SWITCH(DartFlags,
|
||||
"dart-flags",
|
||||
|
||||
@@ -40,29 +40,29 @@ public class FlutterMain {
|
||||
|
||||
// Must match values in sky::shell::switches
|
||||
private static final String AOT_SNAPSHOT_PATH_KEY = "aot-snapshot-path";
|
||||
private static final String AOT_ISOLATE_KEY = "isolate-snapshot";
|
||||
private static final String AOT_VM_ISOLATE_KEY = "vm-isolate-snapshot";
|
||||
private static final String AOT_INSTRUCTIONS_KEY = "instructions-blob";
|
||||
private static final String AOT_RODATA_KEY = "rodata-blob";
|
||||
private static final String AOT_VM_SNAPSHOT_DATA_KEY = "vm-snapshot-data";
|
||||
private static final String AOT_VM_SNAPSHOT_INSTR_KEY = "vm-snapshot-instr";
|
||||
private static final String AOT_ISOLATE_SNAPSHOT_DATA_KEY = "isolate-snapshot-data";
|
||||
private static final String AOT_ISOLATE_SNAPSHOT_INSTR_KEY = "isolate-snapshot-instr";
|
||||
private static final String FLX_KEY = "flx";
|
||||
|
||||
// XML Attribute keys supported in AndroidManifest.xml
|
||||
public static final String PUBLIC_AOT_ISOLATE_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_ISOLATE_KEY;
|
||||
public static final String PUBLIC_AOT_VM_ISOLATE_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_VM_ISOLATE_KEY;
|
||||
public static final String PUBLIC_AOT_INSTRUCTIONS_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_INSTRUCTIONS_KEY;
|
||||
public static final String PUBLIC_AOT_RODATA_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_RODATA_KEY;
|
||||
public static final String PUBLIC_AOT_VM_SNAPSHOT_DATA_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_VM_SNAPSHOT_DATA_KEY;
|
||||
public static final String PUBLIC_AOT_VM_SNAPSHOT_INSTR_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_VM_SNAPSHOT_INSTR_KEY;
|
||||
public static final String PUBLIC_AOT_ISOLATE_SNAPSHOT_DATA_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_ISOLATE_SNAPSHOT_DATA_KEY;
|
||||
public static final String PUBLIC_AOT_ISOLATE_SNAPSHOT_INSTR_KEY =
|
||||
FlutterMain.class.getName() + '.' + AOT_ISOLATE_SNAPSHOT_INSTR_KEY;
|
||||
public static final String PUBLIC_FLX_KEY =
|
||||
FlutterMain.class.getName() + '.' + FLX_KEY;
|
||||
|
||||
// Resource names used for components of the precompiled snapshot.
|
||||
private static final String DEFAULT_AOT_ISOLATE = "snapshot_aot_isolate";
|
||||
private static final String DEFAULT_AOT_VM_ISOLATE = "snapshot_aot_vmisolate";
|
||||
private static final String DEFAULT_AOT_INSTRUCTIONS = "snapshot_aot_instr";
|
||||
private static final String DEFAULT_AOT_RODATA = "snapshot_aot_rodata";
|
||||
private static final String DEFAULT_AOT_VM_SNAPSHOT_DATA = "vm_snapshot_data";
|
||||
private static final String DEFAULT_AOT_VM_SNAPSHOT_INSTR = "vm_snapshot_instr";
|
||||
private static final String DEFAULT_AOT_ISOLATE_SNAPSHOT_DATA = "isolate_snapshot_data";
|
||||
private static final String DEFAULT_AOT_ISOLATE_SNAPSHOT_INSTR = "isolate_snapshot_instr";
|
||||
private static final String DEFAULT_FLX = "app.flx";
|
||||
|
||||
private static final String MANIFEST = "flutter.yaml";
|
||||
@@ -74,10 +74,10 @@ public class FlutterMain {
|
||||
.build();
|
||||
|
||||
// Mutable because default values can be overridden via config properties
|
||||
private static String sAotIsolate = DEFAULT_AOT_ISOLATE;
|
||||
private static String sAotVmIsolate = DEFAULT_AOT_VM_ISOLATE;
|
||||
private static String sAotInstructions = DEFAULT_AOT_INSTRUCTIONS;
|
||||
private static String sAotRodata = DEFAULT_AOT_RODATA;
|
||||
private static String sAotVmSnapshotData = DEFAULT_AOT_VM_SNAPSHOT_DATA;
|
||||
private static String sAotVmSnapshotInstr = DEFAULT_AOT_VM_SNAPSHOT_INSTR;
|
||||
private static String sAotIsolateSnapshotData = DEFAULT_AOT_ISOLATE_SNAPSHOT_DATA;
|
||||
private static String sAotIsolateSnapshotInstr = DEFAULT_AOT_ISOLATE_SNAPSHOT_INSTR;
|
||||
private static String sFlx = DEFAULT_FLX;
|
||||
|
||||
private static boolean sInitialized = false;
|
||||
@@ -173,10 +173,10 @@ public class FlutterMain {
|
||||
if (sIsPrecompiled) {
|
||||
shellArgs.add("--" + AOT_SNAPSHOT_PATH_KEY + "=" +
|
||||
PathUtils.getDataDirectory(applicationContext));
|
||||
shellArgs.add("--" + AOT_ISOLATE_KEY + "=" + sAotIsolate);
|
||||
shellArgs.add("--" + AOT_VM_ISOLATE_KEY + "=" + sAotVmIsolate);
|
||||
shellArgs.add("--" + AOT_INSTRUCTIONS_KEY + "=" + sAotInstructions);
|
||||
shellArgs.add("--" + AOT_RODATA_KEY + "=" + sAotRodata);
|
||||
shellArgs.add("--" + AOT_VM_SNAPSHOT_DATA_KEY + "=" + sAotVmSnapshotData);
|
||||
shellArgs.add("--" + AOT_VM_SNAPSHOT_INSTR_KEY + "=" + sAotVmSnapshotInstr);
|
||||
shellArgs.add("--" + AOT_ISOLATE_SNAPSHOT_DATA_KEY + "=" + sAotIsolateSnapshotData);
|
||||
shellArgs.add("--" + AOT_ISOLATE_SNAPSHOT_INSTR_KEY + "=" + sAotIsolateSnapshotInstr);
|
||||
} else {
|
||||
shellArgs.add("--cache-dir-path=" +
|
||||
PathUtils.getCacheDirectory(applicationContext));
|
||||
@@ -207,12 +207,10 @@ public class FlutterMain {
|
||||
Bundle metadata = applicationContext.getPackageManager().getApplicationInfo(
|
||||
applicationContext.getPackageName(), PackageManager.GET_META_DATA).metaData;
|
||||
if (metadata != null) {
|
||||
sAotIsolate = metadata.getString(PUBLIC_AOT_ISOLATE_KEY, DEFAULT_AOT_ISOLATE);
|
||||
sAotVmIsolate = metadata.getString(PUBLIC_AOT_VM_ISOLATE_KEY,
|
||||
DEFAULT_AOT_VM_ISOLATE);
|
||||
sAotInstructions = metadata.getString(PUBLIC_AOT_INSTRUCTIONS_KEY,
|
||||
DEFAULT_AOT_INSTRUCTIONS);
|
||||
sAotRodata = metadata.getString(PUBLIC_AOT_RODATA_KEY, DEFAULT_AOT_RODATA);
|
||||
sAotVmSnapshotData = metadata.getString(PUBLIC_AOT_VM_SNAPSHOT_DATA_KEY, DEFAULT_AOT_VM_SNAPSHOT_DATA);
|
||||
sAotVmSnapshotInstr = metadata.getString(PUBLIC_AOT_VM_SNAPSHOT_INSTR_KEY, DEFAULT_AOT_VM_SNAPSHOT_INSTR);
|
||||
sAotIsolateSnapshotData = metadata.getString(PUBLIC_AOT_ISOLATE_SNAPSHOT_DATA_KEY, DEFAULT_AOT_ISOLATE_SNAPSHOT_DATA);
|
||||
sAotIsolateSnapshotInstr = metadata.getString(PUBLIC_AOT_ISOLATE_SNAPSHOT_INSTR_KEY, DEFAULT_AOT_ISOLATE_SNAPSHOT_INSTR);
|
||||
sFlx = metadata.getString(PUBLIC_FLX_KEY, DEFAULT_FLX);
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
@@ -230,10 +228,10 @@ public class FlutterMain {
|
||||
new ResourceCleaner(context).start();
|
||||
sResourceExtractor = new ResourceExtractor(context)
|
||||
.addResources(SKY_RESOURCES)
|
||||
.addResource(sAotIsolate)
|
||||
.addResource(sAotVmIsolate)
|
||||
.addResource(sAotInstructions)
|
||||
.addResource(sAotRodata)
|
||||
.addResource(sAotVmSnapshotData)
|
||||
.addResource(sAotVmSnapshotInstr)
|
||||
.addResource(sAotIsolateSnapshotData)
|
||||
.addResource(sAotIsolateSnapshotInstr)
|
||||
.addResource(sFlx)
|
||||
.start();
|
||||
}
|
||||
@@ -267,10 +265,10 @@ public class FlutterMain {
|
||||
private static void initAot(Context applicationContext) {
|
||||
Set<String> assets = listRootAssets(applicationContext);
|
||||
sIsPrecompiled = assets.containsAll(Arrays.asList(
|
||||
sAotIsolate,
|
||||
sAotVmIsolate,
|
||||
sAotInstructions,
|
||||
sAotRodata
|
||||
sAotVmSnapshotData,
|
||||
sAotVmSnapshotInstr,
|
||||
sAotIsolateSnapshotData,
|
||||
sAotIsolateSnapshotInstr
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,10 @@
|
||||
#include "lib/tonic/file_loader/file_loader.h"
|
||||
|
||||
extern "C" {
|
||||
extern const uint8_t kVmIsolateSnapshot[];
|
||||
extern const uint8_t kIsolateSnapshot[];
|
||||
extern const uint8_t kDartVmSnapshotData[];
|
||||
extern const uint8_t kDartVmSnapshotInstructions[];
|
||||
extern const uint8_t kDartIsolateSnapshotData[];
|
||||
extern const uint8_t kDartIsolateSnapshotInstructions[];
|
||||
}
|
||||
|
||||
namespace {
|
||||
@@ -92,7 +94,8 @@ void InitDartVM() {
|
||||
FTL_CHECK(Dart_SetVMFlags(arraysize(kDartArgs), kDartArgs));
|
||||
Dart_InitializeParams params = {};
|
||||
params.version = DART_INITIALIZE_PARAMS_CURRENT_VERSION;
|
||||
params.vm_isolate_snapshot = kVmIsolateSnapshot;
|
||||
params.vm_snapshot_data = kDartVmSnapshotData;
|
||||
params.vm_snapshot_instructions = kDartVmSnapshotInstructions;
|
||||
char* error = Dart_Initialize(¶ms);
|
||||
if (error)
|
||||
FTL_LOG(FATAL) << error;
|
||||
@@ -101,7 +104,8 @@ void InitDartVM() {
|
||||
Dart_Isolate CreateDartIsolate() {
|
||||
char* error = nullptr;
|
||||
Dart_Isolate isolate =
|
||||
Dart_CreateIsolate("dart:snapshot", "main", kIsolateSnapshot,
|
||||
Dart_CreateIsolate("dart:snapshot", "main", kDartIsolateSnapshotData,
|
||||
kDartIsolateSnapshotInstructions,
|
||||
nullptr, nullptr, &error);
|
||||
FTL_CHECK(isolate) << error;
|
||||
Dart_ExitIsolate();
|
||||
|
||||
Reference in New Issue
Block a user