Mercurial > hg > truffle
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; |