70 private List vmResumedObservers = new ArrayList(); 71 private List vmSuspendedObservers = new ArrayList(); 72 private TypeDataBase db; 73 private boolean isBigEndian; 74 /** This is only present if in a debugging system */ 75 private JVMDebugger debugger; 76 private long stackBias; 77 private long logAddressSize; 78 private Universe universe; 79 private ObjectHeap heap; 80 private SymbolTable symbols; 81 private StringTable strings; 82 private SystemDictionary dict; 83 private Threads threads; 84 private ObjectSynchronizer synchronizer; 85 private JNIHandles handles; 86 private Interpreter interpreter; 87 private StubRoutines stubRoutines; 88 private Bytes bytes; 89 90 private RicochetBlob ricochetBlob; 91 92 /** Flags indicating whether we are attached to a core, C1, or C2 build */ 93 private boolean usingClientCompiler; 94 private boolean usingServerCompiler; 95 /** Flag indicating whether UseTLAB is turned on */ 96 private boolean useTLAB; 97 /** alignment constants */ 98 private boolean isLP64; 99 private int bytesPerLong; 100 private int objectAlignmentInBytes; 101 private int minObjAlignmentInBytes; 102 private int logMinObjAlignmentInBytes; 103 private int heapWordSize; 104 private int heapOopSize; 105 private int oopSize; 106 /** This is only present in a non-core build */ 107 private CodeCache codeCache; 108 /** This is only present in a C1 build */ 109 private Runtime1 runtime1; 110 /** These constants come from globalDefinitions.hpp */ 111 private int invocationEntryBCI; 611 if (handles == null) { 612 handles = new JNIHandles(); 613 } 614 return handles; 615 } 616 617 public Interpreter getInterpreter() { 618 if (interpreter == null) { 619 interpreter = new Interpreter(); 620 } 621 return interpreter; 622 } 623 624 public StubRoutines getStubRoutines() { 625 if (stubRoutines == null) { 626 stubRoutines = new StubRoutines(); 627 } 628 return stubRoutines; 629 } 630 631 public RicochetBlob ricochetBlob() { 632 if (ricochetBlob == null) { 633 Type ricochetType = db.lookupType("SharedRuntime"); 634 AddressField ricochetBlobAddress = ricochetType.getAddressField("_ricochet_blob"); 635 Address addr = ricochetBlobAddress.getValue(); 636 if (addr != null) { 637 ricochetBlob = new RicochetBlob(addr); 638 } 639 } 640 return ricochetBlob; 641 } 642 643 public VMRegImpl getVMRegImplInfo() { 644 if (vmregImpl == null) { 645 vmregImpl = new VMRegImpl(); 646 } 647 return vmregImpl; 648 } 649 650 public Bytes getBytes() { 651 if (bytes == null) { 652 bytes = new Bytes(debugger.getMachineDescription()); 653 } 654 return bytes; 655 } 656 657 /** Returns true if this is a isBigEndian, false otherwise */ 658 public boolean isBigEndian() { 659 return isBigEndian; 660 } 661 662 /** Returns true if this is a "core" build, false if either C1 or C2 | 70 private List vmResumedObservers = new ArrayList(); 71 private List vmSuspendedObservers = new ArrayList(); 72 private TypeDataBase db; 73 private boolean isBigEndian; 74 /** This is only present if in a debugging system */ 75 private JVMDebugger debugger; 76 private long stackBias; 77 private long logAddressSize; 78 private Universe universe; 79 private ObjectHeap heap; 80 private SymbolTable symbols; 81 private StringTable strings; 82 private SystemDictionary dict; 83 private Threads threads; 84 private ObjectSynchronizer synchronizer; 85 private JNIHandles handles; 86 private Interpreter interpreter; 87 private StubRoutines stubRoutines; 88 private Bytes bytes; 89 90 /** Flags indicating whether we are attached to a core, C1, or C2 build */ 91 private boolean usingClientCompiler; 92 private boolean usingServerCompiler; 93 /** Flag indicating whether UseTLAB is turned on */ 94 private boolean useTLAB; 95 /** alignment constants */ 96 private boolean isLP64; 97 private int bytesPerLong; 98 private int objectAlignmentInBytes; 99 private int minObjAlignmentInBytes; 100 private int logMinObjAlignmentInBytes; 101 private int heapWordSize; 102 private int heapOopSize; 103 private int oopSize; 104 /** This is only present in a non-core build */ 105 private CodeCache codeCache; 106 /** This is only present in a C1 build */ 107 private Runtime1 runtime1; 108 /** These constants come from globalDefinitions.hpp */ 109 private int invocationEntryBCI; 609 if (handles == null) { 610 handles = new JNIHandles(); 611 } 612 return handles; 613 } 614 615 public Interpreter getInterpreter() { 616 if (interpreter == null) { 617 interpreter = new Interpreter(); 618 } 619 return interpreter; 620 } 621 622 public StubRoutines getStubRoutines() { 623 if (stubRoutines == null) { 624 stubRoutines = new StubRoutines(); 625 } 626 return stubRoutines; 627 } 628 629 public VMRegImpl getVMRegImplInfo() { 630 if (vmregImpl == null) { 631 vmregImpl = new VMRegImpl(); 632 } 633 return vmregImpl; 634 } 635 636 public Bytes getBytes() { 637 if (bytes == null) { 638 bytes = new Bytes(debugger.getMachineDescription()); 639 } 640 return bytes; 641 } 642 643 /** Returns true if this is a isBigEndian, false otherwise */ 644 public boolean isBigEndian() { 645 return isBigEndian; 646 } 647 648 /** Returns true if this is a "core" build, false if either C1 or C2 |