comparison src/share/vm/memory/cardTableModRefBS.hpp @ 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 3205e78d8193
children 52b4284cb496 1f1d373cd044
comparison
equal deleted inserted replaced
17935:7384f6a12fc1 17937:78bbf4d43a14
1 /* 1 /*
2 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2000, 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.
153 // Mapping from address to card marking array entry 153 // Mapping from address to card marking array entry
154 jbyte* byte_for(const void* p) const { 154 jbyte* byte_for(const void* p) const {
155 assert(_whole_heap.contains(p), 155 assert(_whole_heap.contains(p),
156 err_msg("Attempt to access p = "PTR_FORMAT" out of bounds of " 156 err_msg("Attempt to access p = "PTR_FORMAT" out of bounds of "
157 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")", 157 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")",
158 p, _whole_heap.start(), _whole_heap.end())); 158 p2i(p), p2i(_whole_heap.start()), p2i(_whole_heap.end())));
159 jbyte* result = &byte_map_base[uintptr_t(p) >> card_shift]; 159 jbyte* result = &byte_map_base[uintptr_t(p) >> card_shift];
160 assert(result >= _byte_map && result < _byte_map + _byte_map_size, 160 assert(result >= _byte_map && result < _byte_map + _byte_map_size,
161 "out of bounds accessor for card marking array"); 161 "out of bounds accessor for card marking array");
162 return result; 162 return result;
163 } 163 }
429 size_t delta = pointer_delta(p, byte_map_base, sizeof(jbyte)); 429 size_t delta = pointer_delta(p, byte_map_base, sizeof(jbyte));
430 HeapWord* result = (HeapWord*) (delta << card_shift); 430 HeapWord* result = (HeapWord*) (delta << card_shift);
431 assert(_whole_heap.contains(result), 431 assert(_whole_heap.contains(result),
432 err_msg("Returning result = "PTR_FORMAT" out of bounds of " 432 err_msg("Returning result = "PTR_FORMAT" out of bounds of "
433 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")", 433 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")",
434 result, _whole_heap.start(), _whole_heap.end())); 434 p2i(result), p2i(_whole_heap.start()), p2i(_whole_heap.end())));
435 return result; 435 return result;
436 } 436 }
437 437
438 // Mapping from address to card marking array index. 438 // Mapping from address to card marking array index.
439 size_t index_for(void* p) { 439 size_t index_for(void* p) {
440 assert(_whole_heap.contains(p), 440 assert(_whole_heap.contains(p),
441 err_msg("Attempt to access p = "PTR_FORMAT" out of bounds of " 441 err_msg("Attempt to access p = "PTR_FORMAT" out of bounds of "
442 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")", 442 " card marking array's _whole_heap = ["PTR_FORMAT","PTR_FORMAT")",
443 p, _whole_heap.start(), _whole_heap.end())); 443 p2i(p), p2i(_whole_heap.start()), p2i(_whole_heap.end())));
444 return byte_for(p) - _byte_map; 444 return byte_for(p) - _byte_map;
445 } 445 }
446 446
447 const jbyte* byte_for_index(const size_t card_index) const { 447 const jbyte* byte_for_index(const size_t card_index) const {
448 return _byte_map + card_index; 448 return _byte_map + card_index;