src/hotspot/share/runtime/sharedRuntime.hpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 53244 9807daeb47c4
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
   202   static void    throw_delayed_StackOverflowError(JavaThread* thread);
   202   static void    throw_delayed_StackOverflowError(JavaThread* thread);
   203   static void    throw_StackOverflowError_common(JavaThread* thread, bool delayed);
   203   static void    throw_StackOverflowError_common(JavaThread* thread, bool delayed);
   204   static address continuation_for_implicit_exception(JavaThread* thread,
   204   static address continuation_for_implicit_exception(JavaThread* thread,
   205                                                      address faulting_pc,
   205                                                      address faulting_pc,
   206                                                      ImplicitExceptionKind exception_kind);
   206                                                      ImplicitExceptionKind exception_kind);
   207 #if INCLUDE_JVMCI
       
   208   static address deoptimize_for_implicit_exception(JavaThread* thread, address pc, CompiledMethod* nm, int deopt_reason);
       
   209 #endif
       
   210 
   207 
   211   // Post-slow-path-allocation, pre-initializing-stores step for
   208   // Post-slow-path-allocation, pre-initializing-stores step for
   212   // implementing e.g. ReduceInitialCardMarks
   209   // implementing e.g. ReduceInitialCardMarks
   213   static void on_slowpath_allocation_exit(JavaThread* thread);
   210   static void on_slowpath_allocation_exit(JavaThread* thread);
   214 
   211 
   486   static nmethod* generate_native_wrapper(MacroAssembler* masm,
   483   static nmethod* generate_native_wrapper(MacroAssembler* masm,
   487                                           const methodHandle& method,
   484                                           const methodHandle& method,
   488                                           int compile_id,
   485                                           int compile_id,
   489                                           BasicType* sig_bt,
   486                                           BasicType* sig_bt,
   490                                           VMRegPair* regs,
   487                                           VMRegPair* regs,
   491                                           BasicType ret_type);
   488                                           BasicType ret_type,
       
   489                                           address critical_entry);
   492 
   490 
   493   // Block before entering a JNI critical method
   491   // Block before entering a JNI critical method
   494   static void block_for_jni_critical(JavaThread* thread);
   492   static void block_for_jni_critical(JavaThread* thread);
   495 
   493 
   496   // Pin/Unpin object
   494   // Pin/Unpin object
   637  private:
   635  private:
   638   AdapterFingerPrint* _fingerprint;
   636   AdapterFingerPrint* _fingerprint;
   639   address _i2c_entry;
   637   address _i2c_entry;
   640   address _c2i_entry;
   638   address _c2i_entry;
   641   address _c2i_unverified_entry;
   639   address _c2i_unverified_entry;
       
   640   address _c2i_no_clinit_check_entry;
   642 
   641 
   643 #ifdef ASSERT
   642 #ifdef ASSERT
   644   // Captures code and signature used to generate this adapter when
   643   // Captures code and signature used to generate this adapter when
   645   // verifying adapter equivalence.
   644   // verifying adapter equivalence.
   646   unsigned char* _saved_code;
   645   unsigned char* _saved_code;
   647   int            _saved_code_length;
   646   int            _saved_code_length;
   648 #endif
   647 #endif
   649 
   648 
   650   void init(AdapterFingerPrint* fingerprint, address i2c_entry, address c2i_entry, address c2i_unverified_entry) {
   649   void init(AdapterFingerPrint* fingerprint, address i2c_entry, address c2i_entry, address c2i_unverified_entry, address c2i_no_clinit_check_entry) {
   651     _fingerprint = fingerprint;
   650     _fingerprint = fingerprint;
   652     _i2c_entry = i2c_entry;
   651     _i2c_entry = i2c_entry;
   653     _c2i_entry = c2i_entry;
   652     _c2i_entry = c2i_entry;
   654     _c2i_unverified_entry = c2i_unverified_entry;
   653     _c2i_unverified_entry = c2i_unverified_entry;
       
   654     _c2i_no_clinit_check_entry = c2i_no_clinit_check_entry;
   655 #ifdef ASSERT
   655 #ifdef ASSERT
   656     _saved_code = NULL;
   656     _saved_code = NULL;
   657     _saved_code_length = 0;
   657     _saved_code_length = 0;
   658 #endif
   658 #endif
   659   }
   659   }
   662 
   662 
   663   // should never be used
   663   // should never be used
   664   AdapterHandlerEntry();
   664   AdapterHandlerEntry();
   665 
   665 
   666  public:
   666  public:
   667   address get_i2c_entry()            const { return _i2c_entry; }
   667   address get_i2c_entry()                  const { return _i2c_entry; }
   668   address get_c2i_entry()            const { return _c2i_entry; }
   668   address get_c2i_entry()                  const { return _c2i_entry; }
   669   address get_c2i_unverified_entry() const { return _c2i_unverified_entry; }
   669   address get_c2i_unverified_entry()       const { return _c2i_unverified_entry; }
       
   670   address get_c2i_no_clinit_check_entry()  const { return _c2i_no_clinit_check_entry; }
       
   671 
   670   address base_address();
   672   address base_address();
   671   void relocate(address new_base);
   673   void relocate(address new_base);
   672 
   674 
   673   AdapterFingerPrint* fingerprint() const { return _fingerprint; }
   675   AdapterFingerPrint* fingerprint() const { return _fingerprint; }
   674 
   676 
   710   static AdapterHandlerEntry* get_adapter0(const methodHandle& method);
   712   static AdapterHandlerEntry* get_adapter0(const methodHandle& method);
   711 
   713 
   712  public:
   714  public:
   713 
   715 
   714   static AdapterHandlerEntry* new_entry(AdapterFingerPrint* fingerprint,
   716   static AdapterHandlerEntry* new_entry(AdapterFingerPrint* fingerprint,
   715                                         address i2c_entry, address c2i_entry, address c2i_unverified_entry);
   717                                         address i2c_entry,
       
   718                                         address c2i_entry,
       
   719                                         address c2i_unverified_entry,
       
   720                                         address c2i_no_clinit_check_entry = NULL);
   716   static void create_native_wrapper(const methodHandle& method);
   721   static void create_native_wrapper(const methodHandle& method);
   717   static AdapterHandlerEntry* get_adapter(const methodHandle& method);
   722   static AdapterHandlerEntry* get_adapter(const methodHandle& method);
   718 
   723 
   719   static void print_handler(const CodeBlob* b) { print_handler_on(tty, b); }
   724   static void print_handler(const CodeBlob* b) { print_handler_on(tty, b); }
   720   static void print_handler_on(outputStream* st, const CodeBlob* b);
   725   static void print_handler_on(outputStream* st, const CodeBlob* b);