< prev index next >
src/share/vm/prims/jvmtiImpl.cpp
Print this page
*** 285,300 ****
void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
((Method*)_method->*meth_act)(_bci);
// add/remove breakpoint to/from versions of the method that are EMCP.
Thread *thread = Thread::current();
! instanceKlassHandle ikh = instanceKlassHandle(thread, _method->method_holder());
Symbol* m_name = _method->name();
Symbol* m_signature = _method->signature();
// search previous versions if they exist
! for (InstanceKlass* pv_node = ikh->previous_versions();
pv_node != NULL;
pv_node = pv_node->previous_versions()) {
Array<Method*>* methods = pv_node->methods();
for (int i = methods->length() - 1; i >= 0; i--) {
--- 285,300 ----
void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
((Method*)_method->*meth_act)(_bci);
// add/remove breakpoint to/from versions of the method that are EMCP.
Thread *thread = Thread::current();
! InstanceKlass* ik = _method->method_holder();
Symbol* m_name = _method->name();
Symbol* m_signature = _method->signature();
// search previous versions if they exist
! for (InstanceKlass* pv_node = ik->previous_versions();
pv_node != NULL;
pv_node = pv_node->previous_versions()) {
Array<Method*>* methods = pv_node->methods();
for (int i = methods->length() - 1; i >= 0; i--) {
*** 694,707 ****
JavaThread* cur_thread = JavaThread::current();
HandleMark hm(cur_thread);
Handle obj(cur_thread, JNIHandles::resolve_external_guard(jobj));
NULL_CHECK(obj, (_result = JVMTI_ERROR_INVALID_OBJECT, false));
! KlassHandle ob_kh = KlassHandle(cur_thread, obj->klass());
! NULL_CHECK(ob_kh, (_result = JVMTI_ERROR_INVALID_OBJECT, false));
! if (!is_assignable(signature, ob_kh(), cur_thread)) {
_result = JVMTI_ERROR_TYPE_MISMATCH;
return false;
}
}
return true;
--- 694,707 ----
JavaThread* cur_thread = JavaThread::current();
HandleMark hm(cur_thread);
Handle obj(cur_thread, JNIHandles::resolve_external_guard(jobj));
NULL_CHECK(obj, (_result = JVMTI_ERROR_INVALID_OBJECT, false));
! Klass* ob_k = obj->klass();
! NULL_CHECK(ob_k, (_result = JVMTI_ERROR_INVALID_OBJECT, false));
! if (!is_assignable(signature, ob_k, cur_thread)) {
_result = JVMTI_ERROR_TYPE_MISMATCH;
return false;
}
}
return true;
< prev index next >