mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
7057120: Tiered: Allow C1 to inline methods with loops
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
This commit is contained in:
parent
528a9bb452
commit
47caaa4c06
11 changed files with 128 additions and 50 deletions
|
@ -383,8 +383,10 @@ JRT_ENTRY(void, Runtime1::post_jvmti_exception_throw(JavaThread* thread))
|
|||
}
|
||||
JRT_END
|
||||
|
||||
// This is a helper to allow us to safepoint but allow the outer entry
|
||||
// to be safepoint free if we need to do an osr
|
||||
// counter_overflow() is called from within C1-compiled methods. The enclosing method is the method
|
||||
// associated with the top activation record. The inlinee (that is possibly included in the enclosing
|
||||
// method) method oop is passed as an argument. In order to do that it is embedded in the code as
|
||||
// a constant.
|
||||
static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) {
|
||||
nmethod* osr_nm = NULL;
|
||||
methodHandle method(THREAD, m);
|
||||
|
@ -420,7 +422,7 @@ static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, meth
|
|||
bci = branch_bci + offset;
|
||||
}
|
||||
|
||||
osr_nm = CompilationPolicy::policy()->event(enclosing_method, method, branch_bci, bci, level, THREAD);
|
||||
osr_nm = CompilationPolicy::policy()->event(enclosing_method, method, branch_bci, bci, level, nm, THREAD);
|
||||
return osr_nm;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue