# HG changeset patch # User thartmann # Date 1424677699 -3600 # Node ID 6448e5033ebe960b5198337230354e286f0a84cf # Parent ceb890ca5f399041f1c84819d6e6738106cdce11 8072774: bigapps/Weblogic+medrec/nowarnings fails due to CodeHeap 'profiled nmethods' exhaustion Summary: Store profiled code in the non-profiled code heap (and vice versa) if the code cache is really full. Reviewed-by: kvn, iveresov diff -r ceb890ca5f39 -r 6448e5033ebe test/lib/sun/hotspot/code/BlobType.java --- a/test/lib/sun/hotspot/code/BlobType.java Mon Feb 16 12:25:56 2015 +0100 +++ b/test/lib/sun/hotspot/code/BlobType.java Mon Feb 23 08:48:19 2015 +0100 @@ -32,15 +32,28 @@ public enum BlobType { // Execution level 1 and 4 (non-profiled) nmethods (including native nmethods) - MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'", "NonProfiledCodeHeapSize"), + MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'", "NonProfiledCodeHeapSize") { + @Override + public boolean allowTypeWhenOverflow(BlobType type) { + return super.allowTypeWhenOverflow(type) + || type == BlobType.MethodProfiled; + } + }, // Execution level 2 and 3 (profiled) nmethods - MethodProfiled(1, "CodeHeap 'profiled nmethods'", "ProfiledCodeHeapSize"), + MethodProfiled(1, "CodeHeap 'profiled nmethods'", "ProfiledCodeHeapSize") { + @Override + public boolean allowTypeWhenOverflow(BlobType type) { + return super.allowTypeWhenOverflow(type) + || type == BlobType.MethodNonProfiled; + } + }, // Non-nmethods like Buffers, Adapters and Runtime Stubs NonNMethod(2, "CodeHeap 'non-nmethods'", "NonNMethodCodeHeapSize") { @Override public boolean allowTypeWhenOverflow(BlobType type) { return super.allowTypeWhenOverflow(type) - || type == BlobType.MethodNonProfiled; + || type == BlobType.MethodNonProfiled + || type == BlobType.MethodProfiled; } }, // All types (No code cache segmentation)