src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/epsilon/EpsilonHeap.java
branchepsilon-gc-branch
changeset 56667 d999bdb8173c
parent 56576 92316ff16d5c
equal deleted inserted replaced
56666:80185413d7fd 56667:d999bdb8173c
    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 }