1 /* |
1 /* |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2014, 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. |
3178 public: |
3178 public: |
3179 virtual void do_oop(oop* p) { VerifyFieldClosure::do_oop_work(p); } |
3179 virtual void do_oop(oop* p) { VerifyFieldClosure::do_oop_work(p); } |
3180 virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); } |
3180 virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); } |
3181 }; |
3181 }; |
3182 |
3182 |
3183 void InstanceKlass::verify_on(outputStream* st, bool check_dictionary) { |
3183 void InstanceKlass::verify_on(outputStream* st) { |
3184 #ifndef PRODUCT |
3184 #ifndef PRODUCT |
3185 // Avoid redundant verifies, this really should be in product. |
3185 // Avoid redundant verifies, this really should be in product. |
3186 if (_verify_count == Universe::verify_count()) return; |
3186 if (_verify_count == Universe::verify_count()) return; |
3187 _verify_count = Universe::verify_count(); |
3187 _verify_count = Universe::verify_count(); |
3188 #endif |
3188 #endif |
3189 |
3189 |
3190 // Verify Klass |
3190 // Verify Klass |
3191 Klass::verify_on(st, check_dictionary); |
3191 Klass::verify_on(st); |
3192 |
3192 |
3193 // Verify that klass is present in SystemDictionary if not already |
3193 // Verify that klass is present in ClassLoaderData |
3194 // verifying the SystemDictionary. |
3194 guarantee(class_loader_data()->contains_klass(this), |
3195 if (is_loaded() && !is_anonymous() && check_dictionary) { |
3195 "this class isn't found in class loader data"); |
3196 Symbol* h_name = name(); |
|
3197 SystemDictionary::verify_obj_klass_present(h_name, class_loader_data()); |
|
3198 } |
|
3199 |
3196 |
3200 // Verify vtables |
3197 // Verify vtables |
3201 if (is_linked()) { |
3198 if (is_linked()) { |
3202 ResourceMark rm; |
3199 ResourceMark rm; |
3203 // $$$ This used to be done only for m/s collections. Doing it |
3200 // $$$ This used to be done only for m/s collections. Doing it |