25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "classfile/dictionary.hpp" |
26 #include "classfile/dictionary.hpp" |
27 #include "classfile/systemDictionary.hpp" |
27 #include "classfile/systemDictionary.hpp" |
28 #include "oops/oop.inline.hpp" |
28 #include "oops/oop.inline.hpp" |
29 #include "prims/jvmtiRedefineClassesTrace.hpp" |
29 #include "prims/jvmtiRedefineClassesTrace.hpp" |
30 #include "services/classLoadingService.hpp" |
|
31 #include "utilities/hashtable.inline.hpp" |
30 #include "utilities/hashtable.inline.hpp" |
32 |
31 |
33 |
32 |
34 DictionaryEntry* Dictionary::_current_class_entry = NULL; |
33 DictionaryEntry* Dictionary::_current_class_entry = NULL; |
35 int Dictionary::_current_class_index = 0; |
34 int Dictionary::_current_class_index = 0; |
154 // removed (will never be looked up again). Note that this is |
153 // removed (will never be looked up again). Note that this is |
155 // not the same as unloading the referred class. |
154 // not the same as unloading the referred class. |
156 if (k_def_class_loader_data == loader_data) { |
155 if (k_def_class_loader_data == loader_data) { |
157 // This is the defining entry, so the referred class is about |
156 // This is the defining entry, so the referred class is about |
158 // to be unloaded. |
157 // to be unloaded. |
159 // Notify the debugger and clean up the class. |
|
160 class_was_unloaded = true; |
158 class_was_unloaded = true; |
161 // notify the debugger |
|
162 if (JvmtiExport::should_post_class_unload()) { |
|
163 JvmtiExport::post_class_unload(ik); |
|
164 } |
|
165 |
|
166 // notify ClassLoadingService of class unload |
|
167 ClassLoadingService::notify_class_unloaded(ik); |
|
168 |
|
169 // Clean up C heap |
|
170 ik->release_C_heap_structures(); |
|
171 ik->constants()->release_C_heap_structures(); |
|
172 } |
159 } |
173 // Also remove this system dictionary entry. |
160 // Also remove this system dictionary entry. |
174 purge_entry = true; |
161 purge_entry = true; |
175 |
162 |
176 } else { |
163 } else { |