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");