OpenJDK / amber / amber
changeset 39229:8bfc00dd44b6
8159056: [aix] Compressed class space not allocated in lower regions
Reviewed-by: dholmes, enevill
author | goetz |
---|---|
date | Wed, 08 Jun 2016 16:07:49 +0200 |
parents | 32ce84798166 |
children | b991240ffb0d |
files | hotspot/src/share/vm/memory/metaspace.cpp |
diffstat | 1 files changed, 15 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/share/vm/memory/metaspace.cpp Thu Jun 09 16:52:32 2016 +0300 +++ b/hotspot/src/share/vm/memory/metaspace.cpp Wed Jun 08 16:07:49 2016 +0200 @@ -2933,7 +2933,7 @@ // Don't use large pages for the class space. bool large_pages = false; -#ifndef AARCH64 +#if !(defined(AARCH64) || defined(AIX)) ReservedSpace metaspace_rs = ReservedSpace(compressed_class_space_size(), _reserve_alignment, large_pages, @@ -2945,18 +2945,25 @@ // bits. if ((uint64_t)requested_addr + compressed_class_space_size() < 4*G) { metaspace_rs = ReservedSpace(compressed_class_space_size(), - _reserve_alignment, - large_pages, - requested_addr); + _reserve_alignment, + large_pages, + requested_addr); } if (! metaspace_rs.is_reserved()) { - // Try to align metaspace so that we can decode a compressed klass - // with a single MOVK instruction. We can do this iff the + // Aarch64: Try to align metaspace so that we can decode a compressed + // klass with a single MOVK instruction. We can do this iff the // compressed class base is a multiple of 4G. - for (char *a = (char*)align_ptr_up(requested_addr, 4*G); + // Aix: Search for a place where we can find memory. If we need to load + // the base, 4G alignment is helpful, too. + size_t increment = AARCH64_ONLY(4*)G; + for (char *a = (char*)align_ptr_up(requested_addr, increment); a < (char*)(1024*G); - a += 4*G) { + a += increment) { + if (a == (char *)(32*G)) { + // Go faster from here on. Zero-based is no longer possible. + increment = 4*G; + } #if INCLUDE_CDS if (UseSharedSpaces