mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
6973963: SEGV in ciBlock::start_bci() with EA
Added more checks into ResourceObj and growableArray to verify correctness of allocation type. Reviewed-by: never, coleenp, dholmes
This commit is contained in:
parent
f0b6dc4e4f
commit
5bed80aab9
17 changed files with 128 additions and 43 deletions
|
@ -103,13 +103,14 @@ void C2Compiler::compile_method(ciEnv* env,
|
|||
if (!is_initialized()) {
|
||||
initialize();
|
||||
}
|
||||
bool subsume_loads = true;
|
||||
bool subsume_loads = SubsumeLoads;
|
||||
bool do_escape_analysis = DoEscapeAnalysis &&
|
||||
!env->jvmti_can_access_local_variables();
|
||||
while (!env->failing()) {
|
||||
// Attempt to compile while subsuming loads into machine instructions.
|
||||
Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis);
|
||||
|
||||
|
||||
// Check result and retry if appropriate.
|
||||
if (C.failure_reason() != NULL) {
|
||||
if (C.failure_reason_is(retry_no_subsuming_loads())) {
|
||||
|
@ -127,6 +128,16 @@ void C2Compiler::compile_method(ciEnv* env,
|
|||
// on the ciEnv via env->record_method_not_compilable().
|
||||
env->record_failure(C.failure_reason());
|
||||
}
|
||||
if (StressRecompilation) {
|
||||
if (subsume_loads) {
|
||||
subsume_loads = false;
|
||||
continue; // retry
|
||||
}
|
||||
if (do_escape_analysis) {
|
||||
do_escape_analysis = false;
|
||||
continue; // retry
|
||||
}
|
||||
}
|
||||
|
||||
// No retry; just break the loop.
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue