7125503: Compiling collectedHeap.cpp fails with -Werror=int-to-pointer-cast with g++ 4.6.1
authorstefank
Mon, 02 Jan 2012 10:01:46 +0100
changeset 11414 5179aa58e6e9
parent 11403 2a7f52ac7ce3
child 11415 45289591641a
7125503: Compiling collectedHeap.cpp fails with -Werror=int-to-pointer-cast with g++ 4.6.1 Summary: Used uintptr_t and void* for all the casts and checks in test_is_in. Reviewed-by: tonyp, jmasa
hotspot/src/share/vm/gc_interface/collectedHeap.cpp
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Thu Dec 29 07:37:23 2011 +0100
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Mon Jan 02 10:01:46 2012 +0100
@@ -478,18 +478,22 @@
 void CollectedHeap::test_is_in() {
   CollectedHeap* heap = Universe::heap();
 
+  uintptr_t epsilon    = (uintptr_t) MinObjAlignment;
+  uintptr_t heap_start = (uintptr_t) heap->_reserved.start();
+  uintptr_t heap_end   = (uintptr_t) heap->_reserved.end();
+
   // Test that NULL is not in the heap.
   assert(!heap->is_in(NULL), "NULL is unexpectedly in the heap");
 
   // Test that a pointer to before the heap start is reported as outside the heap.
-  assert(heap->_reserved.start() >= (void*)MinObjAlignment, "sanity");
-  void* before_heap = (void*)((intptr_t)heap->_reserved.start() - MinObjAlignment);
+  assert(heap_start >= ((uintptr_t)NULL + epsilon), "sanity");
+  void* before_heap = (void*)(heap_start - epsilon);
   assert(!heap->is_in(before_heap),
       err_msg("before_heap: " PTR_FORMAT " is unexpectedly in the heap", before_heap));
 
   // Test that a pointer to after the heap end is reported as outside the heap.
-  assert(heap->_reserved.end() <= (void*)(uintptr_t(-1) - (uint)MinObjAlignment), "sanity");
-  void* after_heap = (void*)((intptr_t)heap->_reserved.end() + MinObjAlignment);
+  assert(heap_end <= ((uintptr_t)-1 - epsilon), "sanity");
+  void* after_heap = (void*)(heap_end + epsilon);
   assert(!heap->is_in(after_heap),
       err_msg("after_heap: " PTR_FORMAT " is unexpectedly in the heap", after_heap));
 }