Class J9DDRImagePointer

java.lang.Object
com.ibm.j9ddr.view.dtfj.image.J9DDRImagePointer
All Implemented Interfaces:
ImagePointer

public class J9DDRImagePointer extends Object implements ImagePointer
  • Constructor Summary

    Constructors
    Constructor
    Description
    J9DDRImagePointer(IProcess proc, long address)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    add(long offset)
    Build a new image pointer offset from this one by the given amount.
    boolean
    Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison.
    long
    Get the unwrapped address, represented as a Java long.
    Get the address space to which this pointer belongs.
    byte
    getByteAt(long index)
    Get the value at the given offset from this pointer.
    double
    getDoubleAt(long index)
    Get the value at the given offset from this pointer.
    float
    getFloatAt(long index)
    Get the value at the given offset from this pointer.
    int
    getIntAt(long index)
    Get the value at the given offset from this pointer.
    long
    getLongAt(long index)
    Get the value at the given offset from this pointer.
    getPointerAt(long index)
    Get the value at the given offset from this pointer.
    Get the OS-specific properties for this address
    short
    getShortAt(long index)
    Get the value at the given offset from this pointer.
    int
    Answers an integer hash code for the receiver.
    boolean
    Tests memory execute permission.
    boolean
    Tests memory read/write permission.
    boolean
    Tests memory shared permission.

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • J9DDRImagePointer

      public J9DDRImagePointer(IProcess proc, long address)
  • Method Details

    • add

      public ImagePointer add(long offset)
      Description copied from interface: ImagePointer
      Build a new image pointer offset from this one by the given amount.
      Specified by:
      add in interface ImagePointer
      Parameters:
      offset - Offset in bytes.
      Returns:
      a new ImagePointer based at getAddress() + offset
    • getAddress

      public long getAddress()
      Description copied from interface: ImagePointer

      Get the unwrapped address, represented as a Java long.

      Use caution when comparing addresses, as some addresses may be negative.

      Note that, on segmented memory architectures, it may not be possible to represent all addresses accurately as integers.

      Specified by:
      getAddress in interface ImagePointer
      Returns:
      the unwrapped address, represented as a 64-bit integer.
    • getAddressSpace

      public ImageAddressSpace getAddressSpace()
      Description copied from interface: ImagePointer
      Get the address space to which this pointer belongs.
      Specified by:
      getAddressSpace in interface ImagePointer
      Returns:
      the address space to which this pointer belongs.
    • getByteAt

      public byte getByteAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getByteAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 8-bit byte stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • getDoubleAt

      public double getDoubleAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getDoubleAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 64-bit double stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • getFloatAt

      public float getFloatAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getFloatAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 32-bit float stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • getIntAt

      public int getIntAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getIntAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 32-bit int stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • getLongAt

      public long getLongAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getLongAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 64-bit long stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • getPointerAt

      public ImagePointer getPointerAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer. To determine the number of bytes to skip after this call to read the next value, use ImageProcess.getPointerSize(). Note: to create an ImagePointer using an absolute address use com.ibm.dtfj.image.ImageAddressSpace.getPointer()
      Specified by:
      getPointerAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 32 or 64-bit pointer stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
      See Also:
    • getShortAt

      public short getShortAt(long index) throws MemoryAccessException, CorruptDataException
      Description copied from interface: ImagePointer
      Get the value at the given offset from this pointer.
      Specified by:
      getShortAt in interface ImagePointer
      Parameters:
      index - an offset (in bytes) from the current position
      Returns:
      the 16-bit short stored at getAddress() + index
      Throws:
      MemoryAccessException - if the memory cannot be read
      CorruptDataException - if the memory should be in the image, but is missing or corrupted
    • isExecutable

      public boolean isExecutable() throws DataUnavailable
      Description copied from interface: ImagePointer
      Tests memory execute permission.
      Specified by:
      isExecutable in interface ImagePointer
      Returns:
      true if this memory address is within an executable page.
      Throws:
      DataUnavailable
    • isReadOnly

      public boolean isReadOnly() throws DataUnavailable
      Description copied from interface: ImagePointer
      Tests memory read/write permission.
      Specified by:
      isReadOnly in interface ImagePointer
      Returns:
      true if this memory address is read-only. False otherwise.
      Throws:
      DataUnavailable
    • isShared

      public boolean isShared() throws DataUnavailable
      Description copied from interface: ImagePointer
      Tests memory shared permission.
      Specified by:
      isShared in interface ImagePointer
      Returns:
      true if this memory address is shared between processes.
      Throws:
      DataUnavailable
    • equals

      public boolean equals(Object obj)
      Description copied from class: java.lang.Object
      Compares the argument to the receiver, and answers true if they represent the same object using a class specific comparison. The implementation in Object answers true only if the argument is the exact same object as the receiver (==).
      Specified by:
      equals in interface ImagePointer
      Overrides:
      equals in class Object
      Parameters:
      obj -
      Returns:
      True obj refers to the same Image Pointer in the image
      See Also:
    • hashCode

      public int hashCode()
      Description copied from class: java.lang.Object
      Answers an integer hash code for the receiver. Any two objects which answer true when passed to .equals must answer the same value for this method.
      Specified by:
      hashCode in interface ImagePointer
      Overrides:
      hashCode in class Object
      Returns:
      the receiver's hash.
      See Also:
    • getProperties

      public Properties getProperties()
      Description copied from interface: ImagePointer
      Get the OS-specific properties for this address
      Specified by:
      getProperties in interface ImagePointer
      Returns:
      a table of OS-specific properties for this address. Values which are commonly available include
      • "readable" -- whether the memory address can be read from
      • "writable" -- whether the memory address can be written to
      • "executable" -- whether data in the memory address can be executed