comparison src/share/vm/memory/heap.cpp @ 79:82db0859acbe

6642862: Code cache allocation fails with large pages after 6588638 Reviewed-by: apetrusenko
author jcoomes
date Fri, 28 Mar 2008 23:35:42 -0700
parents a61af66fc99e
children d1605aabd0a1
comparison
equal deleted inserted replaced
78:e1e86702e43e 79:82db0859acbe
100 100
101 _segment_size = segment_size; 101 _segment_size = segment_size;
102 _log2_segment_size = exact_log2(segment_size); 102 _log2_segment_size = exact_log2(segment_size);
103 103
104 // Reserve and initialize space for _memory. 104 // Reserve and initialize space for _memory.
105 const size_t page_size = os::page_size_for_region(committed_size, 105 const size_t page_size = os::can_execute_large_page_memory() ?
106 reserved_size, 8); 106 os::page_size_for_region(committed_size, reserved_size, 8) :
107 os::vm_page_size();
107 const size_t granularity = os::vm_allocation_granularity(); 108 const size_t granularity = os::vm_allocation_granularity();
108 const size_t r_align = MAX2(page_size, granularity); 109 const size_t r_align = MAX2(page_size, granularity);
109 const size_t r_size = align_size_up(reserved_size, r_align); 110 const size_t r_size = align_size_up(reserved_size, r_align);
110 const size_t c_size = align_size_up(committed_size, page_size); 111 const size_t c_size = align_size_up(committed_size, page_size);
111 112
112 const size_t rs_align = page_size == (size_t) os::vm_page_size() ? 0 : 113 const size_t rs_align = page_size == (size_t) os::vm_page_size() ? 0 :
113 MAX2(page_size, granularity); 114 MAX2(page_size, granularity);
114 ReservedSpace rs(r_size, rs_align, false); 115 ReservedSpace rs(r_size, rs_align, rs_align > 0);
115 os::trace_page_sizes("code heap", committed_size, reserved_size, page_size, 116 os::trace_page_sizes("code heap", committed_size, reserved_size, page_size,
116 rs.base(), rs.size()); 117 rs.base(), rs.size());
117 if (!_memory.initialize(rs, c_size)) { 118 if (!_memory.initialize(rs, c_size)) {
118 return false; 119 return false;
119 } 120 }