field = findVMField("com.ibm.JikesRVN.VM_Atom", "val");
field = findVMField("com.ibm.JikesRVM.VM_Atom", "val");
  public String addressToClassString(int address) throws memoryException {    int stringAddr, size;    int typeAddr = VM_ObjectModel.getTIB(this,address);    typeAddr = owner.mem.readsafe(typeAddr);           // this should point to the VM_Type    try {      VM_Field field = findVMField("com.ibm.JikesRVM.VM_Type", "descriptor");      stringAddr = owner.mem.readsafe(typeAddr + field.getOffset());    // the descriptor      field = findVMField("com.ibm.JikesRVN.VM_Atom", "val");      stringAddr = owner.mem.readsafe(stringAddr + field.getOffset());  // the string array as byte      size = owner.mem.readsafe(stringAddr + ARRAY_LENGTH_OFFSET);   // the string size    } catch (BmapNotFoundException e) {      return e.getMessage();    }    // System.out.println("VM_Type @" + VM.intAsHexString(typeAddr) +     //		       ", string @" + VM.intAsHexString(stringAddr));    // It's a string but stored as an array of byte, so we have to retrieve    // each byte at a time    byte className[] = new byte[size];    for (int i=0; i<size; i++) {      className[i] = owner.mem.readByte(stringAddr+i);    }    return new String(className);  }