hotspot/src/share/vm/runtime/sharedRuntime.cpp
changeset 13883 6979b9850feb
parent 13881 a326d528f3e1
child 13887 89b873bcc55b
equal deleted inserted replaced
13882:80d5d0d21b75 13883:6979b9850feb
    86 RuntimeStub*        SharedRuntime::_resolve_opt_virtual_call_blob;
    86 RuntimeStub*        SharedRuntime::_resolve_opt_virtual_call_blob;
    87 RuntimeStub*        SharedRuntime::_resolve_virtual_call_blob;
    87 RuntimeStub*        SharedRuntime::_resolve_virtual_call_blob;
    88 RuntimeStub*        SharedRuntime::_resolve_static_call_blob;
    88 RuntimeStub*        SharedRuntime::_resolve_static_call_blob;
    89 
    89 
    90 DeoptimizationBlob* SharedRuntime::_deopt_blob;
    90 DeoptimizationBlob* SharedRuntime::_deopt_blob;
       
    91 SafepointBlob*      SharedRuntime::_polling_page_vectors_safepoint_handler_blob;
    91 SafepointBlob*      SharedRuntime::_polling_page_safepoint_handler_blob;
    92 SafepointBlob*      SharedRuntime::_polling_page_safepoint_handler_blob;
    92 SafepointBlob*      SharedRuntime::_polling_page_return_handler_blob;
    93 SafepointBlob*      SharedRuntime::_polling_page_return_handler_blob;
    93 
    94 
    94 #ifdef COMPILER2
    95 #ifdef COMPILER2
    95 UncommonTrapBlob*   SharedRuntime::_uncommon_trap_blob;
    96 UncommonTrapBlob*   SharedRuntime::_uncommon_trap_blob;
   102   _ic_miss_blob                        = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::handle_wrong_method_ic_miss), "ic_miss_stub");
   103   _ic_miss_blob                        = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::handle_wrong_method_ic_miss), "ic_miss_stub");
   103   _resolve_opt_virtual_call_blob       = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_opt_virtual_call_C),  "resolve_opt_virtual_call");
   104   _resolve_opt_virtual_call_blob       = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_opt_virtual_call_C),  "resolve_opt_virtual_call");
   104   _resolve_virtual_call_blob           = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_virtual_call_C),      "resolve_virtual_call");
   105   _resolve_virtual_call_blob           = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_virtual_call_C),      "resolve_virtual_call");
   105   _resolve_static_call_blob            = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_static_call_C),       "resolve_static_call");
   106   _resolve_static_call_blob            = generate_resolve_blob(CAST_FROM_FN_PTR(address, SharedRuntime::resolve_static_call_C),       "resolve_static_call");
   106 
   107 
   107   _polling_page_safepoint_handler_blob = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), false);
   108 #ifdef COMPILER2
   108   _polling_page_return_handler_blob    = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), true);
   109   // Vectors are generated only by C2.
       
   110   if (is_wide_vector(MaxVectorSize)) {
       
   111     _polling_page_vectors_safepoint_handler_blob = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), POLL_AT_VECTOR_LOOP);
       
   112   }
       
   113 #endif // COMPILER2
       
   114   _polling_page_safepoint_handler_blob = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), POLL_AT_LOOP);
       
   115   _polling_page_return_handler_blob    = generate_handler_blob(CAST_FROM_FN_PTR(address, SafepointSynchronize::handle_polling_page_exception), POLL_AT_RETURN);
   109 
   116 
   110   generate_deopt_blob();
   117   generate_deopt_blob();
   111 
   118 
   112 #ifdef COMPILER2
   119 #ifdef COMPILER2
   113   generate_uncommon_trap_blob();
   120   generate_uncommon_trap_blob();
   533 
   540 
   534   assert( ((NativeInstruction*)pc)->is_safepoint_poll(),
   541   assert( ((NativeInstruction*)pc)->is_safepoint_poll(),
   535     "Only polling locations are used for safepoint");
   542     "Only polling locations are used for safepoint");
   536 
   543 
   537   bool at_poll_return = ((nmethod*)cb)->is_at_poll_return(pc);
   544   bool at_poll_return = ((nmethod*)cb)->is_at_poll_return(pc);
       
   545   bool has_wide_vectors = ((nmethod*)cb)->has_wide_vectors();
   538   if (at_poll_return) {
   546   if (at_poll_return) {
   539     assert(SharedRuntime::polling_page_return_handler_blob() != NULL,
   547     assert(SharedRuntime::polling_page_return_handler_blob() != NULL,
   540            "polling page return stub not created yet");
   548            "polling page return stub not created yet");
   541     stub = SharedRuntime::polling_page_return_handler_blob()->entry_point();
   549     stub = SharedRuntime::polling_page_return_handler_blob()->entry_point();
       
   550   } else if (has_wide_vectors) {
       
   551     assert(SharedRuntime::polling_page_vectors_safepoint_handler_blob() != NULL,
       
   552            "polling page vectors safepoint stub not created yet");
       
   553     stub = SharedRuntime::polling_page_vectors_safepoint_handler_blob()->entry_point();
   542   } else {
   554   } else {
   543     assert(SharedRuntime::polling_page_safepoint_handler_blob() != NULL,
   555     assert(SharedRuntime::polling_page_safepoint_handler_blob() != NULL,
   544            "polling page safepoint stub not created yet");
   556            "polling page safepoint stub not created yet");
   545     stub = SharedRuntime::polling_page_safepoint_handler_blob()->entry_point();
   557     stub = SharedRuntime::polling_page_safepoint_handler_blob()->entry_point();
   546   }
   558   }