58 _method_blocks = NULL; |
58 _method_blocks = NULL; |
59 #ifdef COMPILER2 |
59 #ifdef COMPILER2 |
60 _flow = NULL; |
60 _flow = NULL; |
61 #endif // COMPILER2 |
61 #endif // COMPILER2 |
62 |
62 |
63 if (JvmtiExport::can_hotswap_or_post_breakpoint() && _is_compilable) { |
63 ciEnv *env = CURRENT_ENV; |
|
64 if (env->jvmti_can_hotswap_or_post_breakpoint() && _is_compilable) { |
64 // 6328518 check hotswap conditions under the right lock. |
65 // 6328518 check hotswap conditions under the right lock. |
65 MutexLocker locker(Compile_lock); |
66 MutexLocker locker(Compile_lock); |
66 if (Dependencies::check_evol_method(h_m()) != NULL) { |
67 if (Dependencies::check_evol_method(h_m()) != NULL) { |
67 _is_compilable = false; |
68 _is_compilable = false; |
68 } |
69 } |
82 if (!_can_be_statically_bound && h_m()->is_private()) |
83 if (!_can_be_statically_bound && h_m()->is_private()) |
83 _can_be_statically_bound = true; |
84 _can_be_statically_bound = true; |
84 if (_can_be_statically_bound && h_m()->is_abstract()) |
85 if (_can_be_statically_bound && h_m()->is_abstract()) |
85 _can_be_statically_bound = false; |
86 _can_be_statically_bound = false; |
86 |
87 |
87 ciEnv *env = CURRENT_ENV; |
|
88 // generating _signature may allow GC and therefore move m. |
88 // generating _signature may allow GC and therefore move m. |
89 // These fields are always filled in. |
89 // These fields are always filled in. |
90 _name = env->get_object(h_m()->name())->as_symbol(); |
90 _name = env->get_object(h_m()->name())->as_symbol(); |
91 _holder = env->get_object(h_m()->method_holder())->as_instance_klass(); |
91 _holder = env->get_object(h_m()->method_holder())->as_instance_klass(); |
92 ciSymbol* sig_symbol = env->get_object(h_m()->signature())->as_symbol(); |
92 ciSymbol* sig_symbol = env->get_object(h_m()->signature())->as_symbol(); |
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 MethodLivenessResult result = _liveness->get_liveness_at(bci); |
340 if (JvmtiExport::can_access_local_variables() || DeoptimizeALot || CompileTheWorld) { |
340 if (CURRENT_ENV->jvmti_can_access_local_variables() || DeoptimizeALot || CompileTheWorld) { |
341 // Keep all locals live for the user's edification and amusement. |
341 // Keep all locals live for the user's edification and amusement. |
342 result.at_put_range(0, result.size(), true); |
342 result.at_put_range(0, result.size(), true); |
343 } |
343 } |
344 return result; |
344 return result; |
345 } |
345 } |