src/os/posix/vm/os_posix.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8066803 Sdiff src/os/posix/vm

src/os/posix/vm/os_posix.cpp

Print this page




  72         break;
  73     }
  74   }
  75   VMError::report_coredump_status(buffer, success);
  76 }
  77 
  78 int os::get_native_stack(address* stack, int frames, int toSkip) {
  79 #ifdef _NMT_NOINLINE_
  80   toSkip++;
  81 #endif
  82 
  83   int frame_idx = 0;
  84   int num_of_frames;  // number of frames captured
  85   frame fr = os::current_frame();
  86   while (fr.pc() && frame_idx < frames) {
  87     if (toSkip > 0) {
  88       toSkip --;
  89     } else {
  90       stack[frame_idx ++] = fr.pc();
  91     }
  92     if (fr.fp() == NULL || os::is_first_C_frame(&fr)
  93         ||fr.sender_pc() == NULL || fr.cb() != NULL) break;
  94 
  95     if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
  96       fr = os::get_sender_for_C_frame(&fr);
  97     } else {
  98       break;
  99     }
 100   }
 101   num_of_frames = frame_idx;
 102   for (; frame_idx < frames; frame_idx ++) {
 103     stack[frame_idx] = NULL;
 104   }
 105 
 106   return num_of_frames;
 107 }
 108 
 109 
 110 bool os::unsetenv(const char* name) {
 111   assert(name != NULL, "Null pointer");
 112   return (::unsetenv(name) == 0);
 113 }




  72         break;
  73     }
  74   }
  75   VMError::report_coredump_status(buffer, success);
  76 }
  77 
  78 int os::get_native_stack(address* stack, int frames, int toSkip) {
  79 #ifdef _NMT_NOINLINE_
  80   toSkip++;
  81 #endif
  82 
  83   int frame_idx = 0;
  84   int num_of_frames;  // number of frames captured
  85   frame fr = os::current_frame();
  86   while (fr.pc() && frame_idx < frames) {
  87     if (toSkip > 0) {
  88       toSkip --;
  89     } else {
  90       stack[frame_idx ++] = fr.pc();
  91     }
  92     if (fr.fp() == NULL || fr.cb() != NULL ||
  93         fr.sender_pc() == NULL || os::is_first_C_frame(&fr)) break;
  94 
  95     if (fr.sender_pc() && !os::is_first_C_frame(&fr)) {
  96       fr = os::get_sender_for_C_frame(&fr);
  97     } else {
  98       break;
  99     }
 100   }
 101   num_of_frames = frame_idx;
 102   for (; frame_idx < frames; frame_idx ++) {
 103     stack[frame_idx] = NULL;
 104   }
 105 
 106   return num_of_frames;
 107 }
 108 
 109 
 110 bool os::unsetenv(const char* name) {
 111   assert(name != NULL, "Null pointer");
 112   return (::unsetenv(name) == 0);
 113 }


src/os/posix/vm/os_posix.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File