Mercurial > hg > graal-compiler
changeset 14051:e85575f63b60
moved readCString to UnsafeAccess next to the other methods
author | twisti |
---|---|
date | Tue, 04 Mar 2014 20:07:03 -0800 |
parents | 516eeabb4c62 |
children | 361acb279104 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/UnsafeAccess.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java |
diffstat | 2 files changed, 30 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/UnsafeAccess.java Tue Mar 04 16:12:18 2014 -0800 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/UnsafeAccess.java Tue Mar 04 20:07:03 2014 -0800 @@ -63,6 +63,27 @@ } /** + * Reads a {@code '\0'} terminated C string from native memory and converts it to a + * {@link String}. + * + * @return a Java string + */ + public static String readCString(long address) { + if (address == 0) { + return null; + } + StringBuffer sb = new StringBuffer(); + for (int i = 0;; i++) { + char c = (char) unsafe.getByte(address + i); + if (c == 0) { + break; + } + sb.append(c); + } + return sb.toString(); + } + + /** * Writes the contents of a {@link String} to a native memory buffer as a {@code '\0'} * terminated C string. The caller is responsible for ensuring the buffer is at least * {@code s.length() + 1} bytes long. The caller is also responsible for releasing the buffer
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Tue Mar 04 16:12:18 2014 -0800 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotVMConfig.java Tue Mar 04 20:07:03 2014 -0800 @@ -289,17 +289,17 @@ public String getTypeName() { long typeNameAddress = unsafe.getAddress(entryAddress + gHotSpotVMStructEntryTypeNameOffset); - return readCStringAsString(typeNameAddress); + return readCString(typeNameAddress); } public String getFieldName() { long fieldNameAddress = unsafe.getAddress(entryAddress + gHotSpotVMStructEntryFieldNameOffset); - return readCStringAsString(fieldNameAddress); + return readCString(fieldNameAddress); } public String getTypeString() { long typeStringAddress = unsafe.getAddress(entryAddress + gHotSpotVMStructEntryTypeStringOffset); - return readCStringAsString(typeStringAddress); + return readCString(typeStringAddress); } public boolean isStatic() { @@ -405,12 +405,12 @@ public String getTypeName() { long typeNameAddress = unsafe.getAddress(entryAddress + gHotSpotVMTypeEntryTypeNameOffset); - return readCStringAsString(typeNameAddress); + return readCString(typeNameAddress); } public String getSuperclassName() { long superclassNameAddress = unsafe.getAddress(entryAddress + gHotSpotVMTypeEntrySuperclassNameOffset); - return readCStringAsString(superclassNameAddress); + return readCString(superclassNameAddress); } public boolean isOopType() { @@ -451,7 +451,7 @@ public String getName() { long nameAddress = unsafe.getAddress(address + nameOffset); - return readCStringAsString(nameAddress); + return readCString(nameAddress); } public abstract long getValue(); @@ -646,12 +646,12 @@ public String getType() { long typeAddress = unsafe.getAddress(entryAddress + typeOffset); - return readCStringAsString(typeAddress); + return readCString(typeAddress); } public String getName() { long nameAddress = unsafe.getAddress(entryAddress + nameOffset); - return readCStringAsString(nameAddress); + return readCString(nameAddress); } public long getAddr() { @@ -670,7 +670,7 @@ return Double.valueOf(unsafe.getDouble(getAddr())); case "ccstr": case "ccstrlist": - return readCStringAsString(getAddr()); + return readCString(getAddr()); default: throw GraalInternalError.shouldNotReachHere(getType()); } @@ -683,24 +683,6 @@ } } - /** - * Read a null-terminated C string from memory and convert it to a Java String. - */ - private static String readCStringAsString(long address) { - if (address == 0) { - return null; - } - StringBuffer sb = new StringBuffer(); - for (int i = 0;; i++) { - char c = (char) unsafe.getByte(address + i); - if (c == 0) { - break; - } - sb.append(c); - } - return sb.toString(); - } - // os information, register layout, code generation, ... @HotSpotVMConstant(name = "ASSERT") @Stable public boolean cAssertions; public final boolean windowsOs = System.getProperty("os.name", "").startsWith("Windows");