comparison src/share/vm/memory/cardTableRS.cpp @ 17937:78bbf4d43a14

8037816: Fix for 8036122 breaks build with Xcode5/clang 8043029: Change 8037816 breaks HS build with older GCC versions which don't support diagnostic pragmas 8043164: Format warning in traceStream.hpp Summary: Backport of main fix + two corrections, enables clang compilation, turns on format attributes, corrects/mutes warnings Reviewed-by: kvn, coleenp, iveresov, twisti
author drchase
date Thu, 22 May 2014 15:52:41 -0400
parents bd902affe102
children 52b4284cb496 1f1d373cd044
comparison
equal deleted inserted replaced
17935:7384f6a12fc1 17937:78bbf4d43a14
1 /* 1 /*
2 * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
286 MemRegion ur = sp->used_region(); 286 MemRegion ur = sp->used_region();
287 assert(ur.contains(urasm) || (UseConcMarkSweepGC && UseParNewGC), 287 assert(ur.contains(urasm) || (UseConcMarkSweepGC && UseParNewGC),
288 err_msg("Did you forget to call save_marks()? " 288 err_msg("Did you forget to call save_marks()? "
289 "[" PTR_FORMAT ", " PTR_FORMAT ") is not contained in " 289 "[" PTR_FORMAT ", " PTR_FORMAT ") is not contained in "
290 "[" PTR_FORMAT ", " PTR_FORMAT ")", 290 "[" PTR_FORMAT ", " PTR_FORMAT ")",
291 urasm.start(), urasm.end(), ur.start(), ur.end())); 291 p2i(urasm.start()), p2i(urasm.end()), p2i(ur.start()), p2i(ur.end())));
292 // In the case of CMS+ParNew, issue a warning 292 // In the case of CMS+ParNew, issue a warning
293 if (!ur.contains(urasm)) { 293 if (!ur.contains(urasm)) {
294 assert(UseConcMarkSweepGC && UseParNewGC, "Tautology: see assert above"); 294 assert(UseConcMarkSweepGC && UseParNewGC, "Tautology: see assert above");
295 warning("CMS+ParNew: Did you forget to call save_marks()? " 295 warning("CMS+ParNew: Did you forget to call save_marks()? "
296 "[" PTR_FORMAT ", " PTR_FORMAT ") is not contained in " 296 "[" PTR_FORMAT ", " PTR_FORMAT ") is not contained in "
297 "[" PTR_FORMAT ", " PTR_FORMAT ")", 297 "[" PTR_FORMAT ", " PTR_FORMAT ")",
298 urasm.start(), urasm.end(), ur.start(), ur.end()); 298 p2i(urasm.start()), p2i(urasm.end()), p2i(ur.start()), p2i(ur.end()));
299 MemRegion ur2 = sp->used_region(); 299 MemRegion ur2 = sp->used_region();
300 MemRegion urasm2 = sp->used_region_at_save_marks(); 300 MemRegion urasm2 = sp->used_region_at_save_marks();
301 if (!ur.equals(ur2)) { 301 if (!ur.equals(ur2)) {
302 warning("CMS+ParNew: Flickering used_region()!!"); 302 warning("CMS+ParNew: Flickering used_region()!!");
303 } 303 }
347 template <class T> void do_oop_work(T* p) { 347 template <class T> void do_oop_work(T* p) {
348 HeapWord* jp = (HeapWord*)p; 348 HeapWord* jp = (HeapWord*)p;
349 assert(jp >= _begin && jp < _end, 349 assert(jp >= _begin && jp < _end,
350 err_msg("Error: jp " PTR_FORMAT " should be within " 350 err_msg("Error: jp " PTR_FORMAT " should be within "
351 "[_begin, _end) = [" PTR_FORMAT "," PTR_FORMAT ")", 351 "[_begin, _end) = [" PTR_FORMAT "," PTR_FORMAT ")",
352 jp, _begin, _end)); 352 p2i(jp), p2i(_begin), p2i(_end)));
353 oop obj = oopDesc::load_decode_heap_oop(p); 353 oop obj = oopDesc::load_decode_heap_oop(p);
354 guarantee(obj == NULL || (HeapWord*)obj >= _boundary, 354 guarantee(obj == NULL || (HeapWord*)obj >= _boundary,
355 err_msg("pointer " PTR_FORMAT " at " PTR_FORMAT " on " 355 err_msg("pointer " PTR_FORMAT " at " PTR_FORMAT " on "
356 "clean card crosses boundary" PTR_FORMAT, 356 "clean card crosses boundary" PTR_FORMAT,
357 (HeapWord*)obj, jp, _boundary)); 357 p2i((HeapWord*)obj), p2i(jp), p2i(_boundary)));
358 } 358 }
359 359
360 public: 360 public:
361 VerifyCleanCardClosure(HeapWord* b, HeapWord* begin, HeapWord* end) : 361 VerifyCleanCardClosure(HeapWord* b, HeapWord* begin, HeapWord* end) :
362 _boundary(b), _begin(begin), _end(end) { 362 _boundary(b), _begin(begin), _end(end) {
363 assert(b <= begin, 363 assert(b <= begin,
364 err_msg("Error: boundary " PTR_FORMAT " should be at or below begin " PTR_FORMAT, 364 err_msg("Error: boundary " PTR_FORMAT " should be at or below begin " PTR_FORMAT,
365 b, begin)); 365 p2i(b), p2i(begin)));
366 assert(begin <= end, 366 assert(begin <= end,
367 err_msg("Error: begin " PTR_FORMAT " should be strictly below end " PTR_FORMAT, 367 err_msg("Error: begin " PTR_FORMAT " should be strictly below end " PTR_FORMAT,
368 begin, end)); 368 p2i(begin), p2i(end)));
369 } 369 }
370 370
371 virtual void do_oop(oop* p) { VerifyCleanCardClosure::do_oop_work(p); } 371 virtual void do_oop(oop* p) { VerifyCleanCardClosure::do_oop_work(p); }
372 virtual void do_oop(narrowOop* p) { VerifyCleanCardClosure::do_oop_work(p); } 372 virtual void do_oop(narrowOop* p) { VerifyCleanCardClosure::do_oop_work(p); }
373 }; 373 };