hotspot/src/share/vm/classfile/javaClasses.cpp
changeset 11564 72cf4575309b
parent 10742 a64c942e4e6b
child 12623 09fcb0dc71ad
equal deleted inserted replaced
11563:1edf1d19c36d 11564:72cf4575309b
  1345 
  1345 
  1346   oop backtrace() {
  1346   oop backtrace() {
  1347     return _backtrace();
  1347     return _backtrace();
  1348   }
  1348   }
  1349 
  1349 
  1350   inline void push(methodOop method, short bci, TRAPS) {
  1350   inline void push(methodOop method, int bci, TRAPS) {
       
  1351     // Smear the -1 bci to 0 since the array only holds unsigned
       
  1352     // shorts.  The later line number lookup would just smear the -1
       
  1353     // to a 0 even if it could be recorded.
       
  1354     if (bci == SynchronizationEntryBCI) bci = 0;
       
  1355     assert(bci == (jushort)bci, "doesn't fit");
       
  1356 
  1351     if (_index >= trace_chunk_size) {
  1357     if (_index >= trace_chunk_size) {
  1352       methodHandle mhandle(THREAD, method);
  1358       methodHandle mhandle(THREAD, method);
  1353       expand(CHECK);
  1359       expand(CHECK);
  1354       method = mhandle();
  1360       method = mhandle();
  1355     }
  1361     }
  1572   // fill in as much stack trace as possible
  1578   // fill in as much stack trace as possible
  1573   int max_chunks = MIN2(methods->length(), (int)MaxJavaStackTraceDepth);
  1579   int max_chunks = MIN2(methods->length(), (int)MaxJavaStackTraceDepth);
  1574   int chunk_count = 0;
  1580   int chunk_count = 0;
  1575 
  1581 
  1576   for (;!st.at_end(); st.next()) {
  1582   for (;!st.at_end(); st.next()) {
  1577     // add element
  1583     // Add entry and smear the -1 bci to 0 since the array only holds
  1578     bcis->ushort_at_put(chunk_count, st.bci());
  1584     // unsigned shorts.  The later line number lookup would just smear
       
  1585     // the -1 to a 0 even if it could be recorded.
       
  1586     int bci = st.bci();
       
  1587     if (bci == SynchronizationEntryBCI) bci = 0;
       
  1588     assert(bci == (jushort)bci, "doesn't fit");
       
  1589     bcis->ushort_at_put(chunk_count, bci);
  1579     methods->obj_at_put(chunk_count, st.method());
  1590     methods->obj_at_put(chunk_count, st.method());
  1580 
  1591 
  1581     chunk_count++;
  1592     chunk_count++;
  1582 
  1593 
  1583     // Bail-out for deep stacks
  1594     // Bail-out for deep stacks