Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
5c6ac38f
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看板
提交
5c6ac38f
编写于
4月 19, 2013
作者:
D
dcubed
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
3e6183bb
29bff7f7
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
54 addition
and
21 deletion
+54
-21
src/share/vm/classfile/classFileParser.cpp
src/share/vm/classfile/classFileParser.cpp
+8
-3
src/share/vm/classfile/genericSignatures.cpp
src/share/vm/classfile/genericSignatures.cpp
+9
-2
src/share/vm/interpreter/linkResolver.cpp
src/share/vm/interpreter/linkResolver.cpp
+22
-7
src/share/vm/prims/methodHandles.cpp
src/share/vm/prims/methodHandles.cpp
+5
-0
src/share/vm/runtime/arguments.cpp
src/share/vm/runtime/arguments.cpp
+1
-1
src/share/vm/services/memBaseline.hpp
src/share/vm/services/memBaseline.hpp
+3
-3
src/share/vm/services/memPtr.hpp
src/share/vm/services/memPtr.hpp
+1
-1
src/share/vm/services/memSnapshot.hpp
src/share/vm/services/memSnapshot.hpp
+1
-1
src/share/vm/services/memTrackWorker.hpp
src/share/vm/services/memTrackWorker.hpp
+1
-1
src/share/vm/utilities/globalDefinitions.hpp
src/share/vm/utilities/globalDefinitions.hpp
+3
-2
未找到文件。
src/share/vm/classfile/classFileParser.cpp
浏览文件 @
5c6ac38f
...
...
@@ -436,14 +436,19 @@ constantPoolHandle ClassFileParser::parse_constant_pool(TRAPS) {
ref_index
,
CHECK_
(
nullHandle
));
break
;
case
JVM_REF_invokeVirtual
:
case
JVM_REF_invokeStatic
:
case
JVM_REF_invokeSpecial
:
case
JVM_REF_newInvokeSpecial
:
check_property
(
tag
.
is_method
(),
"Invalid constant pool index %u in class file %s (not a method)"
,
ref_index
,
CHECK_
(
nullHandle
));
break
;
case
JVM_REF_invokeStatic
:
case
JVM_REF_invokeSpecial
:
check_property
(
tag
.
is_method
()
||
tag
.
is_interface_method
(),
"Invalid constant pool index %u in class file %s (not a method)"
,
ref_index
,
CHECK_
(
nullHandle
));
break
;
case
JVM_REF_invokeInterface
:
check_property
(
tag
.
is_interface_method
(),
...
...
@@ -3837,7 +3842,7 @@ instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,
}
if
(
TraceClassLoadingPreorder
)
{
tty
->
print
(
"[Loading %s"
,
name
->
as_klass_external_name
()
);
tty
->
print
(
"[Loading %s"
,
(
name
!=
NULL
)
?
name
->
as_klass_external_name
()
:
"NoName"
);
if
(
cfs
->
source
()
!=
NULL
)
tty
->
print
(
" from %s"
,
cfs
->
source
());
tty
->
print_cr
(
"]"
);
}
...
...
src/share/vm/classfile/genericSignatures.cpp
浏览文件 @
5c6ac38f
...
...
@@ -268,8 +268,15 @@ ClassDescriptor* ClassDescriptor::parse_generic_signature(
Klass
*
outer
=
SystemDictionary
::
find
(
outer_name
,
class_loader
,
protection_domain
,
CHECK_NULL
);
if
(
outer
==
NULL
&&
!
THREAD
->
is_Compiler_thread
())
{
outer
=
SystemDictionary
::
resolve_super_or_fail
(
original_name
,
outer_name
,
class_loader
,
protection_domain
,
false
,
CHECK_NULL
);
if
(
outer_name
==
ik
->
super
()
->
name
())
{
outer
=
SystemDictionary
::
resolve_super_or_fail
(
original_name
,
outer_name
,
class_loader
,
protection_domain
,
false
,
CHECK_NULL
);
}
else
{
outer
=
SystemDictionary
::
resolve_or_fail
(
outer_name
,
class_loader
,
protection_domain
,
false
,
CHECK_NULL
);
}
}
InstanceKlass
*
outer_ik
;
...
...
src/share/vm/interpreter/linkResolver.cpp
浏览文件 @
5c6ac38f
...
...
@@ -1014,13 +1014,28 @@ void LinkResolver::runtime_resolve_interface_method(CallInfo& result, methodHand
resolved_method
->
name
(),
resolved_method
->
signature
()));
}
// check if public
if
(
!
sel_method
->
is_public
())
{
ResourceMark
rm
(
THREAD
);
THROW_MSG
(
vmSymbols
::
java_lang_IllegalAccessError
(),
Method
::
name_and_sig_as_C_string
(
recv_klass
(),
sel_method
->
name
(),
sel_method
->
signature
()));
// check access
if
(
sel_method
->
method_holder
()
->
is_interface
())
{
// Method holder is an interface. Throw Illegal Access Error if sel_method
// is neither public nor private.
if
(
!
(
sel_method
->
is_public
()
||
sel_method
->
is_private
()))
{
ResourceMark
rm
(
THREAD
);
THROW_MSG
(
vmSymbols
::
java_lang_IllegalAccessError
(),
Method
::
name_and_sig_as_C_string
(
recv_klass
(),
sel_method
->
name
(),
sel_method
->
signature
()));
}
}
else
{
// Method holder is a class. Throw Illegal Access Error if sel_method
// is not public.
if
(
!
sel_method
->
is_public
())
{
ResourceMark
rm
(
THREAD
);
THROW_MSG
(
vmSymbols
::
java_lang_IllegalAccessError
(),
Method
::
name_and_sig_as_C_string
(
recv_klass
(),
sel_method
->
name
(),
sel_method
->
signature
()));
}
}
// check if abstract
if
(
check_null_and_abstract
&&
sel_method
->
is_abstract
())
{
...
...
src/share/vm/prims/methodHandles.cpp
浏览文件 @
5c6ac38f
...
...
@@ -187,6 +187,11 @@ oop MethodHandles::init_method_MemberName(oop mname_oop, Method* m, bool do_disp
flags
|=
IS_CONSTRUCTOR
|
(
JVM_REF_invokeSpecial
<<
REFERENCE_KIND_SHIFT
);
}
else
if
(
mods
.
is_static
())
{
flags
|=
IS_METHOD
|
(
JVM_REF_invokeStatic
<<
REFERENCE_KIND_SHIFT
);
// Check if this method is a lambda method that is generated as
// private static method.
if
(
m
->
is_private
()
&&
m
->
method_holder
()
->
is_interface
())
{
vmindex
=
klassItable
::
compute_itable_index
(
m
);
}
}
else
if
(
receiver_limit
!=
mklass
&&
!
receiver_limit
->
is_subtype_of
(
mklass
))
{
return
NULL
;
// bad receiver limit
...
...
src/share/vm/runtime/arguments.cpp
浏览文件 @
5c6ac38f
...
...
@@ -1901,7 +1901,7 @@ bool Arguments::check_vm_args_consistency() {
// Divide by bucket size to prevent a large size from causing rollover when
// calculating amount of memory needed to be allocated for the String table.
status
=
status
&&
verify_interval
(
StringTableSize
,
default
StringTableSize
,
status
=
status
&&
verify_interval
(
StringTableSize
,
minimum
StringTableSize
,
(
max_uintx
/
StringTable
::
bucket_size
()),
"StringTable size"
);
if
(
MinHeapFreeRatio
>
MaxHeapFreeRatio
)
{
...
...
src/share/vm/services/memBaseline.hpp
浏览文件 @
5c6ac38f
...
...
@@ -133,7 +133,7 @@ typedef struct _memType2Name {
// This class aggregates malloc'd records by memory type
class
MallocMem
:
public
_ValueObj
{
class
MallocMem
VALUE_OBJ_CLASS_SPEC
{
private:
MEMFLAGS
_type
;
...
...
@@ -211,7 +211,7 @@ class ArenaMem : public MallocMem {
};
// This class aggregates virtual memory by its memory type
class
VMMem
:
public
_ValueObj
{
class
VMMem
VALUE_OBJ_CLASS_SPEC
{
private:
MEMFLAGS
_type
;
...
...
@@ -296,7 +296,7 @@ class BaselineComparisonReporter;
* aggregates memory usage by callsites when detail tracking
* is on.
*/
class
MemBaseline
:
public
_ValueObj
{
class
MemBaseline
VALUE_OBJ_CLASS_SPEC
{
friend
class
BaselineReporter
;
friend
class
BaselineComparisonReporter
;
...
...
src/share/vm/services/memPtr.hpp
浏览文件 @
5c6ac38f
...
...
@@ -89,7 +89,7 @@ class SequenceGenerator : AllStatic {
* the memory pointer either points to a malloc'd
* memory block, or a mmap'd memory block
*/
class
MemPointer
:
public
_ValueObj
{
class
MemPointer
VALUE_OBJ_CLASS_SPEC
{
public:
MemPointer
()
:
_addr
(
0
)
{
}
MemPointer
(
address
addr
)
:
_addr
(
addr
)
{
}
...
...
src/share/vm/services/memSnapshot.hpp
浏览文件 @
5c6ac38f
...
...
@@ -308,7 +308,7 @@ class VMRecordIterator : public MemPointerArrayIterator {
}
};
class
StagingArea
:
public
_ValueObj
{
class
StagingArea
VALUE_OBJ_CLASS_SPEC
{
private:
MemPointerArray
*
_malloc_data
;
MemPointerArray
*
_vm_data
;
...
...
src/share/vm/services/memTrackWorker.hpp
浏览文件 @
5c6ac38f
...
...
@@ -32,7 +32,7 @@
// Maximum MAX_GENERATIONS generation data can be tracked.
#define MAX_GENERATIONS 512
class
GenerationData
:
public
_ValueObj
{
class
GenerationData
VALUE_OBJ_CLASS_SPEC
{
private:
int
_number_of_classes
;
MemRecorder
*
_recorder_list
;
...
...
src/share/vm/utilities/globalDefinitions.hpp
浏览文件 @
5c6ac38f
...
...
@@ -328,9 +328,10 @@ const int max_method_code_size = 64*K - 1; // JVM spec, 2nd ed. section 4.8.1 (
//----------------------------------------------------------------------------------------------------
//
Minimum StringTableSize value
//
Default and minimum StringTableSize values
const
int
defaultStringTableSize
=
1009
;
const
int
defaultStringTableSize
=
NOT_LP64
(
1009
)
LP64_ONLY
(
60013
);
const
int
minimumStringTableSize
=
1009
;
//----------------------------------------------------------------------------------------------------
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录