25 package sun.jvm.hotspot.gc.epsilon; |
25 package sun.jvm.hotspot.gc.epsilon; |
26 |
26 |
27 import java.io.*; |
27 import java.io.*; |
28 import java.util.*; |
28 import java.util.*; |
29 |
29 |
30 import sun.jvm.hotspot.gc.shared.CollectedHeap; |
30 import sun.jvm.hotspot.gc.shared.*; |
31 import sun.jvm.hotspot.gc.shared.CollectedHeapName; |
|
32 import sun.jvm.hotspot.code.*; |
31 import sun.jvm.hotspot.code.*; |
33 import sun.jvm.hotspot.debugger.*; |
32 import sun.jvm.hotspot.debugger.*; |
34 import sun.jvm.hotspot.runtime.*; |
33 import sun.jvm.hotspot.runtime.*; |
35 import sun.jvm.hotspot.types.*; |
34 import sun.jvm.hotspot.types.*; |
36 import sun.jvm.hotspot.memory.*; |
35 import sun.jvm.hotspot.memory.*; |
37 |
36 |
38 public class EpsilonHeap extends CollectedHeap { |
37 public class EpsilonHeap extends CollectedHeap { |
39 |
38 |
40 private static Field spaceField; |
39 private static AddressField spaceField; |
41 private VirtualSpace space; |
40 private static Field virtualSpaceField; |
|
41 private ContiguousSpace space; |
|
42 private VirtualSpace virtualSpace; |
42 |
43 |
43 static { |
44 static { |
44 VM.registerVMInitializedObserver(new Observer() { |
45 VM.registerVMInitializedObserver(new Observer() { |
45 public void update(Observable o, Object data) { |
46 public void update(Observable o, Object data) { |
46 initialize(VM.getVM().getTypeDataBase()); |
47 initialize(VM.getVM().getTypeDataBase()); |
48 }); |
49 }); |
49 } |
50 } |
50 |
51 |
51 private static void initialize(TypeDataBase db) { |
52 private static void initialize(TypeDataBase db) { |
52 Type type = db.lookupType("EpsilonHeap"); |
53 Type type = db.lookupType("EpsilonHeap"); |
53 spaceField = type.getField("_virtual_space"); |
54 spaceField = type.getAddressField("_space"); |
|
55 virtualSpaceField = type.getField("_virtual_space"); |
54 } |
56 } |
55 |
57 |
56 public EpsilonHeap(Address addr) { |
58 public EpsilonHeap(Address addr) { |
57 super(addr); |
59 super(addr); |
58 space = new VirtualSpace(addr.addOffsetTo(spaceField.getOffset())); |
60 space = new ContiguousSpace(spaceField.getValue(addr)); |
|
61 virtualSpace = new VirtualSpace(addr.addOffsetTo(virtualSpaceField.getOffset())); |
59 } |
62 } |
60 |
63 |
61 @Override |
64 @Override |
62 public CollectedHeapName kind() { |
65 public CollectedHeapName kind() { |
63 return CollectedHeapName.EPSILON; |
66 return CollectedHeapName.EPSILON; |
64 } |
67 } |
65 |
68 |
66 public VirtualSpace space() { |
69 public ContiguousSpace space() { |
67 return space; |
70 return space; |
68 } |
71 } |
69 |
72 |
70 @Override |
73 @Override |
71 public void printOn(PrintStream tty) { |
74 public void printOn(PrintStream tty) { |
72 MemRegion mr = reservedRegion(); |
75 MemRegion mr = reservedRegion(); |
73 tty.println("Epsilon heap"); |
76 tty.println("Epsilon heap"); |
74 tty.println(" reserved: [" + mr.start() + ", " + mr.end() + "]"); |
77 tty.println(" reserved: [" + mr.start() + ", " + mr.end() + "]"); |
75 tty.println(" committed: [" + space.low() + ", " + space.high() + "]"); |
78 tty.println(" committed: [" + virtualSpace.low() + ", " + virtualSpace.high() + "]"); |
|
79 tty.println(" used: [" + space.bottom() + ", " + space.top() + "]"); |
76 } |
80 } |
77 |
81 |
78 } |
82 } |