agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6892186 Sdiff agent/src/share/classes/sun/jvm/hotspot/code

agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java

Print this page




 156         message = message + " or ";
 157       }
 158       message = message + "SafepointBlob";
 159       if (VM.getVM().isServerCompiler()) {
 160         message = message + ", DeoptimizationBlob, or ExceptionBlob";
 161       }
 162       message = message + ")";
 163       throw new RuntimeException(message);
 164     }
 165   }
 166 
 167   public void iterate(CodeCacheVisitor visitor) {
 168     CodeHeap heap = getHeap();
 169     Address ptr = heap.begin();
 170     Address end = heap.end();
 171 
 172     visitor.prologue(ptr, end);
 173     CodeBlob lastBlob = null;
 174     while (ptr != null && ptr.lessThan(end)) {
 175       try {
 176         CodeBlob blob = findBlobUnsafe(ptr);

 177         if (blob != null) {
 178           visitor.visit(blob);
 179           if (blob == lastBlob) {
 180             throw new InternalError("saw same blob twice");
 181           }
 182           lastBlob = blob;
 183         }
 184       } catch (RuntimeException e) {
 185         e.printStackTrace();
 186       }
 187       Address next = heap.nextBlock(ptr);
 188       if (next != null && next.lessThan(ptr)) {
 189         throw new InternalError("pointer moved backwards");
 190       }
 191       ptr = next;
 192     }
 193     visitor.epilogue();
 194   }
 195 
 196   //--------------------------------------------------------------------------------


 156         message = message + " or ";
 157       }
 158       message = message + "SafepointBlob";
 159       if (VM.getVM().isServerCompiler()) {
 160         message = message + ", DeoptimizationBlob, or ExceptionBlob";
 161       }
 162       message = message + ")";
 163       throw new RuntimeException(message);
 164     }
 165   }
 166 
 167   public void iterate(CodeCacheVisitor visitor) {
 168     CodeHeap heap = getHeap();
 169     Address ptr = heap.begin();
 170     Address end = heap.end();
 171 
 172     visitor.prologue(ptr, end);
 173     CodeBlob lastBlob = null;
 174     while (ptr != null && ptr.lessThan(end)) {
 175       try {
 176         // Use findStart to get a pointer inside blob other findBlob asserts
 177         CodeBlob blob = findBlobUnsafe(heap.findStart(ptr));
 178         if (blob != null) {
 179           visitor.visit(blob);
 180           if (blob == lastBlob) {
 181             throw new InternalError("saw same blob twice");
 182           }
 183           lastBlob = blob;
 184         }
 185       } catch (RuntimeException e) {
 186         e.printStackTrace();
 187       }
 188       Address next = heap.nextBlock(ptr);
 189       if (next != null && next.lessThan(ptr)) {
 190         throw new InternalError("pointer moved backwards");
 191       }
 192       ptr = next;
 193     }
 194     visitor.epilogue();
 195   }
 196 
 197   //--------------------------------------------------------------------------------
agent/src/share/classes/sun/jvm/hotspot/code/CodeCache.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File