Mercurial > hg > graal-compiler
comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 647:bd441136a5ce
Merge
author | kvn |
---|---|
date | Thu, 19 Mar 2009 09:13:24 -0700 |
parents | ba50942c8138 660978a2a31a |
children | 96b229c54d1e |
comparison
equal
deleted
inserted
replaced
640:ba50942c8138 | 647:bd441136a5ce |
---|---|
1420 _cg1r = new ConcurrentG1Refine(); | 1420 _cg1r = new ConcurrentG1Refine(); |
1421 | 1421 |
1422 // Reserve the maximum. | 1422 // Reserve the maximum. |
1423 PermanentGenerationSpec* pgs = collector_policy()->permanent_generation(); | 1423 PermanentGenerationSpec* pgs = collector_policy()->permanent_generation(); |
1424 // Includes the perm-gen. | 1424 // Includes the perm-gen. |
1425 | |
1426 const size_t total_reserved = max_byte_size + pgs->max_size(); | |
1427 char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop); | |
1428 | |
1425 ReservedSpace heap_rs(max_byte_size + pgs->max_size(), | 1429 ReservedSpace heap_rs(max_byte_size + pgs->max_size(), |
1426 HeapRegion::GrainBytes, | 1430 HeapRegion::GrainBytes, |
1427 false /*ism*/); | 1431 false /*ism*/, addr); |
1432 | |
1433 if (UseCompressedOops) { | |
1434 if (addr != NULL && !heap_rs.is_reserved()) { | |
1435 // Failed to reserve at specified address - the requested memory | |
1436 // region is taken already, for example, by 'java' launcher. | |
1437 // Try again to reserver heap higher. | |
1438 addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop); | |
1439 ReservedSpace heap_rs0(total_reserved, HeapRegion::GrainBytes, | |
1440 false /*ism*/, addr); | |
1441 if (addr != NULL && !heap_rs0.is_reserved()) { | |
1442 // Failed to reserve at specified address again - give up. | |
1443 addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop); | |
1444 assert(addr == NULL, ""); | |
1445 ReservedSpace heap_rs1(total_reserved, HeapRegion::GrainBytes, | |
1446 false /*ism*/, addr); | |
1447 heap_rs = heap_rs1; | |
1448 } else { | |
1449 heap_rs = heap_rs0; | |
1450 } | |
1451 } | |
1452 } | |
1428 | 1453 |
1429 if (!heap_rs.is_reserved()) { | 1454 if (!heap_rs.is_reserved()) { |
1430 vm_exit_during_initialization("Could not reserve enough space for object heap"); | 1455 vm_exit_during_initialization("Could not reserve enough space for object heap"); |
1431 return JNI_ENOMEM; | 1456 return JNI_ENOMEM; |
1432 } | 1457 } |