Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
9ae3a3cd
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看板
提交
9ae3a3cd
编写于
1月 20, 2010
作者:
N
never
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6911204: generated adapters with large signatures can fill up the code cache
Reviewed-by: kvn, jrose
上级
0b9139fb
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
373 addition
and
131 deletion
+373
-131
src/cpu/sparc/vm/sharedRuntime_sparc.cpp
src/cpu/sparc/vm/sharedRuntime_sparc.cpp
+4
-3
src/cpu/x86/vm/sharedRuntime_x86_32.cpp
src/cpu/x86/vm/sharedRuntime_x86_32.cpp
+4
-3
src/cpu/x86/vm/sharedRuntime_x86_64.cpp
src/cpu/x86/vm/sharedRuntime_x86_64.cpp
+4
-3
src/share/vm/includeDB_core
src/share/vm/includeDB_core
+4
-0
src/share/vm/oops/methodOop.cpp
src/share/vm/oops/methodOop.cpp
+1
-1
src/share/vm/runtime/sharedRuntime.cpp
src/share/vm/runtime/sharedRuntime.cpp
+322
-92
src/share/vm/runtime/sharedRuntime.hpp
src/share/vm/runtime/sharedRuntime.hpp
+34
-29
未找到文件。
src/cpu/sparc/vm/sharedRuntime_sparc.cpp
浏览文件 @
9ae3a3cd
/*
/*
* Copyright 2003-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-20
10
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -1189,7 +1189,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -1189,7 +1189,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
// VMReg max_arg,
// VMReg max_arg,
int
comp_args_on_stack
,
// VMRegStackSlots
int
comp_args_on_stack
,
// VMRegStackSlots
const
BasicType
*
sig_bt
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
address
i2c_entry
=
__
pc
();
AdapterGenerator
agen
(
masm
);
AdapterGenerator
agen
(
masm
);
...
@@ -1258,7 +1259,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -1258,7 +1259,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
agen
.
gen_c2i_adapter
(
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
agen
.
gen_c2i_adapter
(
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
__
flush
();
__
flush
();
return
new
AdapterHandlerEntry
(
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
return
AdapterHandlerLibrary
::
new_entry
(
fingerprint
,
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
}
}
...
...
src/cpu/x86/vm/sharedRuntime_x86_32.cpp
浏览文件 @
9ae3a3cd
/*
/*
* Copyright 2003-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-20
10
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -907,7 +907,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -907,7 +907,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
int
total_args_passed
,
int
total_args_passed
,
int
comp_args_on_stack
,
int
comp_args_on_stack
,
const
BasicType
*
sig_bt
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
address
i2c_entry
=
__
pc
();
gen_i2c_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
);
gen_i2c_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
);
...
@@ -954,7 +955,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -954,7 +955,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
__
flush
();
__
flush
();
return
new
AdapterHandlerEntry
(
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
return
AdapterHandlerLibrary
::
new_entry
(
fingerprint
,
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
}
}
int
SharedRuntime
::
c_calling_convention
(
const
BasicType
*
sig_bt
,
int
SharedRuntime
::
c_calling_convention
(
const
BasicType
*
sig_bt
,
...
...
src/cpu/x86/vm/sharedRuntime_x86_64.cpp
浏览文件 @
9ae3a3cd
/*
/*
* Copyright 2003-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-20
10
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -778,7 +778,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -778,7 +778,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
int
total_args_passed
,
int
total_args_passed
,
int
comp_args_on_stack
,
int
comp_args_on_stack
,
const
BasicType
*
sig_bt
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
address
i2c_entry
=
__
pc
();
gen_i2c_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
);
gen_i2c_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
);
...
@@ -824,7 +825,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
...
@@ -824,7 +825,7 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
__
flush
();
__
flush
();
return
new
AdapterHandlerEntry
(
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
return
AdapterHandlerLibrary
::
new_entry
(
fingerprint
,
i2c_entry
,
c2i_entry
,
c2i_unverified_entry
);
}
}
int
SharedRuntime
::
c_calling_convention
(
const
BasicType
*
sig_bt
,
int
SharedRuntime
::
c_calling_convention
(
const
BasicType
*
sig_bt
,
...
...
src/share/vm/includeDB_core
浏览文件 @
9ae3a3cd
...
@@ -921,6 +921,7 @@ classFileStream.hpp top.hpp
...
@@ -921,6 +921,7 @@ classFileStream.hpp top.hpp
classLoader.cpp allocation.inline.hpp
classLoader.cpp allocation.inline.hpp
classLoader.cpp arguments.hpp
classLoader.cpp arguments.hpp
classLoader.cpp bytecodeStream.hpp
classLoader.cpp classFileParser.hpp
classLoader.cpp classFileParser.hpp
classLoader.cpp classFileStream.hpp
classLoader.cpp classFileStream.hpp
classLoader.cpp classLoader.hpp
classLoader.cpp classLoader.hpp
...
@@ -948,6 +949,7 @@ classLoader.cpp jvm_misc.hpp
...
@@ -948,6 +949,7 @@ classLoader.cpp jvm_misc.hpp
classLoader.cpp management.hpp
classLoader.cpp management.hpp
classLoader.cpp oop.inline.hpp
classLoader.cpp oop.inline.hpp
classLoader.cpp oopFactory.hpp
classLoader.cpp oopFactory.hpp
classLoader.cpp oopMapCache.hpp
classLoader.cpp os_<os_family>.inline.hpp
classLoader.cpp os_<os_family>.inline.hpp
classLoader.cpp symbolOop.hpp
classLoader.cpp symbolOop.hpp
classLoader.cpp systemDictionary.hpp
classLoader.cpp systemDictionary.hpp
...
@@ -3724,6 +3726,7 @@ sharedRuntime.cpp events.hpp
...
@@ -3724,6 +3726,7 @@ sharedRuntime.cpp events.hpp
sharedRuntime.cpp forte.hpp
sharedRuntime.cpp forte.hpp
sharedRuntime.cpp gcLocker.inline.hpp
sharedRuntime.cpp gcLocker.inline.hpp
sharedRuntime.cpp handles.inline.hpp
sharedRuntime.cpp handles.inline.hpp
sharedRuntime.cpp hashtable.inline.hpp
sharedRuntime.cpp init.hpp
sharedRuntime.cpp init.hpp
sharedRuntime.cpp interfaceSupport.hpp
sharedRuntime.cpp interfaceSupport.hpp
sharedRuntime.cpp interpreterRuntime.hpp
sharedRuntime.cpp interpreterRuntime.hpp
...
@@ -3751,6 +3754,7 @@ sharedRuntime.cpp xmlstream.hpp
...
@@ -3751,6 +3754,7 @@ sharedRuntime.cpp xmlstream.hpp
sharedRuntime.hpp allocation.hpp
sharedRuntime.hpp allocation.hpp
sharedRuntime.hpp bytecodeHistogram.hpp
sharedRuntime.hpp bytecodeHistogram.hpp
sharedRuntime.hpp bytecodeTracer.hpp
sharedRuntime.hpp bytecodeTracer.hpp
sharedRuntime.hpp hashtable.hpp
sharedRuntime.hpp linkResolver.hpp
sharedRuntime.hpp linkResolver.hpp
sharedRuntime.hpp resourceArea.hpp
sharedRuntime.hpp resourceArea.hpp
sharedRuntime.hpp threadLocalStorage.hpp
sharedRuntime.hpp threadLocalStorage.hpp
...
...
src/share/vm/oops/methodOop.cpp
浏览文件 @
9ae3a3cd
...
@@ -688,7 +688,7 @@ address methodOopDesc::make_adapters(methodHandle mh, TRAPS) {
...
@@ -688,7 +688,7 @@ address methodOopDesc::make_adapters(methodHandle mh, TRAPS) {
// so making them eagerly shouldn't be too expensive.
// so making them eagerly shouldn't be too expensive.
AdapterHandlerEntry
*
adapter
=
AdapterHandlerLibrary
::
get_adapter
(
mh
);
AdapterHandlerEntry
*
adapter
=
AdapterHandlerLibrary
::
get_adapter
(
mh
);
if
(
adapter
==
NULL
)
{
if
(
adapter
==
NULL
)
{
THROW_
0
(
vmSymbols
::
java_lang_OutOfMemoryError
()
);
THROW_
MSG_NULL
(
vmSymbols
::
java_lang_VirtualMachineError
(),
"out of space in CodeCache for adapters"
);
}
}
mh
->
set_adapter_entry
(
adapter
);
mh
->
set_adapter_entry
(
adapter
);
...
...
src/share/vm/runtime/sharedRuntime.cpp
浏览文件 @
9ae3a3cd
此差异已折叠。
点击以展开。
src/share/vm/runtime/sharedRuntime.hpp
浏览文件 @
9ae3a3cd
/*
/*
* Copyright 1997-20
09
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-20
10
Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -23,6 +23,8 @@
...
@@ -23,6 +23,8 @@
*/
*/
class
AdapterHandlerEntry
;
class
AdapterHandlerEntry
;
class
AdapterHandlerTable
;
class
AdapterFingerPrint
;
class
vframeStream
;
class
vframeStream
;
// Runtime is the base class for various runtime interfaces
// Runtime is the base class for various runtime interfaces
...
@@ -337,7 +339,8 @@ class SharedRuntime: AllStatic {
...
@@ -337,7 +339,8 @@ class SharedRuntime: AllStatic {
int
total_args_passed
,
int
total_args_passed
,
int
max_arg
,
int
max_arg
,
const
BasicType
*
sig_bt
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
);
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
);
// OSR support
// OSR support
...
@@ -528,28 +531,41 @@ class SharedRuntime: AllStatic {
...
@@ -528,28 +531,41 @@ class SharedRuntime: AllStatic {
// used by the adapters. The code generation happens here because it's very
// used by the adapters. The code generation happens here because it's very
// similar to what the adapters have to do.
// similar to what the adapters have to do.
class
AdapterHandlerEntry
:
public
CHeapObj
{
class
AdapterHandlerEntry
:
public
BasicHashtableEntry
{
friend
class
AdapterHandlerTable
;
private:
private:
AdapterFingerPrint
*
_fingerprint
;
address
_i2c_entry
;
address
_i2c_entry
;
address
_c2i_entry
;
address
_c2i_entry
;
address
_c2i_unverified_entry
;
address
_c2i_unverified_entry
;
public:
void
init
(
AdapterFingerPrint
*
fingerprint
,
address
i2c_entry
,
address
c2i_entry
,
address
c2i_unverified_entry
)
{
_fingerprint
=
fingerprint
;
_i2c_entry
=
i2c_entry
;
_c2i_entry
=
c2i_entry
;
_c2i_unverified_entry
=
c2i_unverified_entry
;
}
// should never be used
AdapterHandlerEntry
();
public:
// The name we give all buffer blobs
// The name we give all buffer blobs
static
const
char
*
name
;
static
const
char
*
name
;
AdapterHandlerEntry
(
address
i2c_entry
,
address
c2i_entry
,
address
c2i_unverified_entry
)
:
_i2c_entry
(
i2c_entry
),
_c2i_entry
(
c2i_entry
),
_c2i_unverified_entry
(
c2i_unverified_entry
)
{
}
address
get_i2c_entry
()
{
return
_i2c_entry
;
}
address
get_i2c_entry
()
{
return
_i2c_entry
;
}
address
get_c2i_entry
()
{
return
_c2i_entry
;
}
address
get_c2i_entry
()
{
return
_c2i_entry
;
}
address
get_c2i_unverified_entry
()
{
return
_c2i_unverified_entry
;
}
address
get_c2i_unverified_entry
()
{
return
_c2i_unverified_entry
;
}
void
relocate
(
address
new_base
);
void
relocate
(
address
new_base
);
AdapterFingerPrint
*
fingerprint
()
{
return
_fingerprint
;
}
AdapterHandlerEntry
*
next
()
{
return
(
AdapterHandlerEntry
*
)
BasicHashtableEntry
::
next
();
}
#ifndef PRODUCT
#ifndef PRODUCT
void
print
();
void
print
();
#endif
/* PRODUCT */
#endif
/* PRODUCT */
...
@@ -558,30 +574,18 @@ class AdapterHandlerEntry : public CHeapObj {
...
@@ -558,30 +574,18 @@ class AdapterHandlerEntry : public CHeapObj {
class
AdapterHandlerLibrary
:
public
AllStatic
{
class
AdapterHandlerLibrary
:
public
AllStatic
{
private:
private:
static
BufferBlob
*
_buffer
;
// the temporary code buffer in CodeCache
static
BufferBlob
*
_buffer
;
// the temporary code buffer in CodeCache
static
GrowableArray
<
uint64_t
>*
_fingerprints
;
// the fingerprint collection
static
AdapterHandlerTable
*
_adapters
;
static
GrowableArray
<
AdapterHandlerEntry
*>
*
_handlers
;
// the corresponding handlers
static
AdapterHandlerEntry
*
_abstract_method_handler
;
enum
{
AbstractMethodHandler
=
1
// special handler for abstract methods
};
static
BufferBlob
*
buffer_blob
();
static
BufferBlob
*
buffer_blob
();
static
void
initialize
();
static
void
initialize
();
static
int
get_create_adapter_index
(
methodHandle
method
);
static
address
get_i2c_entry
(
int
index
)
{
return
get_entry
(
index
)
->
get_i2c_entry
();
}
static
address
get_c2i_entry
(
int
index
)
{
return
get_entry
(
index
)
->
get_c2i_entry
();
}
static
address
get_c2i_unverified_entry
(
int
index
)
{
return
get_entry
(
index
)
->
get_c2i_unverified_entry
();
}
public:
public:
static
AdapterHandlerEntry
*
get_entry
(
int
index
)
{
return
_handlers
->
at
(
index
);
}
static
AdapterHandlerEntry
*
new_entry
(
AdapterFingerPrint
*
fingerprint
,
address
i2c_entry
,
address
c2i_entry
,
address
c2i_unverified_entry
);
static
nmethod
*
create_native_wrapper
(
methodHandle
method
);
static
nmethod
*
create_native_wrapper
(
methodHandle
method
);
static
AdapterHandlerEntry
*
get_adapter
(
methodHandle
method
)
{
static
AdapterHandlerEntry
*
get_adapter
(
methodHandle
method
);
return
get_entry
(
get_create_adapter_index
(
method
));
}
#ifdef HAVE_DTRACE_H
#ifdef HAVE_DTRACE_H
static
nmethod
*
create_dtrace_nmethod
(
methodHandle
method
);
static
nmethod
*
create_dtrace_nmethod
(
methodHandle
method
);
#endif // HAVE_DTRACE_H
#endif // HAVE_DTRACE_H
...
@@ -589,6 +593,7 @@ class AdapterHandlerLibrary: public AllStatic {
...
@@ -589,6 +593,7 @@ class AdapterHandlerLibrary: public AllStatic {
#ifndef PRODUCT
#ifndef PRODUCT
static
void
print_handler
(
CodeBlob
*
b
);
static
void
print_handler
(
CodeBlob
*
b
);
static
bool
contains
(
CodeBlob
*
b
);
static
bool
contains
(
CodeBlob
*
b
);
static
void
print_statistics
();
#endif
/* PRODUCT */
#endif
/* PRODUCT */
};
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录