1 /* |
1 /* |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2016, 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. |
23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "classfile/javaClasses.hpp" |
26 #include "classfile/javaClasses.hpp" |
27 #include "classfile/systemDictionary.hpp" |
27 #include "classfile/systemDictionary.hpp" |
|
28 #include "classfile/systemDictionaryShared.hpp" |
28 #include "classfile/verifier.hpp" |
29 #include "classfile/verifier.hpp" |
29 #include "classfile/vmSymbols.hpp" |
30 #include "classfile/vmSymbols.hpp" |
30 #include "compiler/compileBroker.hpp" |
31 #include "compiler/compileBroker.hpp" |
31 #include "gc_implementation/shared/markSweep.inline.hpp" |
32 #include "gc_implementation/shared/markSweep.inline.hpp" |
32 #include "gc_interface/collectedHeap.inline.hpp" |
33 #include "gc_interface/collectedHeap.inline.hpp" |
704 return true; |
705 return true; |
705 } |
706 } |
706 |
707 |
707 // also sets rewritten |
708 // also sets rewritten |
708 this_oop->rewrite_class(CHECK_false); |
709 this_oop->rewrite_class(CHECK_false); |
|
710 } else if (this_oop()->is_shared()) { |
|
711 ResourceMark rm(THREAD); |
|
712 char* message_buffer; // res-allocated by check_verification_dependencies |
|
713 Handle loader = this_oop()->class_loader(); |
|
714 Handle pd = this_oop()->protection_domain(); |
|
715 bool verified = SystemDictionaryShared::check_verification_dependencies(this_oop(), |
|
716 loader, pd, &message_buffer, THREAD); |
|
717 if (!verified) { |
|
718 THROW_MSG_(vmSymbols::java_lang_VerifyError(), message_buffer, false); |
|
719 } |
709 } |
720 } |
710 |
721 |
711 // relocate jsrs and link methods after they are all rewritten |
722 // relocate jsrs and link methods after they are all rewritten |
712 this_oop->link_methods(CHECK_false); |
723 this_oop->link_methods(CHECK_false); |
713 |
724 |