Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
6579dce6
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6579dce6
编写于
6月 27, 2016
作者:
T
thartmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8160122: Backport of JDK-8159244 used wrong version of the JDK 9 fix
Summary: Correct backport of 8159244. Reviewed-by: kvn
上级
3954c6dd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
6 addition
and
10 deletion
+6
-10
src/share/vm/opto/stringopts.cpp
src/share/vm/opto/stringopts.cpp
+5
-10
test/compiler/stringopts/TestStringObjectInitialization.java
test/compiler/stringopts/TestStringObjectInitialization.java
+1
-0
未找到文件。
src/share/vm/opto/stringopts.cpp
浏览文件 @
6579dce6
...
@@ -1641,16 +1641,11 @@ void PhaseStringOpts::replace_string_concat(StringConcat* sc) {
...
@@ -1641,16 +1641,11 @@ void PhaseStringOpts::replace_string_concat(StringConcat* sc) {
}
}
kit
.
store_String_value
(
kit
.
control
(),
result
,
char_array
);
kit
.
store_String_value
(
kit
.
control
(),
result
,
char_array
);
// Do not let stores that initialize this object be reordered with
// The value field is final. Emit a barrier here to ensure that the effect
// a subsequent store that would make this object accessible by
// of the initialization is committed to memory before any code publishes
// other threads.
// a reference to the newly constructed object (see Parse::do_exits()).
// Record what AllocateNode this StoreStore protects so that
assert
(
AllocateNode
::
Ideal_allocation
(
result
,
_gvn
)
!=
NULL
,
"should be newly allocated"
);
// escape analysis can go from the MemBarStoreStoreNode to the
kit
.
insert_mem_bar
(
Op_MemBarRelease
,
result
);
// AllocateNode and eliminate the MemBarStoreStoreNode if possible
// based on the escape status of the AllocateNode.
AllocateNode
*
alloc
=
AllocateNode
::
Ideal_allocation
(
result
,
_gvn
);
assert
(
alloc
!=
NULL
,
"should be newly allocated"
);
kit
.
insert_mem_bar
(
Op_MemBarStoreStore
,
alloc
->
proj_out
(
AllocateNode
::
RawAddress
));
}
else
{
}
else
{
result
=
C
->
top
();
result
=
C
->
top
();
}
}
...
...
test/compiler/stringopts/TestStringObjectInitialization.java
浏览文件 @
6579dce6
...
@@ -27,6 +27,7 @@ import java.util.Arrays;
...
@@ -27,6 +27,7 @@ import java.util.Arrays;
/*
/*
* @test
* @test
* @bug 8159244
* @bug 8159244
* @requires vm.gc == "Parallel" | vm.gc == "null"
* @summary Verifies that no partially initialized String object escapes from
* @summary Verifies that no partially initialized String object escapes from
* C2's String concat optimization in a highly concurrent setting.
* C2's String concat optimization in a highly concurrent setting.
* This test triggers the bug in about 1 out of 10 runs.
* This test triggers the bug in about 1 out of 10 runs.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录