Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
3fe26ea8
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看板
提交
3fe26ea8
编写于
4月 30, 2013
作者:
C
ccheung
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8011661: Insufficient memory message says "malloc" when sometimes it should say "mmap"
Reviewed-by: coleenp, zgu, hseigel
上级
8889d4db
变更
31
隐藏空白更改
内联
并排
Showing
31 changed file
with
78 addition
and
59 deletion
+78
-59
src/os/solaris/vm/os_solaris.cpp
src/os/solaris/vm/os_solaris.cpp
+5
-4
src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
+1
-1
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
+1
-1
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
+1
-1
src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
+1
-1
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
+1
-1
src/share/vm/asm/assembler.cpp
src/share/vm/asm/assembler.cpp
+1
-1
src/share/vm/code/stubs.cpp
src/share/vm/code/stubs.cpp
+1
-1
src/share/vm/code/vtableStubs.cpp
src/share/vm/code/vtableStubs.cpp
+1
-1
src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp
src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp
+1
-1
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
+3
-3
src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+1
-1
src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp
...gc_implementation/parallelScavenge/cardTableExtension.cpp
+1
-1
src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp
...re/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp
+1
-1
src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp
...m/gc_implementation/parallelScavenge/objectStartArray.cpp
+1
-1
src/share/vm/interpreter/interpreterRuntime.cpp
src/share/vm/interpreter/interpreterRuntime.cpp
+1
-1
src/share/vm/memory/allocation.cpp
src/share/vm/memory/allocation.cpp
+3
-3
src/share/vm/memory/allocation.inline.hpp
src/share/vm/memory/allocation.inline.hpp
+8
-4
src/share/vm/memory/blockOffsetTable.cpp
src/share/vm/memory/blockOffsetTable.cpp
+1
-1
src/share/vm/memory/cardTableModRefBS.cpp
src/share/vm/memory/cardTableModRefBS.cpp
+2
-2
src/share/vm/oops/oop.cpp
src/share/vm/oops/oop.cpp
+1
-1
src/share/vm/prims/jvmtiTagMap.cpp
src/share/vm/prims/jvmtiTagMap.cpp
+2
-1
src/share/vm/prims/methodHandles.cpp
src/share/vm/prims/methodHandles.cpp
+2
-1
src/share/vm/runtime/objectMonitor.cpp
src/share/vm/runtime/objectMonitor.cpp
+1
-1
src/share/vm/runtime/stubRoutines.cpp
src/share/vm/runtime/stubRoutines.cpp
+2
-2
src/share/vm/runtime/synchronizer.cpp
src/share/vm/runtime/synchronizer.cpp
+2
-1
src/share/vm/utilities/debug.cpp
src/share/vm/utilities/debug.cpp
+3
-3
src/share/vm/utilities/debug.hpp
src/share/vm/utilities/debug.hpp
+11
-3
src/share/vm/utilities/vmError.cpp
src/share/vm/utilities/vmError.cpp
+10
-7
src/share/vm/utilities/vmError.hpp
src/share/vm/utilities/vmError.hpp
+5
-6
src/share/vm/utilities/workgroup.cpp
src/share/vm/utilities/workgroup.cpp
+3
-2
未找到文件。
src/os/solaris/vm/os_solaris.cpp
浏览文件 @
3fe26ea8
...
...
@@ -824,7 +824,7 @@ void os::init_system_properties_values() {
// allocate new buffer and initialize
info
=
(
Dl_serinfo
*
)
malloc
(
_info
.
dls_size
);
if
(
info
==
NULL
)
{
vm_exit_out_of_memory
(
_info
.
dls_size
,
vm_exit_out_of_memory
(
_info
.
dls_size
,
OOM_MALLOC_ERROR
,
"init_system_properties_values info"
);
}
info
->
dls_size
=
_info
.
dls_size
;
...
...
@@ -866,7 +866,7 @@ void os::init_system_properties_values() {
common_path
=
malloc
(
bufsize
);
if
(
common_path
==
NULL
)
{
free
(
info
);
vm_exit_out_of_memory
(
bufsize
,
vm_exit_out_of_memory
(
bufsize
,
OOM_MALLOC_ERROR
,
"init_system_properties_values common_path"
);
}
sprintf
(
common_path
,
COMMON_DIR
"/lib/%s"
,
cpu_arch
);
...
...
@@ -879,7 +879,7 @@ void os::init_system_properties_values() {
if
(
library_path
==
NULL
)
{
free
(
info
);
free
(
common_path
);
vm_exit_out_of_memory
(
bufsize
,
vm_exit_out_of_memory
(
bufsize
,
OOM_MALLOC_ERROR
,
"init_system_properties_values library_path"
);
}
library_path
[
0
]
=
'\0'
;
...
...
@@ -1623,7 +1623,8 @@ void os::thread_local_storage_at_put(int index, void* value) {
// %%% this is used only in threadLocalStorage.cpp
if
(
thr_setspecific
((
thread_key_t
)
index
,
value
))
{
if
(
errno
==
ENOMEM
)
{
vm_exit_out_of_memory
(
SMALLINT
,
"thr_setspecific: out of swap space"
);
vm_exit_out_of_memory
(
SMALLINT
,
OOM_MALLOC_ERROR
,
"thr_setspecific: out of swap space"
);
}
else
{
fatal
(
err_msg
(
"os::thread_local_storage_at_put: thr_setspecific failed "
"(%s)"
,
strerror
(
errno
)));
...
...
src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp
浏览文件 @
3fe26ea8
...
...
@@ -178,7 +178,7 @@ static void current_stack_region(address* bottom, size_t* size) {
// JVM needs to know exact stack location, abort if it fails
if
(
rslt
!=
0
)
{
if
(
rslt
==
ENOMEM
)
{
vm_exit_out_of_memory
(
0
,
"pthread_getattr_np"
);
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
"pthread_getattr_np"
);
}
else
{
fatal
(
err_msg
(
"pthread_getattr_np failed with errno = %d"
,
rslt
));
}
...
...
src/os_cpu/linux_x86/vm/os_linux_x86.cpp
浏览文件 @
3fe26ea8
...
...
@@ -710,7 +710,7 @@ static void current_stack_region(address * bottom, size_t * size) {
// JVM needs to know exact stack location, abort if it fails
if
(
rslt
!=
0
)
{
if
(
rslt
==
ENOMEM
)
{
vm_exit_out_of_memory
(
0
,
"pthread_getattr_np"
);
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
"pthread_getattr_np"
);
}
else
{
fatal
(
err_msg
(
"pthread_getattr_np failed with errno = %d"
,
rslt
));
}
...
...
src/os_cpu/linux_zero/vm/os_linux_zero.cpp
浏览文件 @
3fe26ea8
...
...
@@ -313,7 +313,7 @@ static void current_stack_region(address *bottom, size_t *size) {
int
res
=
pthread_getattr_np
(
pthread_self
(),
&
attr
);
if
(
res
!=
0
)
{
if
(
res
==
ENOMEM
)
{
vm_exit_out_of_memory
(
0
,
"pthread_getattr_np"
);
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
"pthread_getattr_np"
);
}
else
{
fatal
(
err_msg
(
"pthread_getattr_np failed with errno = %d"
,
res
));
...
...
src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
浏览文件 @
3fe26ea8
...
...
@@ -591,7 +591,7 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
// on the thread stack, which could get a mapping error when touched.
address
addr
=
(
address
)
info
->
si_addr
;
if
(
sig
==
SIGBUS
&&
info
->
si_code
==
BUS_OBJERR
&&
info
->
si_errno
==
ENOMEM
)
{
vm_exit_out_of_memory
(
0
,
"Out of swap space to map in thread stack."
);
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
"Out of swap space to map in thread stack."
);
}
VMError
err
(
t
,
sig
,
pc
,
info
,
ucVoid
);
...
...
src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
浏览文件 @
3fe26ea8
...
...
@@ -745,7 +745,7 @@ JVM_handle_solaris_signal(int sig, siginfo_t* info, void* ucVoid,
// on the thread stack, which could get a mapping error when touched.
address
addr
=
(
address
)
info
->
si_addr
;
if
(
sig
==
SIGBUS
&&
info
->
si_code
==
BUS_OBJERR
&&
info
->
si_errno
==
ENOMEM
)
{
vm_exit_out_of_memory
(
0
,
"Out of swap space to map in thread stack."
);
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
"Out of swap space to map in thread stack."
);
}
VMError
err
(
t
,
sig
,
pc
,
info
,
ucVoid
);
...
...
src/share/vm/asm/assembler.cpp
浏览文件 @
3fe26ea8
...
...
@@ -44,7 +44,7 @@ AbstractAssembler::AbstractAssembler(CodeBuffer* code) {
CodeSection
*
cs
=
code
->
insts
();
cs
->
clear_mark
();
// new assembler kills old mark
if
(
cs
->
start
()
==
NULL
)
{
vm_exit_out_of_memory
(
0
,
err_msg
(
"CodeCache: no room for %s"
,
vm_exit_out_of_memory
(
0
,
OOM_MMAP_ERROR
,
err_msg
(
"CodeCache: no room for %s"
,
code
->
name
()));
}
_code_section
=
cs
;
...
...
src/share/vm/code/stubs.cpp
浏览文件 @
3fe26ea8
...
...
@@ -67,7 +67,7 @@ StubQueue::StubQueue(StubInterface* stub_interface, int buffer_size,
intptr_t
size
=
round_to
(
buffer_size
,
2
*
BytesPerWord
);
BufferBlob
*
blob
=
BufferBlob
::
create
(
name
,
size
);
if
(
blob
==
NULL
)
{
vm_exit_out_of_memory
(
size
,
err_msg
(
"CodeCache: no room for %s"
,
name
));
vm_exit_out_of_memory
(
size
,
OOM_MALLOC_ERROR
,
err_msg
(
"CodeCache: no room for %s"
,
name
));
}
_stub_interface
=
stub_interface
;
_buffer_size
=
blob
->
content_size
();
...
...
src/share/vm/code/vtableStubs.cpp
浏览文件 @
3fe26ea8
...
...
@@ -60,7 +60,7 @@ void* VtableStub::operator new(size_t size, int code_size) {
const
int
bytes
=
chunk_factor
*
real_size
+
pd_code_alignment
();
BufferBlob
*
blob
=
BufferBlob
::
create
(
"vtable chunks"
,
bytes
);
if
(
blob
==
NULL
)
{
vm_exit_out_of_memory
(
bytes
,
"CodeCache: no room for vtable chunks"
);
vm_exit_out_of_memory
(
bytes
,
OOM_MALLOC_ERROR
,
"CodeCache: no room for vtable chunks"
);
}
_chunk
=
blob
->
content_begin
();
_chunk_end
=
_chunk
+
bytes
;
...
...
src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp
浏览文件 @
3fe26ea8
...
...
@@ -77,7 +77,7 @@ void G1BlockOffsetSharedArray::resize(size_t new_word_size) {
assert
(
delta
>
0
,
"just checking"
);
if
(
!
_vs
.
expand_by
(
delta
))
{
// Do better than this for Merlin
vm_exit_out_of_memory
(
delta
,
"offset table expansion"
);
vm_exit_out_of_memory
(
delta
,
OOM_MMAP_ERROR
,
"offset table expansion"
);
}
assert
(
_vs
.
high
()
==
high
+
delta
,
"invalid expansion"
);
// Initialization of the contents is left to the
...
...
src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
浏览文件 @
3fe26ea8
...
...
@@ -1831,7 +1831,7 @@ bool G1CollectedHeap::expand(size_t expand_bytes) {
if
(
G1ExitOnExpansionFailure
&&
_g1_storage
.
uncommitted_size
()
>=
aligned_expand_bytes
)
{
// We had head room...
vm_exit_out_of_memory
(
aligned_expand_bytes
,
"G1 heap expansion"
);
vm_exit_out_of_memory
(
aligned_expand_bytes
,
OOM_MMAP_ERROR
,
"G1 heap expansion"
);
}
}
return
successful
;
...
...
@@ -3614,7 +3614,7 @@ G1CollectedHeap::setup_surviving_young_words() {
uint
array_length
=
g1_policy
()
->
young_cset_region_length
();
_surviving_young_words
=
NEW_C_HEAP_ARRAY
(
size_t
,
(
size_t
)
array_length
,
mtGC
);
if
(
_surviving_young_words
==
NULL
)
{
vm_exit_out_of_memory
(
sizeof
(
size_t
)
*
array_length
,
vm_exit_out_of_memory
(
sizeof
(
size_t
)
*
array_length
,
OOM_MALLOC_ERROR
,
"Not enough space for young surv words summary."
);
}
memset
(
_surviving_young_words
,
0
,
(
size_t
)
array_length
*
sizeof
(
size_t
));
...
...
@@ -4397,7 +4397,7 @@ G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num)
PADDING_ELEM_NUM
;
_surviving_young_words_base
=
NEW_C_HEAP_ARRAY
(
size_t
,
array_length
,
mtGC
);
if
(
_surviving_young_words_base
==
NULL
)
vm_exit_out_of_memory
(
array_length
*
sizeof
(
size_t
),
vm_exit_out_of_memory
(
array_length
*
sizeof
(
size_t
),
OOM_MALLOC_ERROR
,
"Not enough space for young surv histo."
);
_surviving_young_words
=
_surviving_young_words_base
+
PADDING_ELEM_NUM
;
memset
(
_surviving_young_words
,
0
,
(
size_t
)
real_length
*
sizeof
(
size_t
));
...
...
src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
浏览文件 @
3fe26ea8
...
...
@@ -285,7 +285,7 @@ OtherRegionsTable::OtherRegionsTable(HeapRegion* hr) :
_fine_grain_regions
=
new
PerRegionTablePtr
[
_max_fine_entries
];
if
(
_fine_grain_regions
==
NULL
)
{
vm_exit_out_of_memory
(
sizeof
(
void
*
)
*
_max_fine_entries
,
vm_exit_out_of_memory
(
sizeof
(
void
*
)
*
_max_fine_entries
,
OOM_MALLOC_ERROR
,
"Failed to allocate _fine_grain_entries."
);
}
...
...
src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp
浏览文件 @
3fe26ea8
...
...
@@ -567,7 +567,7 @@ bool CardTableExtension::resize_commit_uncommit(int changed_region,
MemRegion
(
new_start_aligned
,
new_end_for_commit
);
if
(
!
os
::
commit_memory
((
char
*
)
new_committed
.
start
(),
new_committed
.
byte_size
()))
{
vm_exit_out_of_memory
(
new_committed
.
byte_size
(),
vm_exit_out_of_memory
(
new_committed
.
byte_size
(),
OOM_MMAP_ERROR
,
"card table expansion"
);
}
}
...
...
src/share/vm/gc_implementation/parallelScavenge/gcTaskThread.cpp
浏览文件 @
3fe26ea8
...
...
@@ -43,7 +43,7 @@ GCTaskThread::GCTaskThread(GCTaskManager* manager,
_time_stamp_index
(
0
)
{
if
(
!
os
::
create_thread
(
this
,
os
::
pgc_thread
))
vm_exit_out_of_memory
(
0
,
"Cannot create GC thread. Out of system resources."
);
vm_exit_out_of_memory
(
0
,
OOM_MALLOC_ERROR
,
"Cannot create GC thread. Out of system resources."
);
if
(
PrintGCTaskTimeStamps
)
{
_time_stamps
=
NEW_C_HEAP_ARRAY
(
GCTaskTimeStamp
,
GCTaskTimeStampEntries
,
mtGC
);
...
...
src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp
浏览文件 @
3fe26ea8
...
...
@@ -99,7 +99,7 @@ void ObjectStartArray::set_covered_region(MemRegion mr) {
// Expand
size_t
expand_by
=
requested_blocks_size_in_bytes
-
current_blocks_size_in_bytes
;
if
(
!
_virtual_space
.
expand_by
(
expand_by
))
{
vm_exit_out_of_memory
(
expand_by
,
"object start array expansion"
);
vm_exit_out_of_memory
(
expand_by
,
OOM_MMAP_ERROR
,
"object start array expansion"
);
}
// Clear *only* the newly allocated region
memset
(
_blocks_region
.
end
(),
clean_block
,
expand_by
);
...
...
src/share/vm/interpreter/interpreterRuntime.cpp
浏览文件 @
3fe26ea8
...
...
@@ -1052,7 +1052,7 @@ void SignatureHandlerLibrary::initialize() {
return
;
}
if
(
set_handler_blob
()
==
NULL
)
{
vm_exit_out_of_memory
(
blob_size
,
"native signature handlers"
);
vm_exit_out_of_memory
(
blob_size
,
OOM_MALLOC_ERROR
,
"native signature handlers"
);
}
BufferBlob
*
bb
=
BufferBlob
::
create
(
"Signature Handler Temp Buffer"
,
...
...
src/share/vm/memory/allocation.cpp
浏览文件 @
3fe26ea8
...
...
@@ -259,7 +259,7 @@ class ChunkPool: public CHeapObj<mtInternal> {
}
if
(
p
==
NULL
)
p
=
os
::
malloc
(
bytes
,
mtChunk
,
CURRENT_PC
);
if
(
p
==
NULL
)
vm_exit_out_of_memory
(
bytes
,
"ChunkPool::allocate"
);
vm_exit_out_of_memory
(
bytes
,
OOM_MALLOC_ERROR
,
"ChunkPool::allocate"
);
return
p
;
}
...
...
@@ -371,7 +371,7 @@ void* Chunk::operator new(size_t requested_size, size_t length) {
default:
{
void
*
p
=
os
::
malloc
(
bytes
,
mtChunk
,
CALLER_PC
);
if
(
p
==
NULL
)
vm_exit_out_of_memory
(
bytes
,
"Chunk::new"
);
vm_exit_out_of_memory
(
bytes
,
OOM_MALLOC_ERROR
,
"Chunk::new"
);
return
p
;
}
}
...
...
@@ -531,7 +531,7 @@ size_t Arena::used() const {
}
void
Arena
::
signal_out_of_memory
(
size_t
sz
,
const
char
*
whence
)
const
{
vm_exit_out_of_memory
(
sz
,
whence
);
vm_exit_out_of_memory
(
sz
,
OOM_MALLOC_ERROR
,
whence
);
}
// Grow a new Chunk
...
...
src/share/vm/memory/allocation.inline.hpp
浏览文件 @
3fe26ea8
...
...
@@ -58,7 +58,9 @@ inline char* AllocateHeap(size_t size, MEMFLAGS flags, address pc = 0,
#ifdef ASSERT
if
(
PrintMallocFree
)
trace_heap_malloc
(
size
,
"AllocateHeap"
,
p
);
#endif
if
(
p
==
NULL
&&
alloc_failmode
==
AllocFailStrategy
::
EXIT_OOM
)
vm_exit_out_of_memory
(
size
,
"AllocateHeap"
);
if
(
p
==
NULL
&&
alloc_failmode
==
AllocFailStrategy
::
EXIT_OOM
)
{
vm_exit_out_of_memory
(
size
,
OOM_MALLOC_ERROR
,
"AllocateHeap"
);
}
return
p
;
}
...
...
@@ -68,7 +70,9 @@ inline char* ReallocateHeap(char *old, size_t size, MEMFLAGS flags,
#ifdef ASSERT
if
(
PrintMallocFree
)
trace_heap_malloc
(
size
,
"ReallocateHeap"
,
p
);
#endif
if
(
p
==
NULL
&&
alloc_failmode
==
AllocFailStrategy
::
EXIT_OOM
)
vm_exit_out_of_memory
(
size
,
"ReallocateHeap"
);
if
(
p
==
NULL
&&
alloc_failmode
==
AllocFailStrategy
::
EXIT_OOM
)
{
vm_exit_out_of_memory
(
size
,
OOM_MALLOC_ERROR
,
"ReallocateHeap"
);
}
return
p
;
}
...
...
@@ -130,12 +134,12 @@ E* ArrayAllocator<E, F>::allocate(size_t length) {
_addr
=
os
::
reserve_memory
(
_size
,
NULL
,
alignment
);
if
(
_addr
==
NULL
)
{
vm_exit_out_of_memory
(
_size
,
"Allocator (reserve)"
);
vm_exit_out_of_memory
(
_size
,
OOM_MMAP_ERROR
,
"Allocator (reserve)"
);
}
bool
success
=
os
::
commit_memory
(
_addr
,
_size
,
false
/* executable */
);
if
(
!
success
)
{
vm_exit_out_of_memory
(
_size
,
"Allocator (commit)"
);
vm_exit_out_of_memory
(
_size
,
OOM_MMAP_ERROR
,
"Allocator (commit)"
);
}
return
(
E
*
)
_addr
;
...
...
src/share/vm/memory/blockOffsetTable.cpp
浏览文件 @
3fe26ea8
...
...
@@ -80,7 +80,7 @@ void BlockOffsetSharedArray::resize(size_t new_word_size) {
assert
(
delta
>
0
,
"just checking"
);
if
(
!
_vs
.
expand_by
(
delta
))
{
// Do better than this for Merlin
vm_exit_out_of_memory
(
delta
,
"offset table expansion"
);
vm_exit_out_of_memory
(
delta
,
OOM_MMAP_ERROR
,
"offset table expansion"
);
}
assert
(
_vs
.
high
()
==
high
+
delta
,
"invalid expansion"
);
}
else
{
...
...
src/share/vm/memory/cardTableModRefBS.cpp
浏览文件 @
3fe26ea8
...
...
@@ -116,7 +116,7 @@ CardTableModRefBS::CardTableModRefBS(MemRegion whole_heap,
_guard_region
=
MemRegion
((
HeapWord
*
)
guard_page
,
_page_size
);
if
(
!
os
::
commit_memory
((
char
*
)
guard_page
,
_page_size
,
_page_size
))
{
// Do better than this for Merlin
vm_exit_out_of_memory
(
_page_size
,
"card table last card"
);
vm_exit_out_of_memory
(
_page_size
,
OOM_MMAP_ERROR
,
"card table last card"
);
}
*
guard_card
=
last_card
;
...
...
@@ -292,7 +292,7 @@ void CardTableModRefBS::resize_covered_region(MemRegion new_region) {
if
(
!
os
::
commit_memory
((
char
*
)
new_committed
.
start
(),
new_committed
.
byte_size
(),
_page_size
))
{
// Do better than this for Merlin
vm_exit_out_of_memory
(
new_committed
.
byte_size
(),
vm_exit_out_of_memory
(
new_committed
.
byte_size
(),
OOM_MMAP_ERROR
,
"card table expansion"
);
}
// Use new_end_aligned (as opposed to new_end_for_commit) because
...
...
src/share/vm/oops/oop.cpp
浏览文件 @
3fe26ea8
...
...
@@ -111,7 +111,7 @@ unsigned int oopDesc::new_hash(jint seed) {
// Use alternate hashing algorithm on the string
return
AltHashing
::
murmur3_32
(
seed
,
chars
,
length
);
}
else
{
vm_exit_out_of_memory
(
length
,
"unable to create Unicode strings for String table rehash"
);
vm_exit_out_of_memory
(
length
,
OOM_MALLOC_ERROR
,
"unable to create Unicode strings for String table rehash"
);
return
0
;
}
}
...
...
src/share/vm/prims/jvmtiTagMap.cpp
浏览文件 @
3fe26ea8
...
...
@@ -153,7 +153,8 @@ class JvmtiTagHashmap : public CHeapObj<mtInternal> {
size_t
s
=
initial_size
*
sizeof
(
JvmtiTagHashmapEntry
*
);
_table
=
(
JvmtiTagHashmapEntry
**
)
os
::
malloc
(
s
,
mtInternal
);
if
(
_table
==
NULL
)
{
vm_exit_out_of_memory
(
s
,
"unable to allocate initial hashtable for jvmti object tags"
);
vm_exit_out_of_memory
(
s
,
OOM_MALLOC_ERROR
,
"unable to allocate initial hashtable for jvmti object tags"
);
}
for
(
int
i
=
0
;
i
<
initial_size
;
i
++
)
{
_table
[
i
]
=
NULL
;
...
...
src/share/vm/prims/methodHandles.cpp
浏览文件 @
3fe26ea8
...
...
@@ -67,7 +67,8 @@ void MethodHandles::generate_adapters() {
TraceTime
timer
(
"MethodHandles adapters generation"
,
TraceStartupTime
);
_adapter_code
=
MethodHandlesAdapterBlob
::
create
(
adapter_code_size
);
if
(
_adapter_code
==
NULL
)
vm_exit_out_of_memory
(
adapter_code_size
,
"CodeCache: no room for MethodHandles adapters"
);
vm_exit_out_of_memory
(
adapter_code_size
,
OOM_MALLOC_ERROR
,
"CodeCache: no room for MethodHandles adapters"
);
{
CodeBuffer
code
(
_adapter_code
);
MethodHandlesAdapterGenerator
g
(
&
code
);
...
...
src/share/vm/runtime/objectMonitor.cpp
浏览文件 @
3fe26ea8
...
...
@@ -2404,7 +2404,7 @@ void ObjectMonitor::DeferredInitialize () {
size_t
sz
=
strlen
(
SyncKnobs
)
;
char
*
knobs
=
(
char
*
)
malloc
(
sz
+
2
)
;
if
(
knobs
==
NULL
)
{
vm_exit_out_of_memory
(
sz
+
2
,
"Parse SyncKnobs"
)
;
vm_exit_out_of_memory
(
sz
+
2
,
OOM_MALLOC_ERROR
,
"Parse SyncKnobs"
)
;
guarantee
(
0
,
"invariant"
)
;
}
strcpy
(
knobs
,
SyncKnobs
)
;
...
...
src/share/vm/runtime/stubRoutines.cpp
浏览文件 @
3fe26ea8
...
...
@@ -147,7 +147,7 @@ void StubRoutines::initialize1() {
TraceTime
timer
(
"StubRoutines generation 1"
,
TraceStartupTime
);
_code1
=
BufferBlob
::
create
(
"StubRoutines (1)"
,
code_size1
);
if
(
_code1
==
NULL
)
{
vm_exit_out_of_memory
(
code_size1
,
"CodeCache: no room for StubRoutines (1)"
);
vm_exit_out_of_memory
(
code_size1
,
OOM_MALLOC_ERROR
,
"CodeCache: no room for StubRoutines (1)"
);
}
CodeBuffer
buffer
(
_code1
);
StubGenerator_generate
(
&
buffer
,
false
);
...
...
@@ -199,7 +199,7 @@ void StubRoutines::initialize2() {
TraceTime
timer
(
"StubRoutines generation 2"
,
TraceStartupTime
);
_code2
=
BufferBlob
::
create
(
"StubRoutines (2)"
,
code_size2
);
if
(
_code2
==
NULL
)
{
vm_exit_out_of_memory
(
code_size2
,
"CodeCache: no room for StubRoutines (2)"
);
vm_exit_out_of_memory
(
code_size2
,
OOM_MALLOC_ERROR
,
"CodeCache: no room for StubRoutines (2)"
);
}
CodeBuffer
buffer
(
_code2
);
StubGenerator_generate
(
&
buffer
,
true
);
...
...
src/share/vm/runtime/synchronizer.cpp
浏览文件 @
3fe26ea8
...
...
@@ -1018,7 +1018,8 @@ ObjectMonitor * ATTR ObjectSynchronizer::omAlloc (Thread * Self) {
// We might be able to induce a STW safepoint and scavenge enough
// objectMonitors to permit progress.
if
(
temp
==
NULL
)
{
vm_exit_out_of_memory
(
sizeof
(
ObjectMonitor
[
_BLOCKSIZE
]),
"Allocate ObjectMonitors"
)
;
vm_exit_out_of_memory
(
sizeof
(
ObjectMonitor
[
_BLOCKSIZE
]),
OOM_MALLOC_ERROR
,
"Allocate ObjectMonitors"
);
}
// Format the block.
...
...
src/share/vm/utilities/debug.cpp
浏览文件 @
3fe26ea8
...
...
@@ -229,11 +229,11 @@ void report_fatal(const char* file, int line, const char* message)
}
void
report_vm_out_of_memory
(
const
char
*
file
,
int
line
,
size_t
size
,
const
char
*
message
)
{
VMErrorType
vm_err_type
,
const
char
*
message
)
{
if
(
Debugging
)
return
;
Thread
*
thread
=
ThreadLocalStorage
::
get_thread_slow
();
VMError
(
thread
,
file
,
line
,
size
,
message
).
report_and_die
();
VMError
(
thread
,
file
,
line
,
size
,
vm_err_type
,
message
).
report_and_die
();
// The UseOSErrorReporting option in report_and_die() may allow a return
// to here. If so then we'll have to figure out how to handle it.
...
...
@@ -344,7 +344,7 @@ void test_error_handler(size_t test_num)
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
,
eol
,
msg
));
case
8
:
vm_exit_out_of_memory
(
num
,
"ChunkPool::allocate"
);
case
8
:
vm_exit_out_of_memory
(
num
,
OOM_MALLOC_ERROR
,
"ChunkPool::allocate"
);
case
9
:
ShouldNotCallThis
();
case
10
:
ShouldNotReachHere
();
case
11
:
Unimplemented
();
...
...
src/share/vm/utilities/debug.hpp
浏览文件 @
3fe26ea8
...
...
@@ -174,9 +174,9 @@ do { \
} while (0)
// out of memory
#define vm_exit_out_of_memory(size,
msg)
\
#define vm_exit_out_of_memory(size,
vm_err_type, msg)
\
do { \
report_vm_out_of_memory(__FILE__, __LINE__, size,
msg);
\
report_vm_out_of_memory(__FILE__, __LINE__, size,
vm_err_type, msg);
\
BREAKPOINT; \
} while (0)
...
...
@@ -204,12 +204,20 @@ do { \
BREAKPOINT; \
} while (0);
// types of VM error - originally in vmError.hpp
enum
VMErrorType
{
INTERNAL_ERROR
=
0xe0000000
,
OOM_MALLOC_ERROR
=
0xe0000001
,
OOM_MMAP_ERROR
=
0xe0000002
};
// error reporting helper functions
void
report_vm_error
(
const
char
*
file
,
int
line
,
const
char
*
error_msg
,
const
char
*
detail_msg
=
NULL
);
void
report_fatal
(
const
char
*
file
,
int
line
,
const
char
*
message
);
void
report_vm_out_of_memory
(
const
char
*
file
,
int
line
,
size_t
size
,
const
char
*
message
);
VMErrorType
vm_err_type
,
const
char
*
message
);
void
report_should_not_call
(
const
char
*
file
,
int
line
);
void
report_should_not_reach_here
(
const
char
*
file
,
int
line
);
void
report_unimplemented
(
const
char
*
file
,
int
line
);
...
...
src/share/vm/utilities/vmError.cpp
浏览文件 @
3fe26ea8
...
...
@@ -100,7 +100,7 @@ VMError::VMError(Thread* thread, const char* filename, int lineno,
const
char
*
message
,
const
char
*
detail_msg
)
{
_thread
=
thread
;
_id
=
internal_error
;
// Value that's not an OS exception/signal
_id
=
INTERNAL_ERROR
;
// Value that's not an OS exception/signal
_filename
=
filename
;
_lineno
=
lineno
;
_message
=
message
;
...
...
@@ -119,9 +119,9 @@ VMError::VMError(Thread* thread, const char* filename, int lineno,
// Constructor for OOM errors
VMError
::
VMError
(
Thread
*
thread
,
const
char
*
filename
,
int
lineno
,
size_t
size
,
const
char
*
message
)
{
VMErrorType
vm_err_type
,
const
char
*
message
)
{
_thread
=
thread
;
_id
=
oom_error
;
// Value that's not an OS exception/signal
_id
=
vm_err_type
;
// Value that's not an OS exception/signal
_filename
=
filename
;
_lineno
=
lineno
;
_message
=
message
;
...
...
@@ -142,7 +142,7 @@ VMError::VMError(Thread* thread, const char* filename, int lineno, size_t size,
// Constructor for non-fatal errors
VMError
::
VMError
(
const
char
*
message
)
{
_thread
=
NULL
;
_id
=
internal_error
;
// Value that's not an OS exception/signal
_id
=
INTERNAL_ERROR
;
// Value that's not an OS exception/signal
_filename
=
NULL
;
_lineno
=
0
;
_message
=
message
;
...
...
@@ -351,9 +351,12 @@ void VMError::report(outputStream* st) {
STEP
(
15
,
"(printing type of error)"
)
switch
(
_id
)
{
case
oom_error
:
case
OOM_MALLOC_ERROR
:
case
OOM_MMAP_ERROR
:
if
(
_size
)
{
st
->
print
(
"# Native memory allocation (malloc) failed to allocate "
);
st
->
print
(
"# Native memory allocation "
);
st
->
print
((
_id
==
(
int
)
OOM_MALLOC_ERROR
)
?
"(malloc) failed to allocate "
:
"(mmap) failed to map "
);
jio_snprintf
(
buf
,
sizeof
(
buf
),
SIZE_FORMAT
,
_size
);
st
->
print
(
buf
);
st
->
print
(
" bytes"
);
...
...
@@ -386,7 +389,7 @@ void VMError::report(outputStream* st) {
return
;
// that's enough for the screen
}
break
;
case
internal_error
:
case
INTERNAL_ERROR
:
default:
break
;
}
...
...
src/share/vm/utilities/vmError.hpp
浏览文件 @
3fe26ea8
...
...
@@ -34,10 +34,6 @@ class VMError : public StackObj {
friend
class
VM_ReportJavaOutOfMemory
;
friend
class
Decoder
;
enum
ErrorType
{
internal_error
=
0xe0000000
,
oom_error
=
0xe0000001
};
int
_id
;
// Solaris/Linux signals: 0 - SIGRTMAX
// Windows exceptions: 0xCxxxxxxx system errors
// 0x8xxxxxxx system warnings
...
...
@@ -96,9 +92,12 @@ class VMError : public StackObj {
// accessor
const
char
*
message
()
const
{
return
_message
;
}
const
char
*
detail_msg
()
const
{
return
_detail_msg
;
}
bool
should_report_bug
(
unsigned
int
id
)
{
return
id
!=
oom_error
;
}
bool
should_report_bug
(
unsigned
int
id
)
{
return
(
id
!=
OOM_MALLOC_ERROR
)
&&
(
id
!=
OOM_MMAP_ERROR
);
}
public:
// Constructor for crashes
VMError
(
Thread
*
thread
,
unsigned
int
sig
,
address
pc
,
void
*
siginfo
,
void
*
context
);
...
...
@@ -108,7 +107,7 @@ public:
// Constructor for VM OOM errors
VMError
(
Thread
*
thread
,
const
char
*
filename
,
int
lineno
,
size_t
size
,
const
char
*
message
);
VMErrorType
vm_err_type
,
const
char
*
message
);
// Constructor for non-fatal errors
VMError
(
const
char
*
message
);
...
...
src/share/vm/utilities/workgroup.cpp
浏览文件 @
3fe26ea8
...
...
@@ -79,7 +79,7 @@ bool WorkGang::initialize_workers() {
}
_gang_workers
=
NEW_C_HEAP_ARRAY
(
GangWorker
*
,
total_workers
(),
mtInternal
);
if
(
gang_workers
()
==
NULL
)
{
vm_exit_out_of_memory
(
0
,
"Cannot create GangWorker array."
);
vm_exit_out_of_memory
(
0
,
OOM_MALLOC_ERROR
,
"Cannot create GangWorker array."
);
return
false
;
}
os
::
ThreadType
worker_type
;
...
...
@@ -93,7 +93,8 @@ bool WorkGang::initialize_workers() {
assert
(
new_worker
!=
NULL
,
"Failed to allocate GangWorker"
);
_gang_workers
[
worker
]
=
new_worker
;
if
(
new_worker
==
NULL
||
!
os
::
create_thread
(
new_worker
,
worker_type
))
{
vm_exit_out_of_memory
(
0
,
"Cannot create worker GC thread. Out of system resources."
);
vm_exit_out_of_memory
(
0
,
OOM_MALLOC_ERROR
,
"Cannot create worker GC thread. Out of system resources."
);
return
false
;
}
if
(
!
DisableStartThread
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录