Mercurial > hg > truffle
comparison graal/com.oracle.max.criutils/src/com/oracle/max/criutils/CompilationPrinter.java @ 5547:b6617d13ea44
Dropping Ci* prefixes. Some additional renamings in the api.code interface.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 09 Jun 2012 20:10:05 +0200 |
parents | e318468952f5 |
children | 69a8969dbf40 |
comparison
equal
deleted
inserted
replaced
5546:e42c0df7212a | 5547:b6617d13ea44 |
---|---|
20 * or visit www.oracle.com if you need additional information or have any | 20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. | 21 * questions. |
22 */ | 22 */ |
23 package com.oracle.max.criutils; | 23 package com.oracle.max.criutils; |
24 | 24 |
25 import static com.oracle.graal.api.code.CiValueUtil.*; | 25 import static com.oracle.graal.api.code.ValueUtil.*; |
26 | 26 |
27 import java.io.*; | 27 import java.io.*; |
28 import java.util.*; | 28 import java.util.*; |
29 | 29 |
30 import com.oracle.graal.api.code.*; | 30 import com.oracle.graal.api.code.*; |
95 * | 95 * |
96 * @param method the method for which a timestamp will be printed | 96 * @param method the method for which a timestamp will be printed |
97 */ | 97 */ |
98 public void printCompilation(JavaMethod method) { | 98 public void printCompilation(JavaMethod method) { |
99 begin("compilation"); | 99 begin("compilation"); |
100 out.print("name \" ").print(CiUtil.format("%H::%n", method)).println('"'); | 100 out.print("name \" ").print(CodeUtil.format("%H::%n", method)).println('"'); |
101 out.print("method \"").print(CiUtil.format("%f %r %H.%n(%p)", method)).println('"'); | 101 out.print("method \"").print(CodeUtil.format("%f %r %H.%n(%p)", method)).println('"'); |
102 out.print("date ").println(System.currentTimeMillis()); | 102 out.print("date ").println(System.currentTimeMillis()); |
103 end("compilation"); | 103 end("compilation"); |
104 } | 104 } |
105 | 105 |
106 /** | 106 /** |
107 * Formats a given {@linkplain FrameState JVM frame state} as a multi line string. | 107 * Formats a given {@linkplain FrameState JVM frame state} as a multi line string. |
108 */ | 108 */ |
109 protected String debugInfoToString(CiCodePos codePos, BitSet registerRefMap, BitSet frameRefMap, CiArchitecture arch) { | 109 protected String debugInfoToString(BytecodePosition codePos, BitSet registerRefMap, BitSet frameRefMap, Architecture arch) { |
110 StringBuilder sb = new StringBuilder(); | 110 StringBuilder sb = new StringBuilder(); |
111 | 111 |
112 if (registerRefMap != null) { | 112 if (registerRefMap != null) { |
113 sb.append("reg-ref-map:"); | 113 sb.append("reg-ref-map:"); |
114 for (int reg = registerRefMap.nextSetBit(0); reg >= 0; reg = registerRefMap.nextSetBit(reg + 1)) { | 114 for (int reg = registerRefMap.nextSetBit(0); reg >= 0; reg = registerRefMap.nextSetBit(reg + 1)) { |
124 } | 124 } |
125 sb.append("\n"); | 125 sb.append("\n"); |
126 } | 126 } |
127 | 127 |
128 if (codePos != null) { | 128 if (codePos != null) { |
129 CiCodePos curCodePos = codePos; | 129 BytecodePosition curCodePos = codePos; |
130 List<CiVirtualObject> virtualObjects = new ArrayList<>(); | 130 List<VirtualObject> virtualObjects = new ArrayList<>(); |
131 do { | 131 do { |
132 sb.append(CiUtil.toLocation(curCodePos.method, curCodePos.bci)); | 132 sb.append(CodeUtil.toLocation(curCodePos.method, curCodePos.bci)); |
133 sb.append('\n'); | 133 sb.append('\n'); |
134 if (curCodePos instanceof CiFrame) { | 134 if (curCodePos instanceof BytecodeFrame) { |
135 CiFrame frame = (CiFrame) curCodePos; | 135 BytecodeFrame frame = (BytecodeFrame) curCodePos; |
136 if (frame.numStack > 0) { | 136 if (frame.numStack > 0) { |
137 sb.append("stack: "); | 137 sb.append("stack: "); |
138 for (int i = 0; i < frame.numStack; i++) { | 138 for (int i = 0; i < frame.numStack; i++) { |
139 sb.append(valueToString(frame.getStackValue(i), virtualObjects)).append(' '); | 139 sb.append(valueToString(frame.getStackValue(i), virtualObjects)).append(' '); |
140 } | 140 } |
156 } | 156 } |
157 curCodePos = curCodePos.caller; | 157 curCodePos = curCodePos.caller; |
158 } while (curCodePos != null); | 158 } while (curCodePos != null); |
159 | 159 |
160 for (int i = 0; i < virtualObjects.size(); i++) { | 160 for (int i = 0; i < virtualObjects.size(); i++) { |
161 CiVirtualObject obj = virtualObjects.get(i); | 161 VirtualObject obj = virtualObjects.get(i); |
162 sb.append(obj).append(" ").append(obj.type().name()).append(" "); | 162 sb.append(obj).append(" ").append(obj.type().name()).append(" "); |
163 for (int j = 0; j < obj.values().length; j++) { | 163 for (int j = 0; j < obj.values().length; j++) { |
164 sb.append(valueToString(obj.values()[j], virtualObjects)).append(' '); | 164 sb.append(valueToString(obj.values()[j], virtualObjects)).append(' '); |
165 } | 165 } |
166 sb.append("\n"); | 166 sb.append("\n"); |
168 } | 168 } |
169 } | 169 } |
170 return sb.toString(); | 170 return sb.toString(); |
171 } | 171 } |
172 | 172 |
173 protected String valueToString(Value value, List<CiVirtualObject> virtualObjects) { | 173 protected String valueToString(Value value, List<VirtualObject> virtualObjects) { |
174 if (value == null) { | 174 if (value == null) { |
175 return "-"; | 175 return "-"; |
176 } | 176 } |
177 if (isVirtualObject(value) && !virtualObjects.contains(asVirtualObject(value))) { | 177 if (isVirtualObject(value) && !virtualObjects.contains(asVirtualObject(value))) { |
178 virtualObjects.add(asVirtualObject(value)); | 178 virtualObjects.add(asVirtualObject(value)); |