83 84 // Enabled with TieredCompilation and ReservedCodeCacheSize >= 240MB 85 pb = ProcessTools.createJavaProcessBuilder("-XX:+TieredCompilation", 86 "-XX:ReservedCodeCacheSize=240m", 87 "-XX:+PrintCodeCache", "-version"); 88 verifySegmentedCodeCache(pb, true); 89 90 // Always enabled if SegmentedCodeCache is set 91 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 92 "-XX:-TieredCompilation", 93 "-XX:ReservedCodeCacheSize=239m", 94 "-XX:+PrintCodeCache", "-version"); 95 verifySegmentedCodeCache(pb, true); 96 97 // The profiled and non-profiled code heaps should not be available in 98 // interpreter-only mode 99 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 100 "-Xint", 101 "-XX:+PrintCodeCache", "-version"); 102 verifyCodeHeapNotExists(pb, PROFILED, NON_PROFILED); 103 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 104 "-XX:TieredStopAtLevel=0", 105 "-XX:+PrintCodeCache", "-version"); 106 verifyCodeHeapNotExists(pb, PROFILED, NON_PROFILED); 107 108 // If we stop compilation at CompLevel_simple 109 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 110 "-XX:TieredStopAtLevel=1", 111 "-XX:+PrintCodeCache", "-version"); 112 verifyCodeHeapNotExists(pb, PROFILED); 113 114 // Fails with too small non-nmethod code heap size 115 pb = ProcessTools.createJavaProcessBuilder("-XX:NonNMethodCodeHeapSize=100K"); 116 failsWith(pb, "Invalid NonNMethodCodeHeapSize"); 117 118 // Fails if code heap sizes do not add up 119 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 120 "-XX:ReservedCodeCacheSize=10M", 121 "-XX:NonNMethodCodeHeapSize=5M", 122 "-XX:ProfiledCodeHeapSize=5M", 123 "-XX:NonProfiledCodeHeapSize=5M"); 124 failsWith(pb, "Invalid code heap sizes"); 125 126 // Fails if not enough space for VM internal code 127 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 128 "-XX:ReservedCodeCacheSize=1700K", | 83 84 // Enabled with TieredCompilation and ReservedCodeCacheSize >= 240MB 85 pb = ProcessTools.createJavaProcessBuilder("-XX:+TieredCompilation", 86 "-XX:ReservedCodeCacheSize=240m", 87 "-XX:+PrintCodeCache", "-version"); 88 verifySegmentedCodeCache(pb, true); 89 90 // Always enabled if SegmentedCodeCache is set 91 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 92 "-XX:-TieredCompilation", 93 "-XX:ReservedCodeCacheSize=239m", 94 "-XX:+PrintCodeCache", "-version"); 95 verifySegmentedCodeCache(pb, true); 96 97 // The profiled and non-profiled code heaps should not be available in 98 // interpreter-only mode 99 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 100 "-Xint", 101 "-XX:+PrintCodeCache", "-version"); 102 verifyCodeHeapNotExists(pb, PROFILED, NON_PROFILED); 103 104 // If we stop compilation at CompLevel_none or CompLevel_simple we 105 // don't need a profiled code heap. 106 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 107 "-XX:TieredStopAtLevel=0", 108 "-XX:+PrintCodeCache", "-version"); 109 verifyCodeHeapNotExists(pb, PROFILED); 110 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 111 "-XX:TieredStopAtLevel=1", 112 "-XX:+PrintCodeCache", "-version"); 113 verifyCodeHeapNotExists(pb, PROFILED); 114 115 // Fails with too small non-nmethod code heap size 116 pb = ProcessTools.createJavaProcessBuilder("-XX:NonNMethodCodeHeapSize=100K"); 117 failsWith(pb, "Invalid NonNMethodCodeHeapSize"); 118 119 // Fails if code heap sizes do not add up 120 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 121 "-XX:ReservedCodeCacheSize=10M", 122 "-XX:NonNMethodCodeHeapSize=5M", 123 "-XX:ProfiledCodeHeapSize=5M", 124 "-XX:NonProfiledCodeHeapSize=5M"); 125 failsWith(pb, "Invalid code heap sizes"); 126 127 // Fails if not enough space for VM internal code 128 pb = ProcessTools.createJavaProcessBuilder("-XX:+SegmentedCodeCache", 129 "-XX:ReservedCodeCacheSize=1700K", |