Mercurial > hg > openjdk > hsx16
changeset 975:938b86f7a7fc
6892079: live value must not be garbage failure after fix for 6854812
Summary: code was developed by never
Reviewed-by: kvn
author | cfang |
---|---|
date | Tue, 24 Nov 2009 15:52:43 -0800 |
parents | 834503c17fc1 |
children | c5cb255ec7a3 43e3f86b638d |
files | src/share/vm/opto/parse1.cpp |
diffstat | 1 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/opto/parse1.cpp Thu Nov 12 19:44:32 2009 -0800 +++ b/src/share/vm/opto/parse1.cpp Tue Nov 24 15:52:43 2009 -0800 @@ -231,12 +231,13 @@ // Use the raw liveness computation to make sure that unexpected // values don't propagate into the OSR frame. - MethodLivenessResult live_locals = method()->raw_liveness_at_bci(osr_bci()); + MethodLivenessResult live_locals = method()->liveness_at_bci(osr_bci()); if (!live_locals.is_valid()) { // Degenerate or breakpointed method. C->record_method_not_compilable("OSR in empty or breakpointed method"); return; } + MethodLivenessResult raw_live_locals = method()->raw_liveness_at_bci(osr_bci()); // Extract the needed locals from the interpreter frame. Node *locals_addr = basic_plus_adr(osr_buf, osr_buf, (max_locals-1)*wordSize); @@ -316,6 +317,10 @@ continue; } } + if (type->basic_type() == T_ADDRESS && !raw_live_locals.at(index)) { + // Skip type check for dead address locals + continue; + } set_local(index, check_interpreter_type(l, type, bad_type_exit)); }