hotspot/src/share/vm/runtime/interfaceSupport.hpp
changeset 40926 2fd1cf3e70e9
parent 40010 e32d5e545789
child 41084 fc5db29fa08e
equal deleted inserted replaced
40925:04b19236aa98 40926:2fd1cf3e70e9
   217  public:
   217  public:
   218   ThreadInVMfromJava(JavaThread* thread) : ThreadStateTransition(thread) {
   218   ThreadInVMfromJava(JavaThread* thread) : ThreadStateTransition(thread) {
   219     trans_from_java(_thread_in_vm);
   219     trans_from_java(_thread_in_vm);
   220   }
   220   }
   221   ~ThreadInVMfromJava()  {
   221   ~ThreadInVMfromJava()  {
       
   222     if (_thread->stack_yellow_reserved_zone_disabled()) {
       
   223       _thread->enable_stack_yellow_reserved_zone();
       
   224     }
   222     trans(_thread_in_vm, _thread_in_Java);
   225     trans(_thread_in_vm, _thread_in_Java);
   223     // Check for pending. async. exceptions or suspends.
   226     // Check for pending. async. exceptions or suspends.
   224     if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition();
   227     if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition();
   225   }
   228   }
   226 };
   229 };
   304  public:
   307  public:
   305   ThreadInVMfromJavaNoAsyncException(JavaThread* thread) : ThreadStateTransition(thread) {
   308   ThreadInVMfromJavaNoAsyncException(JavaThread* thread) : ThreadStateTransition(thread) {
   306     trans_from_java(_thread_in_vm);
   309     trans_from_java(_thread_in_vm);
   307   }
   310   }
   308   ~ThreadInVMfromJavaNoAsyncException()  {
   311   ~ThreadInVMfromJavaNoAsyncException()  {
       
   312     if (_thread->stack_yellow_reserved_zone_disabled()) {
       
   313       _thread->enable_stack_yellow_reserved_zone();
       
   314     }
   309     trans(_thread_in_vm, _thread_in_Java);
   315     trans(_thread_in_vm, _thread_in_Java);
   310     // NOTE: We do not check for pending. async. exceptions.
   316     // NOTE: We do not check for pending. async. exceptions.
   311     // If we did and moved the pending async exception over into the
   317     // If we did and moved the pending async exception over into the
   312     // pending exception field, we would need to deopt (currently C2
   318     // pending exception field, we would need to deopt (currently C2
   313     // only). However, to do so would require that we transition back
   319     // only). However, to do so would require that we transition back
   314     // to the _thread_in_vm state. Instead we postpone the handling of
   320     // to the _thread_in_vm state. Instead we postpone the handling of
   315     // the async exception.
   321     // the async exception.
   316 
   322 
       
   323 
   317     // Check for pending. suspends only.
   324     // Check for pending. suspends only.
   318     if (_thread->has_special_runtime_exit_condition())
   325     if (_thread->has_special_runtime_exit_condition())
   319       _thread->handle_special_runtime_exit_condition(false);
   326       _thread->handle_special_runtime_exit_condition(false);
   320   }
   327   }
   321 };
   328 };