< prev index next >

src/share/vm/utilities/stack.hpp

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

@@ -94,15 +94,20 @@
 class Stack:  public StackBase<F>
 {
 public:
   friend class StackIterator<E, F>;
 
+  // Number of elements that fit in 4K bytes minus the size of two pointers
+  // (link field and malloc header).
+  static const size_t _default_segment_size =  (4096 - 2 * sizeof(E*)) / sizeof(E);
+  static size_t default_segment_size() { return _default_segment_size; }
+
   // segment_size:    number of items per segment
   // max_cache_size:  maxmium number of *segments* to cache
   // max_size:        maximum number of items allowed, rounded to a multiple of
   //                  the segment size (0 == unlimited)
-  inline Stack(size_t segment_size = default_segment_size(),
+  inline Stack(size_t segment_size = _default_segment_size,
                size_t max_cache_size = 4, size_t max_size = 0);
   inline ~Stack() { clear(true); }
 
   inline bool is_empty() const { return this->_cur_seg == NULL; }
   inline bool is_full()  const { return this->_full_seg_size >= this->max_size(); }

@@ -120,12 +125,10 @@
 
   // Clear everything from the stack, releasing the associated memory.  If
   // clear_cache is true, also release any cached segments.
   void clear(bool clear_cache = false);
 
-  static inline size_t default_segment_size();
-
 protected:
   // Each segment includes space for _seg_size elements followed by a link
   // (pointer) to the previous segment; the space is allocated as a single block
   // of size segment_bytes().  _seg_size is rounded up if necessary so the link
   // is properly aligned.  The C struct for the layout would be:
< prev index next >