Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
59681ebc
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
59681ebc
编写于
2月 15, 2017
作者:
D
dnsimon
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8174957: [JVMCI] jaotc is broken in Xcomp mode
Reviewed-by: iveresov
上级
0fdfbb6f
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
23 addition
and
13 deletion
+23
-13
hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/DataBuilder.java
...sses/jdk.tools.jaotc/src/jdk/tools/jaotc/DataBuilder.java
+2
-2
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
...tspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
+1
-1
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java
...ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java
+1
-1
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/VMField.java
...sses/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/VMField.java
+7
-7
hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp
hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp
+1
-1
hotspot/test/compiler/jvmci/compilerToVM/ReadConfigurationTest.java
...st/compiler/jvmci/compilerToVM/ReadConfigurationTest.java
+11
-1
未找到文件。
hotspot/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/DataBuilder.java
浏览文件 @
59681ebc
...
...
@@ -70,8 +70,8 @@ class DataBuilder {
*/
private
void
fillVMAddresses
(
HotSpotVMConfigStore
config
)
{
for
(
VMField
vmField
:
config
.
getFields
().
values
())
{
if
(
vmField
.
value
!=
null
)
{
final
long
address
=
vmField
.
value
;
if
(
vmField
.
value
!=
null
&&
vmField
.
value
instanceof
Long
)
{
final
long
address
=
(
Long
)
vmField
.
value
;
String
value
=
vmField
.
name
;
/*
* Some fields don't contain addresses but integer values. At least don't add zero
...
...
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotCodeCacheProvider.java
浏览文件 @
59681ebc
...
...
@@ -76,7 +76,7 @@ public class HotSpotCodeCacheProvider implements CodeCacheProvider {
HotSpotVMConfigStore
store
=
runtime
.
getConfigStore
();
for
(
Map
.
Entry
<
String
,
VMField
>
e
:
store
.
getFields
().
entrySet
())
{
VMField
field
=
e
.
getValue
();
if
(
field
.
isStatic
()
&&
field
.
value
!=
null
&&
field
.
value
==
address
)
{
if
(
field
.
isStatic
()
&&
field
.
value
!=
null
&&
field
.
value
instanceof
Long
&&
((
Long
)
field
.
value
)
==
address
)
{
return
e
.
getValue
()
+
":0x"
+
Long
.
toHexString
(
address
);
}
}
...
...
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java
浏览文件 @
59681ebc
...
...
@@ -497,7 +497,7 @@ public final class HotSpotJVMCIRuntime implements HotSpotJVMCIRuntimeProvider {
if
(!
field
.
isStatic
())
{
printConfigLine
(
vm
,
"[vmconfig:instance field] %s %s {offset=%d[0x%x]}%n"
,
field
.
type
,
field
.
name
,
field
.
offset
,
field
.
offset
);
}
else
{
String
value
=
field
.
value
==
null
?
"null"
:
String
.
format
(
"%d[0x%x]"
,
field
.
value
,
field
.
value
);
String
value
=
field
.
value
==
null
?
"null"
:
field
.
value
instanceof
Boolean
?
field
.
value
.
toString
()
:
String
.
format
(
"%d[0x%x]"
,
field
.
value
,
field
.
value
);
printConfigLine
(
vm
,
"[vmconfig:static field] %s %s = %s {address=0x%x}%n"
,
field
.
type
,
field
.
name
,
value
,
field
.
address
);
}
}
...
...
hotspot/src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/VMField.java
浏览文件 @
59681ebc
...
...
@@ -38,22 +38,22 @@ public final class VMField {
public
final
String
type
;
/**
* If represented field is non-static, this is its offset within the containing structure.
* If
the
represented field is non-static, this is its offset within the containing structure.
*/
public
final
long
offset
;
/**
* If
represented field is static, this is its address. Otherwise, this field
is 0.
* If
the represented field is static, this is its address. Otherwise, this
is 0.
*/
public
final
long
address
;
/**
* Value of the field represented as a boxed
long; only valid for non-oop static fields. This
*
value is only captured once, during JVMCI initialization. If {@link #type} cannot be
*
meaningfully (e.g., a struct) or safely (e.g., an oop) expressed as a boxed long, this is
* {@code null}.
* Value of the field represented as a boxed
boolean if its C++ type is bool otherwise as a
*
boxed long; only valid for non-oop static fields. This value is only captured once, during
*
JVMCI initialization. If {@link #type} cannot be meaningfully (e.g., a struct) or safely
*
(e.g., an oop) expressed as a boxed object, this is
{@code null}.
*/
public
final
Long
value
;
public
final
Object
value
;
/**
* Determines if the represented field is static.
...
...
hotspot/src/share/vm/jvmci/jvmciJavaClasses.hpp
浏览文件 @
59681ebc
...
...
@@ -117,7 +117,7 @@ class JVMCIJavaClasses : AllStatic {
oop_field(VMField, type, "Ljava/lang/String;") \
long_field(VMField, offset) \
long_field(VMField, address) \
oop_field(VMField, value, "Ljava/lang/
Long;")
\
oop_field(VMField, value, "Ljava/lang/
Object;")
\
end_class \
start_class(VMFlag) \
oop_field(VMFlag, name, "Ljava/lang/String;") \
...
...
hotspot/test/compiler/jvmci/compilerToVM/ReadConfigurationTest.java
浏览文件 @
59681ebc
...
...
@@ -38,6 +38,7 @@
package
compiler.jvmci.compilerToVM
;
import
jdk.test.lib.Asserts
;
import
jdk.vm.ci.hotspot.VMField
;
import
jdk.vm.ci.hotspot.HotSpotJVMCIRuntime
;
import
jdk.vm.ci.hotspot.HotSpotVMConfigAccess
;
import
jdk.vm.ci.hotspot.HotSpotVMConfigStore
;
...
...
@@ -49,10 +50,19 @@ public class ReadConfigurationTest {
}
private
void
runTest
()
{
TestHotSpotVMConfig
config
=
new
TestHotSpotVMConfig
(
HotSpotJVMCIRuntime
.
runtime
().
getConfigStore
());
HotSpotVMConfigStore
store
=
HotSpotJVMCIRuntime
.
runtime
().
getConfigStore
();
TestHotSpotVMConfig
config
=
new
TestHotSpotVMConfig
(
store
);
Asserts
.
assertNE
(
config
.
codeCacheHighBound
,
0L
,
"Got null address"
);
Asserts
.
assertNE
(
config
.
stubRoutineJintArrayCopy
,
0L
,
"Got null address"
);
for
(
VMField
field
:
store
.
getFields
().
values
())
{
Object
value
=
field
.
value
;
if
(
value
!=
null
)
{
Asserts
.
assertTrue
(
value
instanceof
Long
||
value
instanceof
Boolean
,
"Got unexpected value type for VM field "
+
field
.
name
+
": "
+
value
.
getClass
());
}
}
for
(
VMIntrinsicMethod
m
:
config
.
getStore
().
getIntrinsics
())
{
Asserts
.
assertNotNull
(
m
);
Asserts
.
assertNotNull
(
m
.
declaringClass
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录