< prev index next >

src/share/vm/utilities/stack.inline.hpp

Print this page
rev 8132 : 8077420: Build failure with SS12u4


  69 E Stack<E, F>::pop()
  70 {
  71   assert(!is_empty(), "popping from an empty stack");
  72   if (this->_cur_seg_size == 1) {
  73     E tmp = _cur_seg[--this->_cur_seg_size];
  74     pop_segment();
  75     return tmp;
  76   }
  77   return this->_cur_seg[--this->_cur_seg_size];
  78 }
  79 
  80 template <class E, MEMFLAGS F>
  81 void Stack<E, F>::clear(bool clear_cache)
  82 {
  83   free_segments(_cur_seg);
  84   if (clear_cache) free_segments(_cache);
  85   reset(clear_cache);
  86 }
  87 
  88 template <class E, MEMFLAGS F>
  89 size_t Stack<E, F>::default_segment_size()
  90 {
  91   // Number of elements that fit in 4K bytes minus the size of two pointers
  92   // (link field and malloc header).
  93   return (4096 - 2 * sizeof(E*)) / sizeof(E);
  94 }
  95 
  96 template <class E, MEMFLAGS F>
  97 size_t Stack<E, F>::adjust_segment_size(size_t seg_size)
  98 {
  99   const size_t elem_sz = sizeof(E);
 100   const size_t ptr_sz = sizeof(E*);
 101   assert(elem_sz % ptr_sz == 0 || ptr_sz % elem_sz == 0, "bad element size");
 102   if (elem_sz < ptr_sz) {
 103     return align_size_up(seg_size * elem_sz, ptr_sz) / elem_sz;
 104   }
 105   return seg_size;
 106 }
 107 
 108 template <class E, MEMFLAGS F>
 109 size_t Stack<E, F>::link_offset() const
 110 {
 111   return align_size_up(this->_seg_size * sizeof(E), sizeof(E*));
 112 }
 113 
 114 template <class E, MEMFLAGS F>
 115 size_t Stack<E, F>::segment_bytes() const
 116 {




  69 E Stack<E, F>::pop()
  70 {
  71   assert(!is_empty(), "popping from an empty stack");
  72   if (this->_cur_seg_size == 1) {
  73     E tmp = _cur_seg[--this->_cur_seg_size];
  74     pop_segment();
  75     return tmp;
  76   }
  77   return this->_cur_seg[--this->_cur_seg_size];
  78 }
  79 
  80 template <class E, MEMFLAGS F>
  81 void Stack<E, F>::clear(bool clear_cache)
  82 {
  83   free_segments(_cur_seg);
  84   if (clear_cache) free_segments(_cache);
  85   reset(clear_cache);
  86 }
  87 
  88 template <class E, MEMFLAGS F>








  89 size_t Stack<E, F>::adjust_segment_size(size_t seg_size)
  90 {
  91   const size_t elem_sz = sizeof(E);
  92   const size_t ptr_sz = sizeof(E*);
  93   assert(elem_sz % ptr_sz == 0 || ptr_sz % elem_sz == 0, "bad element size");
  94   if (elem_sz < ptr_sz) {
  95     return align_size_up(seg_size * elem_sz, ptr_sz) / elem_sz;
  96   }
  97   return seg_size;
  98 }
  99 
 100 template <class E, MEMFLAGS F>
 101 size_t Stack<E, F>::link_offset() const
 102 {
 103   return align_size_up(this->_seg_size * sizeof(E), sizeof(E*));
 104 }
 105 
 106 template <class E, MEMFLAGS F>
 107 size_t Stack<E, F>::segment_bytes() const
 108 {


< prev index next >