Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_34031325
engine
提交
e59457b8
E
engine
项目概览
qq_34031325
/
engine
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
未验证
提交
e59457b8
编写于
2月 01, 2021
作者:
G
gaaclarke
提交者:
GitHub
2月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed plumbing of the spawning isolate for Shell::Spawn. (#24112)
上级
5792343e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
49 addition
and
6 deletion
+49
-6
runtime/runtime_controller.cc
runtime/runtime_controller.cc
+13
-1
runtime/runtime_controller.h
runtime/runtime_controller.h
+8
-0
shell/common/engine.h
shell/common/engine.h
+7
-0
shell/common/shell_unittests.cc
shell/common/shell_unittests.cc
+21
-5
未找到文件。
runtime/runtime_controller.cc
浏览文件 @
e59457b8
...
...
@@ -406,7 +406,8 @@ bool RuntimeController::LaunchRootIsolate(
dart_entrypoint
,
//
dart_entrypoint_library
,
//
std
::
move
(
isolate_configuration
),
//
volatile_path_tracker_
//
volatile_path_tracker_
,
//
spawning_isolate_
.
lock
().
get
()
//
)
.
lock
();
...
...
@@ -452,6 +453,17 @@ std::optional<uint32_t> RuntimeController::GetRootIsolateReturnCode() {
return
root_isolate_return_code_
;
}
uint64_t
RuntimeController
::
GetRootIsolateGroup
()
const
{
auto
isolate
=
root_isolate_
.
lock
();
if
(
isolate
)
{
auto
isolate_scope
=
tonic
::
DartIsolateScope
(
isolate
->
isolate
());
Dart_IsolateGroup
isolate_group
=
Dart_CurrentIsolateGroup
();
return
reinterpret_cast
<
uint64_t
>
(
isolate_group
);
}
else
{
return
0
;
}
}
void
RuntimeController
::
LoadDartDeferredLibrary
(
intptr_t
loading_unit_id
,
std
::
unique_ptr
<
const
fml
::
Mapping
>
snapshot_data
,
...
...
runtime/runtime_controller.h
浏览文件 @
e59457b8
...
...
@@ -508,6 +508,14 @@ class RuntimeController : public PlatformConfigurationClient {
///
std
::
optional
<
uint32_t
>
GetRootIsolateReturnCode
();
//----------------------------------------------------------------------------
/// @brief Get an identifier that represents the Dart isolate group the
/// root isolate is in.
///
/// @return The root isolate isolate group identifier, zero if one can't
/// be established.
uint64_t
GetRootIsolateGroup
()
const
;
//--------------------------------------------------------------------------
/// @brief Loads the Dart shared library into the Dart VM. When the
/// Dart library is loaded successfully, the Dart future
...
...
shell/common/engine.h
浏览文件 @
e59457b8
...
...
@@ -886,6 +886,13 @@ class Engine final : public RuntimeDelegate,
const
std
::
string
error_message
,
bool
transient
);
//--------------------------------------------------------------------------
/// @brief Accessor for the RuntimeController.
///
const
RuntimeController
*
GetRuntimeController
()
const
{
return
runtime_controller_
.
get
();
}
private:
Engine
::
Delegate
&
delegate_
;
const
Settings
settings_
;
...
...
shell/common/shell_unittests.cc
浏览文件 @
e59457b8
...
...
@@ -2484,11 +2484,27 @@ TEST_F(ShellTest, Spawn) {
ASSERT_NE
(
nullptr
,
spawn
.
get
());
ASSERT_TRUE
(
ValidateShell
(
spawn
.
get
()));
PostSync
(
spawner
->
GetTaskRunners
().
GetUITaskRunner
(),
[
&
spawn
]
{
// Check second shell ran the second entrypoint.
ASSERT_EQ
(
"testCanLaunchSecondaryIsolate"
,
spawn
->
GetEngine
()
->
GetLastEntrypoint
());
});
PostSync
(
spawner
->
GetTaskRunners
().
GetUITaskRunner
(),
[
&
spawn
,
&
spawner
]
{
// Check second shell ran the second entrypoint.
ASSERT_EQ
(
"testCanLaunchSecondaryIsolate"
,
spawn
->
GetEngine
()
->
GetLastEntrypoint
());
// TODO(74520): Remove conditional once isolate groups are
// supported by JIT.
if
(
DartVM
::
IsRunningPrecompiledCode
())
{
ASSERT_NE
(
spawner
->
GetEngine
()
->
GetRuntimeController
()
->
GetRootIsolateGroup
(),
0u
);
ASSERT_EQ
(
spawner
->
GetEngine
()
->
GetRuntimeController
()
->
GetRootIsolateGroup
(),
spawn
->
GetEngine
()
->
GetRuntimeController
()
->
GetRootIsolateGroup
());
}
});
PostSync
(
spawner
->
GetTaskRunners
().
GetIOTaskRunner
(),
[
&
spawner
,
&
spawn
]
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录