comparison src/share/vm/prims/jvmtiRedefineClasses.cpp @ 22885:367427923e39

8042796: jvmtiRedefineClasses.cpp: guarantee(false) failed: OLD and/or OBSOLETE method(s) found Summary: Relax the guaranty for deleted methods Reviewed-by: dcubed, coleenp
author sspitsyn
date Tue, 17 Mar 2015 01:56:32 -0700
parents b12a2a9b05ca
children fdde6a70ea85
comparison
equal deleted inserted replaced
22884:ceaf8db28d68 22885:367427923e39
1 /* 1 /*
2 * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
3573 Method* old_method = _deleted_methods[i]; 3573 Method* old_method = _deleted_methods[i];
3574 3574
3575 assert(!old_method->has_vtable_index(), 3575 assert(!old_method->has_vtable_index(),
3576 "cannot delete methods with vtable entries");; 3576 "cannot delete methods with vtable entries");;
3577 3577
3578 // Mark all deleted methods as old and obsolete 3578 // Mark all deleted methods as old, obsolete and deleted
3579 old_method->set_is_deleted();
3579 old_method->set_is_old(); 3580 old_method->set_is_old();
3580 old_method->set_is_obsolete(); 3581 old_method->set_is_obsolete();
3581 ++obsolete_count; 3582 ++obsolete_count;
3582 // With tracing we try not to "yack" too much. The position of 3583 // With tracing we try not to "yack" too much. The position of
3583 // this trace assumes there are fewer obsolete methods than 3584 // this trace assumes there are fewer obsolete methods than
4162 ik->itable()->dump_itable(); 4163 ik->itable()->dump_itable();
4163 } 4164 }
4164 no_old_methods = false; 4165 no_old_methods = false;
4165 } 4166 }
4166 4167
4167 // the constant pool cache should never contain old or obsolete methods 4168 // the constant pool cache should never contain non-deleted old or obsolete methods
4168 if (ik->constants() != NULL && 4169 if (ik->constants() != NULL &&
4169 ik->constants()->cache() != NULL && 4170 ik->constants()->cache() != NULL &&
4170 !ik->constants()->cache()->check_no_old_or_obsolete_entries()) { 4171 !ik->constants()->cache()->check_no_old_or_obsolete_entries()) {
4171 if (RC_TRACE_ENABLED(0x00004000)) { 4172 if (RC_TRACE_ENABLED(0x00004000)) {
4172 RC_TRACE_WITH_THREAD(0x00004000, _thread, 4173 RC_TRACE_WITH_THREAD(0x00004000, _thread,