< prev index next >

src/hotspot/share/utilities/vmError.cpp

Print this page
rev 47445 : 8171853: Remove Shark compiler


 172     jio_snprintf(buf, buflen,
 173                  "Internal Error (0x%x), pid=%d, tid=" UINTX_FORMAT,
 174                  _id, os::current_process_id(), os::current_thread_id());
 175   }
 176 
 177   return buf;
 178 }
 179 
 180 void VMError::print_stack_trace(outputStream* st, JavaThread* jt,
 181                                 char* buf, int buflen, bool verbose) {
 182 #ifdef ZERO
 183   if (jt->zero_stack()->sp() && jt->top_zero_frame()) {
 184     // StackFrameStream uses the frame anchor, which may not have
 185     // been set up.  This can be done at any time in Zero, however,
 186     // so if it hasn't been set up then we just set it up now and
 187     // clear it again when we're done.
 188     bool has_last_Java_frame = jt->has_last_Java_frame();
 189     if (!has_last_Java_frame)
 190       jt->set_last_Java_frame();
 191     st->print("Java frames:");
 192 
 193     // If the top frame is a Shark frame and the frame anchor isn't
 194     // set up then it's possible that the information in the frame
 195     // is garbage: it could be from a previous decache, or it could
 196     // simply have never been written.  So we print a warning...
 197     StackFrameStream sfs(jt);
 198     if (!has_last_Java_frame && !sfs.is_done()) {
 199       if (sfs.current()->zeroframe()->is_shark_frame()) {
 200         st->print(" (TOP FRAME MAY BE JUNK)");
 201       }
 202     }
 203     st->cr();
 204 
 205     // Print the frames

 206     for(int i = 0; !sfs.is_done(); sfs.next(), i++) {
 207       sfs.current()->zero_print_on_error(i, st, buf, buflen);
 208       st->cr();
 209     }
 210 
 211     // Reset the frame anchor if necessary
 212     if (!has_last_Java_frame)
 213       jt->reset_last_Java_frame();
 214   }
 215 #else
 216   if (jt->has_last_Java_frame()) {
 217     st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)");
 218     for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) {
 219       sfs.current()->print_on_error(st, buf, buflen, verbose);
 220       st->cr();
 221     }
 222   }
 223 #endif // ZERO
 224 }
 225 




 172     jio_snprintf(buf, buflen,
 173                  "Internal Error (0x%x), pid=%d, tid=" UINTX_FORMAT,
 174                  _id, os::current_process_id(), os::current_thread_id());
 175   }
 176 
 177   return buf;
 178 }
 179 
 180 void VMError::print_stack_trace(outputStream* st, JavaThread* jt,
 181                                 char* buf, int buflen, bool verbose) {
 182 #ifdef ZERO
 183   if (jt->zero_stack()->sp() && jt->top_zero_frame()) {
 184     // StackFrameStream uses the frame anchor, which may not have
 185     // been set up.  This can be done at any time in Zero, however,
 186     // so if it hasn't been set up then we just set it up now and
 187     // clear it again when we're done.
 188     bool has_last_Java_frame = jt->has_last_Java_frame();
 189     if (!has_last_Java_frame)
 190       jt->set_last_Java_frame();
 191     st->print("Java frames:");











 192     st->cr();
 193 
 194     // Print the frames
 195     StackFrameStream sfs(jt);
 196     for(int i = 0; !sfs.is_done(); sfs.next(), i++) {
 197       sfs.current()->zero_print_on_error(i, st, buf, buflen);
 198       st->cr();
 199     }
 200 
 201     // Reset the frame anchor if necessary
 202     if (!has_last_Java_frame)
 203       jt->reset_last_Java_frame();
 204   }
 205 #else
 206   if (jt->has_last_Java_frame()) {
 207     st->print_cr("Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)");
 208     for(StackFrameStream sfs(jt); !sfs.is_done(); sfs.next()) {
 209       sfs.current()->print_on_error(st, buf, buflen, verbose);
 210       st->cr();
 211     }
 212   }
 213 #endif // ZERO
 214 }
 215 


< prev index next >