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.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -1189,7 +1189,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
// VMReg max_arg,
int
comp_args_on_stack
,
// VMRegStackSlots
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
AdapterGenerator
agen
(
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
);
__
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.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -907,7 +907,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
int
total_args_passed
,
int
comp_args_on_stack
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
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
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
__
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
,
...
...
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.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -778,7 +778,8 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
int
total_args_passed
,
int
comp_args_on_stack
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
)
{
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
)
{
address
i2c_entry
=
__
pc
();
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
gen_c2i_adapter
(
masm
,
total_args_passed
,
comp_args_on_stack
,
sig_bt
,
regs
,
skip_fixup
);
__
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
,
...
...
src/share/vm/includeDB_core
浏览文件 @
9ae3a3cd
...
...
@@ -921,6 +921,7 @@ classFileStream.hpp top.hpp
classLoader.cpp allocation.inline.hpp
classLoader.cpp arguments.hpp
classLoader.cpp bytecodeStream.hpp
classLoader.cpp classFileParser.hpp
classLoader.cpp classFileStream.hpp
classLoader.cpp classLoader.hpp
...
...
@@ -948,6 +949,7 @@ classLoader.cpp jvm_misc.hpp
classLoader.cpp management.hpp
classLoader.cpp oop.inline.hpp
classLoader.cpp oopFactory.hpp
classLoader.cpp oopMapCache.hpp
classLoader.cpp os_<os_family>.inline.hpp
classLoader.cpp symbolOop.hpp
classLoader.cpp systemDictionary.hpp
...
...
@@ -3724,6 +3726,7 @@ sharedRuntime.cpp events.hpp
sharedRuntime.cpp forte.hpp
sharedRuntime.cpp gcLocker.inline.hpp
sharedRuntime.cpp handles.inline.hpp
sharedRuntime.cpp hashtable.inline.hpp
sharedRuntime.cpp init.hpp
sharedRuntime.cpp interfaceSupport.hpp
sharedRuntime.cpp interpreterRuntime.hpp
...
...
@@ -3751,6 +3754,7 @@ sharedRuntime.cpp xmlstream.hpp
sharedRuntime.hpp allocation.hpp
sharedRuntime.hpp bytecodeHistogram.hpp
sharedRuntime.hpp bytecodeTracer.hpp
sharedRuntime.hpp hashtable.hpp
sharedRuntime.hpp linkResolver.hpp
sharedRuntime.hpp resourceArea.hpp
sharedRuntime.hpp threadLocalStorage.hpp
...
...
src/share/vm/oops/methodOop.cpp
浏览文件 @
9ae3a3cd
...
...
@@ -688,7 +688,7 @@ address methodOopDesc::make_adapters(methodHandle mh, TRAPS) {
// so making them eagerly shouldn't be too expensive.
AdapterHandlerEntry
*
adapter
=
AdapterHandlerLibrary
::
get_adapter
(
mh
);
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
);
...
...
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.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -23,6 +23,8 @@
*/
class
AdapterHandlerEntry
;
class
AdapterHandlerTable
;
class
AdapterFingerPrint
;
class
vframeStream
;
// Runtime is the base class for various runtime interfaces
...
...
@@ -337,7 +339,8 @@ class SharedRuntime: AllStatic {
int
total_args_passed
,
int
max_arg
,
const
BasicType
*
sig_bt
,
const
VMRegPair
*
regs
);
const
VMRegPair
*
regs
,
AdapterFingerPrint
*
fingerprint
);
// OSR support
...
...
@@ -528,28 +531,41 @@ class SharedRuntime: AllStatic {
// used by the adapters. The code generation happens here because it's very
// similar to what the adapters have to do.
class
AdapterHandlerEntry
:
public
CHeapObj
{
class
AdapterHandlerEntry
:
public
BasicHashtableEntry
{
friend
class
AdapterHandlerTable
;
private:
AdapterFingerPrint
*
_fingerprint
;
address
_i2c_entry
;
address
_c2i_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
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_c2i_entry
()
{
return
_c2i_entry
;
}
address
get_c2i_unverified_entry
()
{
return
_c2i_unverified_entry
;
}
void
relocate
(
address
new_base
);
AdapterFingerPrint
*
fingerprint
()
{
return
_fingerprint
;
}
AdapterHandlerEntry
*
next
()
{
return
(
AdapterHandlerEntry
*
)
BasicHashtableEntry
::
next
();
}
#ifndef PRODUCT
void
print
();
#endif
/* PRODUCT */
...
...
@@ -558,30 +574,18 @@ class AdapterHandlerEntry : public CHeapObj {
class
AdapterHandlerLibrary
:
public
AllStatic
{
private:
static
BufferBlob
*
_buffer
;
// the temporary code buffer in CodeCache
static
GrowableArray
<
uint64_t
>*
_fingerprints
;
// the fingerprint collection
static
GrowableArray
<
AdapterHandlerEntry
*>
*
_handlers
;
// the corresponding handlers
enum
{
AbstractMethodHandler
=
1
// special handler for abstract methods
};
static
AdapterHandlerTable
*
_adapters
;
static
AdapterHandlerEntry
*
_abstract_method_handler
;
static
BufferBlob
*
buffer_blob
();
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:
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
AdapterHandlerEntry
*
get_adapter
(
methodHandle
method
)
{
return
get_entry
(
get_create_adapter_index
(
method
));
}
static
AdapterHandlerEntry
*
get_adapter
(
methodHandle
method
);
#ifdef HAVE_DTRACE_H
static
nmethod
*
create_dtrace_nmethod
(
methodHandle
method
);
#endif // HAVE_DTRACE_H
...
...
@@ -589,6 +593,7 @@ class AdapterHandlerLibrary: public AllStatic {
#ifndef PRODUCT
static
void
print_handler
(
CodeBlob
*
b
);
static
bool
contains
(
CodeBlob
*
b
);
static
void
print_statistics
();
#endif
/* PRODUCT */
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录