diff src/share/vm/oops/oop.inline.hpp @ 135:b7268662a986

6689523: max heap calculation for compressed oops is off by MaxPermSize Summary: Need to subtract MaxPermSize from the total heap size when determining whether compressed oops is turned on. Reviewed-by: jmasa, jcoomes, kvn
author coleenp
date Tue, 29 Apr 2008 19:31:29 -0400
parents 435e64505015
children feeb96a45707 37f87013dfd8
line wrap: on
line diff
--- a/src/share/vm/oops/oop.inline.hpp	Tue Apr 29 11:21:51 2008 -0400
+++ b/src/share/vm/oops/oop.inline.hpp	Tue Apr 29 19:31:29 2008 -0400
@@ -134,8 +134,10 @@
 inline narrowOop oopDesc::encode_heap_oop_not_null(oop v) {
   assert(!is_null(v), "oop value can never be zero");
   address heap_base = Universe::heap_base();
-  uint64_t result = (uint64_t)(pointer_delta((void*)v, (void*)heap_base, 1) >> LogMinObjAlignmentInBytes);
-  assert((result & 0xffffffff00000000ULL) == 0, "narrow oop overflow");
+  uint64_t pd = (uint64_t)(pointer_delta((void*)v, (void*)heap_base, 1));
+  assert(OopEncodingHeapMax > pd, "change encoding max if new encoding");
+  uint64_t result = pd >> LogMinObjAlignmentInBytes;
+  assert((result & CONST64(0xffffffff00000000)) == 0, "narrow oop overflow");
   return (narrowOop)result;
 }