323 return NULL; |
323 return NULL; |
324 #endif // COMPILER2 |
324 #endif // COMPILER2 |
325 } |
325 } |
326 |
326 |
327 // ------------------------------------------------------------------ |
327 // ------------------------------------------------------------------ |
328 // ciMethod::liveness_at_bci |
328 // ciMethod::raw_liveness_at_bci |
329 // |
329 // |
330 // Which local variables are live at a specific bci? |
330 // Which local variables are live at a specific bci? |
331 MethodLivenessResult ciMethod::liveness_at_bci(int bci) { |
331 MethodLivenessResult ciMethod::raw_liveness_at_bci(int bci) { |
332 check_is_loaded(); |
332 check_is_loaded(); |
333 if (_liveness == NULL) { |
333 if (_liveness == NULL) { |
334 // Create the liveness analyzer. |
334 // Create the liveness analyzer. |
335 Arena* arena = CURRENT_ENV->arena(); |
335 Arena* arena = CURRENT_ENV->arena(); |
336 _liveness = new (arena) MethodLiveness(arena, this); |
336 _liveness = new (arena) MethodLiveness(arena, this); |
337 _liveness->compute_liveness(); |
337 _liveness->compute_liveness(); |
338 } |
338 } |
339 MethodLivenessResult result = _liveness->get_liveness_at(bci); |
339 return _liveness->get_liveness_at(bci); |
|
340 } |
|
341 |
|
342 // ------------------------------------------------------------------ |
|
343 // ciMethod::liveness_at_bci |
|
344 // |
|
345 // Which local variables are live at a specific bci? When debugging |
|
346 // will return true for all locals in some cases to improve debug |
|
347 // information. |
|
348 MethodLivenessResult ciMethod::liveness_at_bci(int bci) { |
|
349 MethodLivenessResult result = raw_liveness_at_bci(bci); |
340 if (CURRENT_ENV->jvmti_can_access_local_variables() || DeoptimizeALot || CompileTheWorld) { |
350 if (CURRENT_ENV->jvmti_can_access_local_variables() || DeoptimizeALot || CompileTheWorld) { |
341 // Keep all locals live for the user's edification and amusement. |
351 // Keep all locals live for the user's edification and amusement. |
342 result.at_put_range(0, result.size(), true); |
352 result.at_put_range(0, result.size(), true); |
343 } |
353 } |
344 return result; |
354 return result; |