@@ -5380,29 +5380,28 @@ bool os::supports_map_sync() {
53805380}
53815381
53825382void os::print_memory_mappings (char * addr, size_t bytes, outputStream* st) {
5383+ // Note: all ranges are "[..)"
53835384 unsigned long long start = (unsigned long long )addr;
53845385 unsigned long long end = start + bytes;
53855386 FILE* f = os::fopen (" /proc/self/maps" , " r" );
53865387 int num_found = 0 ;
53875388 if (f != NULL ) {
5388- st->print (" Range [%llx-%llx) contains: " , start, end);
5389+ st->print_cr (" Range [%llx-%llx) contains: " , start, end);
53895390 char line[512 ];
53905391 while (fgets (line, sizeof (line), f) == line) {
5391- unsigned long long a1 = 0 ;
5392- unsigned long long a2 = 0 ;
5393- if (::sscanf (line, " %llx-%llx" , &a1 , &a2 ) == 2 ) {
5392+ unsigned long long segment_start = 0 ;
5393+ unsigned long long segment_end = 0 ;
5394+ if (::sscanf (line, " %llx-%llx" , &segment_start , &segment_end ) == 2 ) {
53945395 // Lets print out every range which touches ours.
5395- if ((a1 >= start && a1 < end) || // left leg in
5396- (a2 >= start && a2 < end) || // right leg in
5397- (a1 < start && a2 >= end)) { // superimposition
5396+ if (segment_start < end && segment_end > start) {
53985397 num_found ++;
53995398 st->print (" %s" , line); // line includes \n
54005399 }
54015400 }
54025401 }
54035402 ::fclose (f);
54045403 if (num_found == 0 ) {
5405- st->print (" nothing." );
5404+ st->print_cr (" nothing." );
54065405 }
54075406 st->cr ();
54085407 }
0 commit comments