Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sxychenjing
engine
提交
adef3708
E
engine
项目概览
sxychenjing
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
engine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
adef3708
编写于
1月 23, 2017
作者:
R
Ryan Macnak
提交者:
GitHub
1月 23, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adapt to refactoring of snapshot APIs in the Dart VM. (#3354)
Adapt to refactoring of snapshot APIs in the Dart VM.
上级
858e401c
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
101 addition
and
113 deletion
+101
-113
DEPS
DEPS
+1
-1
common/settings.h
common/settings.h
+4
-4
lib/snapshot/snapshot.c.tmpl
lib/snapshot/snapshot.c.tmpl
+6
-2
runtime/dart_controller.cc
runtime/dart_controller.cc
+3
-1
runtime/dart_init.cc
runtime/dart_init.cc
+23
-35
runtime/dart_init.h
runtime/dart_init.h
+8
-6
shell/common/shell.cc
shell/common/shell.cc
+8
-12
shell/common/switches.h
shell/common/switches.h
+4
-10
shell/platform/android/io/flutter/view/FlutterMain.java
shell/platform/android/io/flutter/view/FlutterMain.java
+36
-38
snapshotter/main.cc
snapshotter/main.cc
+8
-4
未找到文件。
DEPS
浏览文件 @
adef3708
...
...
@@ -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': 'b4
3da048c31a16b9993de1536406ed014ef73ffd
',
'dart_revision': 'b4
6af1e75f9d124ce0e5f8226d570e93ac87d3a9
',
'dart_boringssl_gen_revision': '1a810313a0290e1caace9da73fa3ab89995ad2c7',
'dart_boringssl_revision': 'd519bf6be0b447fb80fbc539d4bff4479b5482a2',
'dart_observatory_packages_revision': '26aad88f1c1915d39bbcbff3cad589e2402fdcf1',
...
...
common/settings.h
浏览文件 @
adef3708
...
...
@@ -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_i
nstructions_blob_file_
name
;
std
::
string
aot_
rodata_blob_file_
name
;
std
::
string
aot_
vm_snapshot_data_file
name
;
std
::
string
aot_vm_
snapshot_instr_file
name
;
std
::
string
aot_i
solate_snapshot_data_file
name
;
std
::
string
aot_
isolate_snapshot_instr_file
name
;
std
::
string
application_library_path
;
std
::
string
temp_directory_path
;
std
::
vector
<
std
::
string
>
dart_flags
;
...
...
lib/snapshot/snapshot.c.tmpl
浏览文件 @
adef3708
...
...
@@ -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 k
VmIsolateSnapshot
[]
const uint8_t k
DartVmSnapshotData
[]
__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 k
IsolateSnapshot
[]
const uint8_t k
DartIsolateSnapshotData
[]
__attribute__((visibility("default"), aligned(8), used)) = { %s };
const uint8_t kDartIsolateSnapshotInstructions[]
__attribute__((visibility("default"), aligned(8), used)) = {};
runtime/dart_controller.cc
浏览文件 @
adef3708
...
...
@@ -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
();
...
...
runtime/dart_init.cc
浏览文件 @
adef3708
...
...
@@ -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
k
VmIsolateSnapshotName
[]
=
"kVmIsolateSnapshot
"
;
constexpr
char
k
IsolateSnapshotName
[]
=
"kIsolateSnapshot
"
;
constexpr
char
k
InstructionsSnapshotName
[]
=
"kInstructionsSnapshot
"
;
constexpr
char
kDa
taSnapshotName
[]
=
"kDataSnapshot
"
;
constexpr
char
k
DartVmSnapshotDataName
[]
=
"kDartVmSnapshotData
"
;
constexpr
char
k
DartVmSnapshotInstructionsName
[]
=
"kDartVmSnapshotInstructions
"
;
constexpr
char
k
DartIsolateSnapshotDataName
[]
=
"kDartIsolateSnapshotData
"
;
constexpr
char
kDa
rtIsolateSnapshotInstructionsName
[]
=
"kDartIsolateSnapshotInstructions
"
;
#if OS(IOS)
...
...
@@ -437,14 +441,14 @@ struct SymbolAsset {
};
static
SymbolAsset
g_symbol_assets
[]
=
{
{
k
VmIsolateSnapshotName
,
"snapshot_aot_vmisolate
"
,
false
,
offsetof
(
Settings
,
aot_vm_
isolate_snapshot_file_
name
)},
{
k
IsolateSnapshotName
,
"snapshot_aot_isolate"
,
fals
e
,
offsetof
(
Settings
,
aot_
isolate_snapshot_file_
name
)},
{
k
InstructionsSnapshotName
,
"snapshot_aot_instr"
,
tru
e
,
offsetof
(
Settings
,
aot_i
nstructions_blob_file_
name
)},
{
kDa
taSnapshotName
,
"snapshot_aot_rodata"
,
fals
e
,
offsetof
(
Settings
,
aot_
rodata_blob_file_
name
)},
{
k
DartVmSnapshotDataName
,
"vm_snapshot_data
"
,
false
,
offsetof
(
Settings
,
aot_vm_
snapshot_data_file
name
)},
{
k
DartVmSnapshotInstructionsName
,
"vm_snapshot_instr"
,
tru
e
,
offsetof
(
Settings
,
aot_
vm_snapshot_instr_file
name
)},
{
k
DartIsolateSnapshotDataName
,
"isolate_snapshot_data"
,
fals
e
,
offsetof
(
Settings
,
aot_i
solate_snapshot_data_file
name
)},
{
kDa
rtIsolateSnapshotInstructionsName
,
"isolate_snapshot_instr"
,
tru
e
,
offsetof
(
Settings
,
aot_
isolate_snapshot_instr_file
name
)},
};
// 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
(
k
VmIsolateSnapshot
));
params
.
instructions_snapshot
=
PrecompiledInstructionsSymbolIfPresent
();
params
.
data_snapshot
=
PrecompiledDataSnapshotSymbolIfPresent
(
);
params
.
vm_
snapshot_data
=
reinterpret_cast
<
uint8_t
*>
(
DART_SYMBOL
(
k
DartVmSnapshotData
));
params
.
vm_snapshot_instructions
=
reinterpret_cast
<
uint8_t
*>
(
DART_SYMBOL
(
kDartVmSnapshotInstructions
)
);
params
.
create
=
IsolateCreateCallback
;
params
.
shutdown
=
IsolateShutdownCallback
;
params
.
thread_exit
=
ThreadExitCallback
;
...
...
runtime/dart_init.h
浏览文件 @
adef3708
...
...
@@ -18,10 +18,10 @@ namespace blink {
#if DART_ALLOW_DYNAMIC_RESOLUTION
extern
const
char
k
VmIsolateSnapshot
Name
[];
extern
const
char
k
IsolateSnapshot
Name
[];
extern
const
char
k
InstructionsSnapshot
Name
[];
extern
const
char
kDa
taSnapshot
Name
[];
extern
const
char
k
DartVmSnapshotData
Name
[];
extern
const
char
k
DartVmSnapshotInstructions
Name
[];
extern
const
char
k
DartIsolateSnapshotData
Name
[];
extern
const
char
kDa
rtIsolateSnapshotInstructions
Name
[];
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)
...
...
shell/common/shell.cc
浏览文件 @
adef3708
...
...
@@ -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
));
...
...
shell/common/switches.h
浏览文件 @
adef3708
...
...
@@ -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"
,
...
...
shell/platform/android/io/flutter/view/FlutterMain.java
浏览文件 @
adef3708
...
...
@@ -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_I
NSTRUCTIONS_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_I
SOLATE_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_I
NSTRUCTIONS
_KEY
=
FlutterMain
.
class
.
getName
()
+
'.'
+
AOT_I
NSTRUCTIONS
_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_I
SOLATE_SNAPSHOT_DATA
_KEY
=
FlutterMain
.
class
.
getName
()
+
'.'
+
AOT_I
SOLATE_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_I
NSTRUCTIONS
=
"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_I
SOLATE_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
sAot
Isolate
=
DEFAULT_AOT_ISOLATE
;
private
static
String
sAotVm
Isolate
=
DEFAULT_AOT_VM_ISOLATE
;
private
static
String
sAotI
nstructions
=
DEFAULT_AOT_INSTRUCTIONS
;
private
static
String
sAot
Rodata
=
DEFAULT_AOT_RODATA
;
private
static
String
sAot
VmSnapshotData
=
DEFAULT_AOT_VM_SNAPSHOT_DATA
;
private
static
String
sAotVm
SnapshotInstr
=
DEFAULT_AOT_VM_SNAPSHOT_INSTR
;
private
static
String
sAotI
solateSnapshotData
=
DEFAULT_AOT_ISOLATE_SNAPSHOT_DATA
;
private
static
String
sAot
IsolateSnapshotInstr
=
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_I
NSTRUCTIONS_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_I
SOLATE_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
(
sAot
Isolate
)
.
addResource
(
sAotVm
Isolate
)
.
addResource
(
sAotI
nstructions
)
.
addResource
(
sAot
Rodata
)
.
addResource
(
sAot
VmSnapshotData
)
.
addResource
(
sAotVm
SnapshotInstr
)
.
addResource
(
sAotI
solateSnapshotData
)
.
addResource
(
sAot
IsolateSnapshotInstr
)
.
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
(
sAot
Isolate
,
sAotVm
Isolate
,
sAotI
nstructions
,
sAot
Rodata
sAot
VmSnapshotData
,
sAotVm
SnapshotInstr
,
sAotI
solateSnapshotData
,
sAot
IsolateSnapshotInstr
));
}
...
...
snapshotter/main.cc
浏览文件 @
adef3708
...
...
@@ -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
(
&
params
);
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
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录