Mercurial > hg > graal-jvmci-8
comparison src/share/vm/runtime/virtualspace.cpp @ 22976:5788dbd1f2d6
8066875: VirtualSpace does not use large pages
Reviewed-by: stefank, tschatzl, anoll, thartmann
author | ehelin |
---|---|
date | Fri, 16 Jan 2015 10:29:12 +0100 |
parents | c2ce24504334 |
children | 33e421924c67 |
comparison
equal
deleted
inserted
replaced
22975:cc5c3ef1f03a | 22976:5788dbd1f2d6 |
---|---|
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) { |
56 size_t page_size = os::page_size_for_region(size, 1); | 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 bool large_pages = page_size != (size_t)os::vm_page_size(); | 58 bool large_pages = page_size != (size_t)os::vm_page_size(); |
58 // Don't force the alignment to be large page aligned, | 59 // Don't force the alignment to be large page aligned, |
59 // since that will waste memory. | 60 // since that will waste memory. |
60 size_t alignment = os::vm_allocation_granularity(); | 61 size_t alignment = os::vm_allocation_granularity(); |
61 initialize(size, alignment, large_pages, NULL, 0, false); | 62 initialize(size, alignment, large_pages, NULL, 0, false); |
370 _executable = false; | 371 _executable = false; |
371 } | 372 } |
372 | 373 |
373 | 374 |
374 bool VirtualSpace::initialize(ReservedSpace rs, size_t committed_size) { | 375 bool VirtualSpace::initialize(ReservedSpace rs, size_t committed_size) { |
375 const size_t max_commit_granularity = os::page_size_for_region(rs.size(), 1); | 376 const size_t max_commit_granularity = os::page_size_for_region_unaligned(rs.size(), 1); |
376 return initialize_with_granularity(rs, committed_size, max_commit_granularity); | 377 return initialize_with_granularity(rs, committed_size, max_commit_granularity); |
377 } | 378 } |
378 | 379 |
379 bool VirtualSpace::initialize_with_granularity(ReservedSpace rs, size_t committed_size, size_t max_commit_granularity) { | 380 bool VirtualSpace::initialize_with_granularity(ReservedSpace rs, size_t committed_size, size_t max_commit_granularity) { |
380 if(!rs.is_reserved()) return false; // allocation failed. | 381 if(!rs.is_reserved()) return false; // allocation failed. |
993 case Reserve: | 994 case Reserve: |
994 return vs.initialize(rs, 0); | 995 return vs.initialize(rs, 0); |
995 case Disable: | 996 case Disable: |
996 return vs.initialize_with_granularity(rs, 0, os::vm_page_size()); | 997 return vs.initialize_with_granularity(rs, 0, os::vm_page_size()); |
997 case Commit: | 998 case Commit: |
998 return vs.initialize_with_granularity(rs, 0, os::page_size_for_region(rs.size(), 1)); | 999 return vs.initialize_with_granularity(rs, 0, os::page_size_for_region_unaligned(rs.size(), 1)); |
999 } | 1000 } |
1000 } | 1001 } |
1001 | 1002 |
1002 public: | 1003 public: |
1003 static void test_virtual_space_actual_committed_space(size_t reserve_size, size_t commit_size, | 1004 static void test_virtual_space_actual_committed_space(size_t reserve_size, size_t commit_size, |