comparison src/share/vm/c1/c1_Runtime1.cpp @ 3791:2c359f27615c

7057120: Tiered: Allow C1 to inline methods with loops Summary: Recompile the enclosing methods without inlining of the method that has OSRed to level 4 or recompile the enclosing method at level 4. Reviewed-by: kvn, never
author iveresov
date Fri, 01 Jul 2011 10:37:37 -0700
parents 7ec4bb02d5f0
children c124e2e7463e
comparison
equal deleted inserted replaced
3790:6f6e91603a45 3791:2c359f27615c
381 address bcp = vfst.method()->bcp_from(vfst.bci()); 381 address bcp = vfst.method()->bcp_from(vfst.bci());
382 JvmtiExport::post_exception_throw(thread, vfst.method(), bcp, thread->exception_oop()); 382 JvmtiExport::post_exception_throw(thread, vfst.method(), bcp, thread->exception_oop());
383 } 383 }
384 JRT_END 384 JRT_END
385 385
386 // This is a helper to allow us to safepoint but allow the outer entry 386 // counter_overflow() is called from within C1-compiled methods. The enclosing method is the method
387 // to be safepoint free if we need to do an osr 387 // associated with the top activation record. The inlinee (that is possibly included in the enclosing
388 // method) method oop is passed as an argument. In order to do that it is embedded in the code as
389 // a constant.
388 static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) { 390 static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) {
389 nmethod* osr_nm = NULL; 391 nmethod* osr_nm = NULL;
390 methodHandle method(THREAD, m); 392 methodHandle method(THREAD, m);
391 393
392 RegisterMap map(THREAD, false); 394 RegisterMap map(THREAD, false);
418 default: ; 420 default: ;
419 } 421 }
420 bci = branch_bci + offset; 422 bci = branch_bci + offset;
421 } 423 }
422 424
423 osr_nm = CompilationPolicy::policy()->event(enclosing_method, method, branch_bci, bci, level, THREAD); 425 osr_nm = CompilationPolicy::policy()->event(enclosing_method, method, branch_bci, bci, level, nm, THREAD);
424 return osr_nm; 426 return osr_nm;
425 } 427 }
426 428
427 JRT_BLOCK_ENTRY(address, Runtime1::counter_overflow(JavaThread* thread, int bci, methodOopDesc* method)) 429 JRT_BLOCK_ENTRY(address, Runtime1::counter_overflow(JavaThread* thread, int bci, methodOopDesc* method))
428 nmethod* osr_nm; 430 nmethod* osr_nm;