annotate ASSEMBLY_EXCEPTION @ 3766:c3f1170908be

7045330: G1: Simplify/fix the HeapRegionSeq class 7042285: G1: native memory leak during humongous object allocation 6804436: G1: heap region indices should be size_t Summary: A series of fixes and improvements to the HeapRegionSeq class: a) replace the _regions growable array with a standard C array, b) avoid de-allocating / re-allocating HeapRegion instances when the heap shrinks / grows (fix for 7042285), c) introduce fast method to map address to HeapRegion via a "biased" array pointer, d) embed the _hrs object in G1CollectedHeap, instead of pointing to it via an indirection, e) assume that all the regions added to the HeapRegionSeq instance are contiguous, f) replace int's with size_t's for indexes (and expand that to HeapRegion as part of 6804436), g) remove unnecessary / unused methods, h) rename a couple of fields (_alloc_search_start and _seq_bottom), i) fix iterate_from() not to always start from index 0 irrespective of the region passed to it, j) add a verification method to check the HeapRegionSeq assumptions, k) always call the wrappers for _hrs.iterate(), _hrs_length(), and _hrs.at() from G1CollectedHeap, not those methods directly, and l) unify the code that expands the sequence (by either re-using or creating a new HeapRegion) and make it robust wrt to a HeapRegion allocation failing. Reviewed-by: stefank, johnc, brutisso
author tonyp
date Fri, 10 Jun 2011 13:16:40 -0400
parents c18cbe5936b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1
a61af66fc99e Initial load
duke
parents:
diff changeset
2 OPENJDK ASSEMBLY EXCEPTION
a61af66fc99e Initial load
duke
parents:
diff changeset
3
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
4 The OpenJDK source code made available by Oracle at openjdk.java.net and
0
a61af66fc99e Initial load
duke
parents:
diff changeset
5 openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the
a61af66fc99e Initial load
duke
parents:
diff changeset
6 GNU General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
a61af66fc99e Initial load
duke
parents:
diff changeset
7 only ("GPL2"), with the following clarification and special exception.
a61af66fc99e Initial load
duke
parents:
diff changeset
8
a61af66fc99e Initial load
duke
parents:
diff changeset
9 Linking this OpenJDK Code statically or dynamically with other code
a61af66fc99e Initial load
duke
parents:
diff changeset
10 is making a combined work based on this library. Thus, the terms
a61af66fc99e Initial load
duke
parents:
diff changeset
11 and conditions of GPL2 cover the whole combination.
a61af66fc99e Initial load
duke
parents:
diff changeset
12
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
13 As a special exception, Oracle gives you permission to link this
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
14 OpenJDK Code with certain code licensed by Oracle as indicated at
0
a61af66fc99e Initial load
duke
parents:
diff changeset
15 http://openjdk.java.net/legal/exception-modules-2007-05-08.html
a61af66fc99e Initial load
duke
parents:
diff changeset
16 ("Designated Exception Modules") to produce an executable,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 regardless of the license terms of the Designated Exception Modules,
a61af66fc99e Initial load
duke
parents:
diff changeset
18 and to copy and distribute the resulting executable under GPL2,
a61af66fc99e Initial load
duke
parents:
diff changeset
19 provided that the Designated Exception Modules continue to be
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
20 governed by the licenses under which they were offered by Oracle.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
21
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
22 As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code to
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
23 build an executable that includes those portions of necessary code that Oracle
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 0
diff changeset
24 could not provide under GPL2 (or that Oracle has provided under GPL2 with the
0
a61af66fc99e Initial load
duke
parents:
diff changeset
25 Classpath exception). If you modify or add to the OpenJDK code, that new
a61af66fc99e Initial load
duke
parents:
diff changeset
26 GPL2 code may still be combined with Designated Exception Modules if the
a61af66fc99e Initial load
duke
parents:
diff changeset
27 new code is made subject to this exception by its copyright holder.