Mercurial > hg > graal-compiler
comparison graal/GraalCompiler/src/com/sun/c1x/asm/AbstractAssembler.java @ 2671:d8601d421b96
New Deoptimize node, remove ResolveClass node and replace it with deoptimization
author | Gilles Duboscq <gilles.duboscq@oracle.com> |
---|---|
date | Thu, 12 May 2011 17:17:50 +0200 |
parents | 46586c77b129 |
children |
comparison
equal
deleted
inserted
replaced
2670:50b181d88c9f | 2671:d8601d421b96 |
---|---|
42 | 42 |
43 public final Buffer codeBuffer; | 43 public final Buffer codeBuffer; |
44 public final CiTarget target; | 44 public final CiTarget target; |
45 public final CiTargetMethod targetMethod; | 45 public final CiTargetMethod targetMethod; |
46 public List<ExceptionInfo> exceptionInfoList; | 46 public List<ExceptionInfo> exceptionInfoList; |
47 protected int lastSafepointPos; | |
47 | 48 |
48 public AbstractAssembler(CiTarget target) { | 49 public AbstractAssembler(CiTarget target) { |
49 this.target = target; | 50 this.target = target; |
50 this.targetMethod = new CiTargetMethod(); | 51 this.targetMethod = new CiTargetMethod(); |
51 this.codeBuffer = new Buffer(target.arch.byteOrder); | 52 this.codeBuffer = new Buffer(target.arch.byteOrder); |
160 } | 161 } |
161 | 162 |
162 public void recordImplicitException(int pcOffset, LIRDebugInfo info) { | 163 public void recordImplicitException(int pcOffset, LIRDebugInfo info) { |
163 // record an implicit exception point | 164 // record an implicit exception point |
164 if (info != null) { | 165 if (info != null) { |
166 assert lastSafepointPos < pcOffset; | |
167 lastSafepointPos = pcOffset; | |
165 targetMethod.recordSafepoint(pcOffset, info.debugInfo()); | 168 targetMethod.recordSafepoint(pcOffset, info.debugInfo()); |
166 recordExceptionHandlers(pcOffset, info); | 169 recordExceptionHandlers(pcOffset, info); |
167 } | 170 } |
168 } | 171 } |
169 | 172 |
170 protected void recordDirectCall(int posBefore, int posAfter, Object target, LIRDebugInfo info) { | 173 protected void recordDirectCall(int posBefore, int posAfter, Object target, LIRDebugInfo info) { |
171 CiDebugInfo debugInfo = info != null ? info.debugInfo() : null; | 174 CiDebugInfo debugInfo = info != null ? info.debugInfo() : null; |
175 assert lastSafepointPos < posAfter; | |
176 lastSafepointPos = posAfter; | |
172 targetMethod.recordCall(posBefore, target, debugInfo, true); | 177 targetMethod.recordCall(posBefore, target, debugInfo, true); |
173 } | 178 } |
174 | 179 |
175 protected void recordIndirectCall(int posBefore, int posAfter, Object target, LIRDebugInfo info) { | 180 protected void recordIndirectCall(int posBefore, int posAfter, Object target, LIRDebugInfo info) { |
176 CiDebugInfo debugInfo = info != null ? info.debugInfo() : null; | 181 CiDebugInfo debugInfo = info != null ? info.debugInfo() : null; |
182 assert lastSafepointPos < posAfter; | |
183 lastSafepointPos = posAfter; | |
177 targetMethod.recordCall(posBefore, target, debugInfo, false); | 184 targetMethod.recordCall(posBefore, target, debugInfo, false); |
178 } | 185 } |
179 | 186 |
180 public void recordSafepoint(int pos, LIRDebugInfo info) { | 187 public void recordSafepoint(int pos, LIRDebugInfo info) { |
181 // safepoints always need debug info | 188 // safepoints always need debug info |
182 CiDebugInfo debugInfo = info.debugInfo(); | 189 CiDebugInfo debugInfo = info.debugInfo(); |
190 assert lastSafepointPos < pos; | |
191 lastSafepointPos = pos; | |
183 targetMethod.recordSafepoint(pos, debugInfo); | 192 targetMethod.recordSafepoint(pos, debugInfo); |
184 } | 193 } |
185 | 194 |
186 public CiAddress recordDataReferenceInCode(CiConstant data) { | 195 public CiAddress recordDataReferenceInCode(CiConstant data) { |
187 assert data != null; | 196 assert data != null; |
225 } | 234 } |
226 | 235 |
227 public void blockComment(String s) { | 236 public void blockComment(String s) { |
228 targetMethod.addAnnotation(new CodeComment(codeBuffer.position(), s)); | 237 targetMethod.addAnnotation(new CodeComment(codeBuffer.position(), s)); |
229 } | 238 } |
239 | |
240 public int lastSafepointPos() { | |
241 return lastSafepointPos; | |
242 } | |
230 } | 243 } |