58 #include "runtime/frame.inline.hpp" 59 #include "runtime/handles.inline.hpp" 60 #include "runtime/init.hpp" 61 #include "runtime/interfaceSupport.inline.hpp" 62 #include "runtime/java.hpp" 63 #include "runtime/javaCalls.hpp" 64 #include "runtime/sharedRuntime.hpp" 65 #include "runtime/stubRoutines.hpp" 66 #include "runtime/vframe.inline.hpp" 67 #include "runtime/vframeArray.hpp" 68 #include "trace/tracing.hpp" 69 #include "utilities/copy.hpp" 70 #include "utilities/dtrace.hpp" 71 #include "utilities/events.hpp" 72 #include "utilities/hashtable.inline.hpp" 73 #include "utilities/macros.hpp" 74 #include "utilities/xmlstream.hpp" 75 #ifdef COMPILER1 76 #include "c1/c1_Runtime1.hpp" 77 #endif 78 79 // Shared stub locations 80 RuntimeStub* SharedRuntime::_wrong_method_blob; 81 RuntimeStub* SharedRuntime::_wrong_method_abstract_blob; 82 RuntimeStub* SharedRuntime::_ic_miss_blob; 83 RuntimeStub* SharedRuntime::_resolve_opt_virtual_call_blob; 84 RuntimeStub* SharedRuntime::_resolve_virtual_call_blob; 85 RuntimeStub* SharedRuntime::_resolve_static_call_blob; 86 address SharedRuntime::_resolve_static_call_entry; 87 88 DeoptimizationBlob* SharedRuntime::_deopt_blob; 89 SafepointBlob* SharedRuntime::_polling_page_vectors_safepoint_handler_blob; 90 SafepointBlob* SharedRuntime::_polling_page_safepoint_handler_blob; 91 SafepointBlob* SharedRuntime::_polling_page_return_handler_blob; 92 93 #ifdef COMPILER2 94 UncommonTrapBlob* SharedRuntime::_uncommon_trap_blob; 95 #endif // COMPILER2 96 97 197 int tot_misses = 0; 198 for (int i = 0; i < _ICmiss_index; i++) { 199 tty->print_cr(" at: " INTPTR_FORMAT " nof: %d", p2i(_ICmiss_at[i]), _ICmiss_count[i]); 200 tot_misses += _ICmiss_count[i]; 201 } 202 tty->print_cr("Total IC misses: %7d", tot_misses); 203 } 204 } 205 #endif // PRODUCT 206 207 #if INCLUDE_ALL_GCS 208 209 // G1 write-barrier pre: executed before a pointer store. 210 JRT_LEAF(void, SharedRuntime::g1_wb_pre(oopDesc* orig, JavaThread *thread)) 211 if (orig == NULL) { 212 assert(false, "should be optimized out"); 213 return; 214 } 215 assert(oopDesc::is_oop(orig, true /* ignore mark word */), "Error"); 216 // store the original value that was in the field reference 217 thread->satb_mark_queue().enqueue(orig); 218 JRT_END 219 220 // G1 write-barrier post: executed after a pointer store. 221 JRT_LEAF(void, SharedRuntime::g1_wb_post(void* card_addr, JavaThread* thread)) 222 thread->dirty_card_queue().enqueue(card_addr); 223 JRT_END 224 225 #endif // INCLUDE_ALL_GCS 226 227 228 JRT_LEAF(jlong, SharedRuntime::lmul(jlong y, jlong x)) 229 return x * y; 230 JRT_END 231 232 233 JRT_LEAF(jlong, SharedRuntime::ldiv(jlong y, jlong x)) 234 if (x == min_jlong && y == CONST64(-1)) { 235 return x; 236 } else { 237 return x / y; 238 } 239 JRT_END 240 241 242 JRT_LEAF(jlong, SharedRuntime::lrem(jlong y, jlong x)) | 58 #include "runtime/frame.inline.hpp" 59 #include "runtime/handles.inline.hpp" 60 #include "runtime/init.hpp" 61 #include "runtime/interfaceSupport.inline.hpp" 62 #include "runtime/java.hpp" 63 #include "runtime/javaCalls.hpp" 64 #include "runtime/sharedRuntime.hpp" 65 #include "runtime/stubRoutines.hpp" 66 #include "runtime/vframe.inline.hpp" 67 #include "runtime/vframeArray.hpp" 68 #include "trace/tracing.hpp" 69 #include "utilities/copy.hpp" 70 #include "utilities/dtrace.hpp" 71 #include "utilities/events.hpp" 72 #include "utilities/hashtable.inline.hpp" 73 #include "utilities/macros.hpp" 74 #include "utilities/xmlstream.hpp" 75 #ifdef COMPILER1 76 #include "c1/c1_Runtime1.hpp" 77 #endif 78 #if INCLUDE_ALL_GCS 79 #include "gc/g1/g1ThreadLocalData.hpp" 80 #endif // INCLUDE_ALL_GCS 81 82 // Shared stub locations 83 RuntimeStub* SharedRuntime::_wrong_method_blob; 84 RuntimeStub* SharedRuntime::_wrong_method_abstract_blob; 85 RuntimeStub* SharedRuntime::_ic_miss_blob; 86 RuntimeStub* SharedRuntime::_resolve_opt_virtual_call_blob; 87 RuntimeStub* SharedRuntime::_resolve_virtual_call_blob; 88 RuntimeStub* SharedRuntime::_resolve_static_call_blob; 89 address SharedRuntime::_resolve_static_call_entry; 90 91 DeoptimizationBlob* SharedRuntime::_deopt_blob; 92 SafepointBlob* SharedRuntime::_polling_page_vectors_safepoint_handler_blob; 93 SafepointBlob* SharedRuntime::_polling_page_safepoint_handler_blob; 94 SafepointBlob* SharedRuntime::_polling_page_return_handler_blob; 95 96 #ifdef COMPILER2 97 UncommonTrapBlob* SharedRuntime::_uncommon_trap_blob; 98 #endif // COMPILER2 99 100 200 int tot_misses = 0; 201 for (int i = 0; i < _ICmiss_index; i++) { 202 tty->print_cr(" at: " INTPTR_FORMAT " nof: %d", p2i(_ICmiss_at[i]), _ICmiss_count[i]); 203 tot_misses += _ICmiss_count[i]; 204 } 205 tty->print_cr("Total IC misses: %7d", tot_misses); 206 } 207 } 208 #endif // PRODUCT 209 210 #if INCLUDE_ALL_GCS 211 212 // G1 write-barrier pre: executed before a pointer store. 213 JRT_LEAF(void, SharedRuntime::g1_wb_pre(oopDesc* orig, JavaThread *thread)) 214 if (orig == NULL) { 215 assert(false, "should be optimized out"); 216 return; 217 } 218 assert(oopDesc::is_oop(orig, true /* ignore mark word */), "Error"); 219 // store the original value that was in the field reference 220 G1ThreadLocalData::satb_mark_queue(thread).enqueue(orig); 221 JRT_END 222 223 // G1 write-barrier post: executed after a pointer store. 224 JRT_LEAF(void, SharedRuntime::g1_wb_post(void* card_addr, JavaThread* thread)) 225 G1ThreadLocalData::dirty_card_queue(thread).enqueue(card_addr); 226 JRT_END 227 228 #endif // INCLUDE_ALL_GCS 229 230 231 JRT_LEAF(jlong, SharedRuntime::lmul(jlong y, jlong x)) 232 return x * y; 233 JRT_END 234 235 236 JRT_LEAF(jlong, SharedRuntime::ldiv(jlong y, jlong x)) 237 if (x == min_jlong && y == CONST64(-1)) { 238 return x; 239 } else { 240 return x / y; 241 } 242 JRT_END 243 244 245 JRT_LEAF(jlong, SharedRuntime::lrem(jlong y, jlong x)) |