< prev index next >

src/hotspot/cpu/zero/stack_zero.cpp

Print this page
rev 47445 : 8171853: Remove Shark compiler


  35     : _base(NULL), _top(NULL), _sp(NULL) {
  36     _shadow_pages_size = JavaThread::stack_shadow_zone_size();
  37   }
  38 
  39 int ZeroStack::suggest_size(Thread *thread) const {
  40   assert(needs_setup(), "already set up");
  41   int abi_available = abi_stack_available(thread);
  42   assert(abi_available >= 0, "available abi stack must be >= 0");
  43   return align_down(abi_available / 2, wordSize);
  44 }
  45 
  46 void ZeroStack::handle_overflow(TRAPS) {
  47   JavaThread *thread = (JavaThread *) THREAD;
  48 
  49   // Set up the frame anchor if it isn't already
  50   bool has_last_Java_frame = thread->has_last_Java_frame();
  51   if (!has_last_Java_frame) {
  52     intptr_t *sp = thread->zero_stack()->sp();
  53     ZeroFrame *frame = thread->top_zero_frame();
  54     while (frame) {
  55       if (frame->is_shark_frame())
  56         break;
  57 
  58       if (frame->is_interpreter_frame()) {
  59         interpreterState istate =
  60           frame->as_interpreter_frame()->interpreter_state();
  61         if (istate->self_link() == istate)
  62           break;
  63       }
  64 
  65       sp = ((intptr_t *) frame) + 1;
  66       frame = frame->next();
  67     }
  68 
  69     if (frame == NULL)
  70       fatal("unrecoverable stack overflow");
  71 
  72     thread->set_last_Java_frame(frame, sp);
  73   }
  74 
  75   // Throw the exception
  76   switch (thread->thread_state()) {
  77   case _thread_in_Java:




  35     : _base(NULL), _top(NULL), _sp(NULL) {
  36     _shadow_pages_size = JavaThread::stack_shadow_zone_size();
  37   }
  38 
  39 int ZeroStack::suggest_size(Thread *thread) const {
  40   assert(needs_setup(), "already set up");
  41   int abi_available = abi_stack_available(thread);
  42   assert(abi_available >= 0, "available abi stack must be >= 0");
  43   return align_down(abi_available / 2, wordSize);
  44 }
  45 
  46 void ZeroStack::handle_overflow(TRAPS) {
  47   JavaThread *thread = (JavaThread *) THREAD;
  48 
  49   // Set up the frame anchor if it isn't already
  50   bool has_last_Java_frame = thread->has_last_Java_frame();
  51   if (!has_last_Java_frame) {
  52     intptr_t *sp = thread->zero_stack()->sp();
  53     ZeroFrame *frame = thread->top_zero_frame();
  54     while (frame) {



  55       if (frame->is_interpreter_frame()) {
  56         interpreterState istate =
  57           frame->as_interpreter_frame()->interpreter_state();
  58         if (istate->self_link() == istate)
  59           break;
  60       }
  61 
  62       sp = ((intptr_t *) frame) + 1;
  63       frame = frame->next();
  64     }
  65 
  66     if (frame == NULL)
  67       fatal("unrecoverable stack overflow");
  68 
  69     thread->set_last_Java_frame(frame, sp);
  70   }
  71 
  72   // Throw the exception
  73   switch (thread->thread_state()) {
  74   case _thread_in_Java:


< prev index next >