comparison src/share/vm/memory/metaspace.cpp @ 13037:c8fc12209830

8027616: Off by one error in putback for compressed oops nashorn performance improvement Summary: Should compare bounds greater than or equal 4G when deciding if shift is needed or CDS area + compressed class space are within 4G of each other. Reviewed-by: stefank, hseigel, zgu
author coleenp
date Thu, 31 Oct 2013 14:11:02 -0400
parents b4aa8fc5d0d5
children 11b116661830
comparison
equal deleted inserted replaced
13036:4fe7815b04f5 13037:c8fc12209830
2867 } 2867 }
2868 } 2868 }
2869 2869
2870 Universe::set_narrow_klass_base(lower_base); 2870 Universe::set_narrow_klass_base(lower_base);
2871 2871
2872 if ((uint64_t)(higher_address - lower_base) < UnscaledClassSpaceMax) { 2872 if ((uint64_t)(higher_address - lower_base) <= UnscaledClassSpaceMax) {
2873 Universe::set_narrow_klass_shift(0); 2873 Universe::set_narrow_klass_shift(0);
2874 } else { 2874 } else {
2875 assert(!UseSharedSpaces, "Cannot shift with UseSharedSpaces"); 2875 assert(!UseSharedSpaces, "Cannot shift with UseSharedSpaces");
2876 Universe::set_narrow_klass_shift(LogKlassAlignmentInBytes); 2876 Universe::set_narrow_klass_shift(LogKlassAlignmentInBytes);
2877 } 2877 }
2883 assert(cds_base != 0 && UseSharedSpaces, "Only use with CDS"); 2883 assert(cds_base != 0 && UseSharedSpaces, "Only use with CDS");
2884 assert(UseCompressedClassPointers, "Only use with CompressedKlassPtrs"); 2884 assert(UseCompressedClassPointers, "Only use with CompressedKlassPtrs");
2885 address lower_base = MIN2((address)metaspace_base, cds_base); 2885 address lower_base = MIN2((address)metaspace_base, cds_base);
2886 address higher_address = MAX2((address)(cds_base + FileMapInfo::shared_spaces_size()), 2886 address higher_address = MAX2((address)(cds_base + FileMapInfo::shared_spaces_size()),
2887 (address)(metaspace_base + compressed_class_space_size())); 2887 (address)(metaspace_base + compressed_class_space_size()));
2888 return ((uint64_t)(higher_address - lower_base) < UnscaledClassSpaceMax); 2888 return ((uint64_t)(higher_address - lower_base) <= UnscaledClassSpaceMax);
2889 } 2889 }
2890 2890
2891 // Try to allocate the metaspace at the requested addr. 2891 // Try to allocate the metaspace at the requested addr.
2892 void Metaspace::allocate_metaspace_compressed_klass_ptrs(char* requested_addr, address cds_base) { 2892 void Metaspace::allocate_metaspace_compressed_klass_ptrs(char* requested_addr, address cds_base) {
2893 assert(using_class_space(), "called improperly"); 2893 assert(using_class_space(), "called improperly");