Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/parse1.cpp @ 1070:87b2fdd4bf98
6892079: live value must not be garbage failure after fix for 6854812
Reviewed-by: kvn
author | never |
---|---|
date | Wed, 11 Nov 2009 23:39:17 -0800 |
parents | 3a2aa26bdc58 |
children | b2b6a9bf6238 |
comparison
equal
deleted
inserted
replaced
1063:2f1ec89b9995 | 1070:87b2fdd4bf98 |
---|---|
229 } | 229 } |
230 } | 230 } |
231 | 231 |
232 // Use the raw liveness computation to make sure that unexpected | 232 // Use the raw liveness computation to make sure that unexpected |
233 // values don't propagate into the OSR frame. | 233 // values don't propagate into the OSR frame. |
234 MethodLivenessResult live_locals = method()->raw_liveness_at_bci(osr_bci()); | 234 MethodLivenessResult live_locals = method()->liveness_at_bci(osr_bci()); |
235 if (!live_locals.is_valid()) { | 235 if (!live_locals.is_valid()) { |
236 // Degenerate or breakpointed method. | 236 // Degenerate or breakpointed method. |
237 C->record_method_not_compilable("OSR in empty or breakpointed method"); | 237 C->record_method_not_compilable("OSR in empty or breakpointed method"); |
238 return; | 238 return; |
239 } | 239 } |
240 MethodLivenessResult raw_live_locals = method()->raw_liveness_at_bci(osr_bci()); | |
240 | 241 |
241 // Extract the needed locals from the interpreter frame. | 242 // Extract the needed locals from the interpreter frame. |
242 Node *locals_addr = basic_plus_adr(osr_buf, osr_buf, (max_locals-1)*wordSize); | 243 Node *locals_addr = basic_plus_adr(osr_buf, osr_buf, (max_locals-1)*wordSize); |
243 | 244 |
244 // find all the locals that the interpreter thinks contain live oops | 245 // find all the locals that the interpreter thinks contain live oops |
313 if (type->isa_oopptr() != NULL) { | 314 if (type->isa_oopptr() != NULL) { |
314 if (!live_oops.at(index)) { | 315 if (!live_oops.at(index)) { |
315 // skip type check for dead oops | 316 // skip type check for dead oops |
316 continue; | 317 continue; |
317 } | 318 } |
319 } | |
320 if (type->basic_type() == T_ADDRESS && !raw_live_locals.at(index)) { | |
321 // Skip type check for dead address locals | |
322 continue; | |
318 } | 323 } |
319 set_local(index, check_interpreter_type(l, type, bad_type_exit)); | 324 set_local(index, check_interpreter_type(l, type, bad_type_exit)); |
320 } | 325 } |
321 | 326 |
322 for (index = 0; index < sp(); index++) { | 327 for (index = 0; index < sp(); index++) { |