Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/virtualspace.cpp @ 22977:33e421924c67
8058354: SPECjvm2008-Derby -2.7% performance regression on Solaris-X64 starting with 9-b29
Summary: Allow use of large pages for auxiliary data structures in G1. Clean up existing interfaces.
Reviewed-by: jmasa, pliden, stefank
author | tschatzl |
---|---|
date | Tue, 07 Apr 2015 10:53:51 +0200 |
parents | 5788dbd1f2d6 |
children | 30e04eba9e29 |
comparison
equal
deleted
inserted
replaced
22976:5788dbd1f2d6 | 22977:33e421924c67 |
---|---|
50 // Dummy constructor | 50 // Dummy constructor |
51 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0), | 51 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0), |
52 _alignment(0), _special(false), _executable(false) { | 52 _alignment(0), _special(false), _executable(false) { |
53 } | 53 } |
54 | 54 |
55 ReservedSpace::ReservedSpace(size_t size) { | 55 ReservedSpace::ReservedSpace(size_t size, bool prefer_large_pages) { |
56 // Want to use large pages where possible and pad with small pages. | 56 // Want to use large pages where possible and pad with small pages. |
57 size_t page_size = os::page_size_for_region_unaligned(size, 1); | 57 size_t page_size = os::page_size_for_region_unaligned(size, 1); |
58 bool large_pages = page_size != (size_t)os::vm_page_size(); | 58 bool large_pages = page_size != (size_t)os::vm_page_size(); |
59 // Don't force the alignment to be large page aligned, | 59 size_t alignment; |
60 // since that will waste memory. | 60 if (large_pages && prefer_large_pages) { |
61 size_t alignment = os::vm_allocation_granularity(); | 61 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity()); |
62 // ReservedSpace initialization requires size to be aligned to the given | |
63 // alignment. Align the size up. | |
64 size = align_size_up(size, alignment); | |
65 } else { | |
66 // Don't force the alignment to be large page aligned, | |
67 // since that will waste memory. | |
68 alignment = os::vm_allocation_granularity(); | |
69 } | |
62 initialize(size, alignment, large_pages, NULL, 0, false); | 70 initialize(size, alignment, large_pages, NULL, 0, false); |
63 } | 71 } |
64 | 72 |
65 ReservedSpace::ReservedSpace(size_t size, size_t alignment, | 73 ReservedSpace::ReservedSpace(size_t size, size_t alignment, |
66 bool large, | 74 bool large, |