Mercurial > hg > graal-compiler
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"); |