src/cpu/zero/vm/stack_zero.inline.hpp

Print this page




  32 // This function should match SharkStack::CreateStackOverflowCheck
  33 inline void ZeroStack::overflow_check(int required_words, TRAPS) {
  34   // Check the Zero stack
  35   if (available_words() < required_words) {
  36     handle_overflow(THREAD);
  37     return;
  38   }
  39 
  40   // Check the ABI stack
  41   if (abi_stack_available(THREAD) < 0) {
  42     handle_overflow(THREAD);
  43     return;
  44   }
  45 }
  46 
  47 // This method returns the amount of ABI stack available for us
  48 // to use under normal circumstances.  Note that the returned
  49 // value can be negative.
  50 inline int ZeroStack::abi_stack_available(Thread *thread) const {
  51   guarantee(Thread::current() == thread, "should run in the same thread");
  52   assert(thread->stack_size() -
  53          (thread->stack_base() - (address) &stack_used +
  54           JavaThread::stack_guard_zone_size() + JavaThread::stack_shadow_zone_size()) ==
  55          (address)&stack_used - thread->stack_overflow_limit(), "sanity");
  56   return (address)&stack_used - stack_overflow_limit();
  57 }
  58 
  59 #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP


  32 // This function should match SharkStack::CreateStackOverflowCheck
  33 inline void ZeroStack::overflow_check(int required_words, TRAPS) {
  34   // Check the Zero stack
  35   if (available_words() < required_words) {
  36     handle_overflow(THREAD);
  37     return;
  38   }
  39 
  40   // Check the ABI stack
  41   if (abi_stack_available(THREAD) < 0) {
  42     handle_overflow(THREAD);
  43     return;
  44   }
  45 }
  46 
  47 // This method returns the amount of ABI stack available for us
  48 // to use under normal circumstances.  Note that the returned
  49 // value can be negative.
  50 inline int ZeroStack::abi_stack_available(Thread *thread) const {
  51   guarantee(Thread::current() == thread, "should run in the same thread");
  52   int stack_used = thread->stack_base() - (address) &stack_used
  53     + (JavaThread::stack_guard_zone_size() + JavaThread::stack_shadow_zone_size());
  54   int stack_free = thread->stack_size() - stack_used;
  55   return stack_free;

  56 }
  57 
  58 #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP