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 } |