agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java	Tue May 18 03:20:38 2010
--- new/agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java	Tue May 18 03:20:38 2010

*** 1,7 **** --- 1,7 ---- /* ! * Copyright 2000-2005 Sun Microsystems, Inc. All Rights Reserved. ! * Copyright 2000-2010 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 40,51 **** --- 40,49 ---- private static CIntegerField headerSizeField; private static CIntegerField relocationSizeField; private static CIntegerField instructionsOffsetField; private static CIntegerField frameCompleteOffsetField; private static CIntegerField dataOffsetField; private static CIntegerField oopsOffsetField; private static CIntegerField oopsLengthField; private static CIntegerField frameSizeField; private static AddressField oopMapsField; // Only used by server compiler on x86; computed over in SA rather // than relying on computation in target VM
*** 70,81 **** --- 68,77 ---- headerSizeField = type.getCIntegerField("_header_size"); relocationSizeField = type.getCIntegerField("_relocation_size"); frameCompleteOffsetField = type.getCIntegerField("_frame_complete_offset"); instructionsOffsetField = type.getCIntegerField("_instructions_offset"); dataOffsetField = type.getCIntegerField("_data_offset"); oopsOffsetField = type.getCIntegerField("_oops_offset"); oopsLengthField = type.getCIntegerField("_oops_length"); frameSizeField = type.getCIntegerField("_frame_size"); oopMapsField = type.getAddressField("_oop_maps"); if (VM.getVM().isServerCompiler()) { matcherInterpreterFramePointerReg =
*** 129,151 **** --- 125,138 ---- public Address dataEnd() { return headerBegin().addOffsetTo(sizeField.getValue(addr)); } public Address oopsBegin() { return headerBegin().addOffsetTo(oopsOffsetField.getValue(addr)); } public Address oopsEnd() { return oopsBegin().addOffsetTo(getOopsLength()); } // Offsets public int getRelocationOffset() { return (int) headerSizeField.getValue(addr); } public int getInstructionsOffset() { return (int) instructionsOffsetField.getValue(addr); } public int getDataOffset() { return (int) dataOffsetField.getValue(addr); } public int getOopsOffset() { return (int) oopsOffsetField.getValue(addr); } // Sizes public int getSize() { return (int) sizeField.getValue(addr); } public int getHeaderSize() { return (int) headerSizeField.getValue(addr); } // FIXME: add getRelocationSize()
*** 155,177 **** --- 142,154 ---- // Containment public boolean blobContains(Address addr) { return headerBegin().lessThanOrEqual(addr) && dataEnd().greaterThan(addr); } // FIXME: add relocationContains public boolean instructionsContains(Address addr) { return instructionsBegin().lessThanOrEqual(addr) && instructionsEnd().greaterThan(addr); } public boolean dataContains(Address addr) { return dataBegin().lessThanOrEqual(addr) && dataEnd().greaterThan(addr); } public boolean oopsContains(Address addr) { return oopsBegin().lessThanOrEqual(addr) && oopsEnd().greaterThan(addr); } public boolean contains(Address addr) { return instructionsContains(addr); } public boolean isFrameCompleteAt(Address a) { return instructionsContains(a) && a.minus(instructionsBegin()) >= frameCompleteOffsetField.getValue(addr); } /** Support for oops in scopes and relocs. Note: index 0 is reserved for null. */ public OopHandle getOopAt(int index) { if (index == 0) return null; if (Assert.ASSERTS_ENABLED) { Assert.that(index > 0 && index <= getOopsLength(), "must be a valid non-zero index"); } return oopsBegin().getOopHandleAt((index - 1) * VM.getVM().getOopSize()); } // Reclamation support (really only used by the nmethods, but in order to get asserts to work // in the CodeCache they are defined virtual here) public boolean isZombie() { return false; } public boolean isLockedByVM() { return false; }
*** 221,240 **** --- 198,207 ---- tty.print(getName()); printComponentsOn(tty); } protected void printComponentsOn(PrintStream tty) { // FIXME: add relocation information tty.println(" instructions: [" + instructionsBegin() + ", " + instructionsEnd() + "), " + " data: [" + dataBegin() + ", " + dataEnd() + "), " + " oops: [" + oopsBegin() + ", " + oopsEnd() + "), " + " frame size: " + getFrameSize()); } //-------------------------------------------------------------------------------- // Internals only below this point // private int getOopsLength() { return (int) oopsLengthField.getValue(addr); } }

agent/src/share/classes/sun/jvm/hotspot/code/CodeBlob.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File