diff graal/com.oracle.max.criutils/src/com/oracle/max/criutils/CompilationPrinter.java @ 4169:f5328dda9714

Initial commit of SSA-based spill-all register assignment
author Christian Wimmer <Christian.Wimmer@Oracle.com>
date Wed, 28 Dec 2011 18:13:25 -0800
parents bc8527f3071c
children 319860ae697a
line wrap: on
line diff
--- a/graal/com.oracle.max.criutils/src/com/oracle/max/criutils/CompilationPrinter.java	Wed Dec 28 18:12:08 2011 -0800
+++ b/graal/com.oracle.max.criutils/src/com/oracle/max/criutils/CompilationPrinter.java	Wed Dec 28 18:13:25 2011 -0800
@@ -25,8 +25,6 @@
 import java.io.*;
 
 import com.sun.cri.ci.*;
-import com.sun.cri.ci.CiAddress.Scale;
-import com.sun.cri.ci.CiValue.Formatter;
 import com.sun.cri.ri.*;
 
 /**
@@ -105,7 +103,7 @@
     /**
      * Formats a given {@linkplain FrameState JVM frame state} as a multi line string.
      */
-    protected String debugInfoToString(CiCodePos codePos, CiBitMap registerRefMap, CiBitMap frameRefMap, OperandFormatter fmt, CiArchitecture arch) {
+    protected String debugInfoToString(CiCodePos codePos, CiBitMap registerRefMap, CiBitMap frameRefMap, CiArchitecture arch) {
         StringBuilder sb = new StringBuilder();
 
         if (registerRefMap != null) {
@@ -134,7 +132,7 @@
                     if (frame.numStack > 0) {
                         sb.append("stack: ");
                         for (int i = 0; i < frame.numStack; i++) {
-                            sb.append(valueToString(frame.getStackValue(i), fmt)).append(' ');
+                            sb.append(valueToString(frame.getStackValue(i))).append(' ');
                         }
                         sb.append("\n");
                     }
@@ -142,14 +140,14 @@
                     if (frame.numLocks > 0) {
                         sb.append("locks: ");
                         for (int i = 0; i < frame.numLocks; ++i) {
-                            sb.append(valueToString(frame.getLockValue(i), fmt)).append(' ');
+                            sb.append(valueToString(frame.getLockValue(i))).append(' ');
                         }
                         sb.append("\n");
                     }
 
                     sb.append("locals: ");
                     for (int i = 0; i < frame.numLocals; i++) {
-                        sb.append(valueToString(frame.getLocalValue(i), fmt)).append(' ');
+                        sb.append(valueToString(frame.getLocalValue(i))).append(' ');
                     }
                     sb.append("\n");
                 }
@@ -159,63 +157,11 @@
         return sb.toString();
     }
 
-
-    protected String valueToString(CiValue value, Formatter operandFmt) {
+    protected String valueToString(CiValue value) {
         if (value == null) {
             return "-";
         }
-        return operandFmt.format(value);
-    }
-
-
-    /**
-     * Formats LIR operands as expected by the C1 Visualizer.
-     */
-    public static class OperandFormatter extends Formatter {
-        /**
-         * The textual delimiters used for an operand depend on the context in which it is being
-         * printed. When printed as part of a frame state or as the result operand in a HIR node listing,
-         * it is enclosed in double-quotes (i.e. {@code "}'s).
-         */
-        public final boolean asStateOrHIROperandResult;
-
-        public OperandFormatter(boolean asStateOrHIROperandResult) {
-            this.asStateOrHIROperandResult = asStateOrHIROperandResult;
-        }
-
-        @Override
-        public String format(CiValue operand) {
-            if (operand.isLegal()) {
-                String op;
-                if (operand.isVariableOrRegister() || operand.isStackSlot()) {
-                    op = operand.name();
-                } else if (operand.isConstant()) {
-                    CiConstant constant = (CiConstant) operand;
-                    op = operand.kind.javaName + ":" + operand.kind.format(constant.boxedValue());
-                } else if (operand.isAddress()) {
-                    CiAddress address = (CiAddress) operand;
-                    op = "Base:" + format(address.base);
-                    if (!address.index.isIllegal()) {
-                        op += " Index:" + format(address.index);
-                    }
-                    if (address.scale != Scale.Times1) {
-                        op += " * " + address.scale.value;
-                    }
-                    op += " Disp:" + address.displacement;
-                } else {
-                    assert operand.isIllegal();
-                    op = "-";
-                }
-                if (operand.kind != CiKind.Illegal) {
-                    op += "|" + operand.kind.typeChar;
-                }
-                if (asStateOrHIROperandResult) {
-                    op = " \"" + op.replace('"', '\'') + "\" ";
-                }
-                return op;
-            }
-            return "";
-        }
+        return value.toString();
     }
 
     public void printMachineCode(String code, String label) {