src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/gc_implementation/parallelScavenge

src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp

Print this page




   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
  27 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"

  28 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
  29 
  30 // If boundary moving is being used, create the young gen and old
  31 // gen with ASPSYoungGen and ASPSOldGen, respectively.  Revert to
  32 // the old behavior otherwise (with PSYoungGen and PSOldGen).
  33 
  34 AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
  35                                            size_t init_low_byte_size,
  36                                            size_t min_low_byte_size,
  37                                            size_t max_low_byte_size,
  38                                            size_t init_high_byte_size,
  39                                            size_t min_high_byte_size,
  40                                            size_t max_high_byte_size,
  41                                            size_t alignment) :
  42   _virtual_spaces(old_young_rs, min_low_byte_size,
  43                   min_high_byte_size, alignment) {







  44   assert(min_low_byte_size <= init_low_byte_size &&
  45          init_low_byte_size <= max_low_byte_size, "Parameter check");
  46   assert(min_high_byte_size <= init_high_byte_size &&
  47          init_high_byte_size <= max_high_byte_size, "Parameter check");
  48   // Create the generations differently based on the option to
  49   // move the boundary.
  50   if (UseAdaptiveGCBoundary) {
  51     // Initialize the adjoining virtual spaces.  Then pass the
  52     // a virtual to each generation for initialization of the
  53     // generation.
  54 
  55     // Does the actual creation of the virtual spaces
  56     _virtual_spaces.initialize(max_low_byte_size,
  57                                init_low_byte_size,
  58                                init_high_byte_size);
  59 
  60     // Place the young gen at the high end.  Passes in the virtual space.
  61     _young_gen = new ASPSYoungGen(_virtual_spaces.high(),
  62                                   _virtual_spaces.high()->committed_size(),
  63                                   min_high_byte_size,




   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
  27 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
  28 #include "gc_implementation/parallelScavenge/generationSizer.hpp"
  29 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
  30 
  31 // If boundary moving is being used, create the young gen and old
  32 // gen with ASPSYoungGen and ASPSOldGen, respectively.  Revert to
  33 // the old behavior otherwise (with PSYoungGen and PSOldGen).
  34 
  35 AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
  36                                            GenerationSizer* policy,





  37                                            size_t alignment) :
  38   _virtual_spaces(old_young_rs, policy->min_gen1_size(),
  39                   policy->min_gen0_size(), alignment) {
  40   size_t init_low_byte_size = policy->initial_gen1_size();
  41   size_t min_low_byte_size = policy->min_gen1_size();
  42   size_t max_low_byte_size = policy->max_gen1_size();
  43   size_t init_high_byte_size = policy->initial_gen0_size();
  44   size_t min_high_byte_size = policy->min_gen0_size();
  45   size_t max_high_byte_size = policy->max_gen0_size();
  46 
  47   assert(min_low_byte_size <= init_low_byte_size &&
  48          init_low_byte_size <= max_low_byte_size, "Parameter check");
  49   assert(min_high_byte_size <= init_high_byte_size &&
  50          init_high_byte_size <= max_high_byte_size, "Parameter check");
  51   // Create the generations differently based on the option to
  52   // move the boundary.
  53   if (UseAdaptiveGCBoundary) {
  54     // Initialize the adjoining virtual spaces.  Then pass the
  55     // a virtual to each generation for initialization of the
  56     // generation.
  57 
  58     // Does the actual creation of the virtual spaces
  59     _virtual_spaces.initialize(max_low_byte_size,
  60                                init_low_byte_size,
  61                                init_high_byte_size);
  62 
  63     // Place the young gen at the high end.  Passes in the virtual space.
  64     _young_gen = new ASPSYoungGen(_virtual_spaces.high(),
  65                                   _virtual_spaces.high()->committed_size(),
  66                                   min_high_byte_size,


src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File