Mercurial > hg > graal-compiler
annotate agent/src/share/classes/sun/jvm/hotspot/gc_implementation/g1/G1Allocator.java @ 20404:227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
Summary: Splitting out a g1 allocator class to simply specialized allocators which can associate each allocation with a given context.
Reviewed-by: mgerdin, brutisso
author | sjohanss |
---|---|
date | Fri, 05 Sep 2014 09:49:19 +0200 |
parents | |
children |
rev | line source |
---|---|
20404
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
1 package sun.jvm.hotspot.gc_implementation.g1; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
2 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
3 import java.util.Observable; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
4 import java.util.Observer; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
5 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
6 import sun.jvm.hotspot.debugger.Address; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
7 import sun.jvm.hotspot.runtime.VM; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
8 import sun.jvm.hotspot.runtime.VMObject; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
9 import sun.jvm.hotspot.types.CIntegerField; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
10 import sun.jvm.hotspot.types.Type; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
11 import sun.jvm.hotspot.types.TypeDataBase; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
12 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
13 public class G1Allocator extends VMObject { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
14 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
15 //size_t _summary_bytes_used; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
16 static private CIntegerField summaryBytesUsedField; |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
17 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
18 static { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
19 VM.registerVMInitializedObserver(new Observer() { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
20 public void update(Observable o, Object data) { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
21 initialize(VM.getVM().getTypeDataBase()); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
22 } |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
23 }); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
24 } |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
25 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
26 static private synchronized void initialize(TypeDataBase db) { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
27 Type type = db.lookupType("G1Allocator"); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
28 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
29 summaryBytesUsedField = type.getCIntegerField("_summary_bytes_used"); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
30 } |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
31 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
32 public long getSummaryBytes() { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
33 return summaryBytesUsedField.getValue(addr); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
34 } |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
35 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
36 public G1Allocator(Address addr) { |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
37 super(addr); |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
38 |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
39 } |
227a9e5e4b4a
8057536: Refactor G1 to allow context specific allocations
sjohanss
parents:
diff
changeset
|
40 } |