8024069: replace_in_map() should operate on parent maps

Type information gets lost because replace_in_map() doesn't update parent maps

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2013-10-19 12:16:43 +02:00
parent 801b3e680e
commit 3f8ae3e9b9
17 changed files with 210 additions and 123 deletions

View file

@ -655,7 +655,8 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
_inlining_progress(false),
_inlining_incrementally(false),
_print_inlining_list(NULL),
_print_inlining_idx(0) {
_print_inlining_idx(0),
_preserve_jvm_state(0) {
C = this;
CompileWrapper cw(this);
@ -763,7 +764,7 @@ Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr
return;
}
JVMState* jvms = build_start_state(start(), tf());
if ((jvms = cg->generate(jvms)) == NULL) {
if ((jvms = cg->generate(jvms, NULL)) == NULL) {
record_method_not_compilable("method parse failed");
return;
}
@ -940,7 +941,8 @@ Compile::Compile( ciEnv* ci_env,
_inlining_progress(false),
_inlining_incrementally(false),
_print_inlining_list(NULL),
_print_inlining_idx(0) {
_print_inlining_idx(0),
_preserve_jvm_state(0) {
C = this;
#ifndef PRODUCT