comparison src/share/vm/code/nmethod.cpp @ 20813:eb21f2944d7d

Process Graal oops in nmethod::do_unloading_parallel
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 08 Apr 2015 15:33:13 +0200
parents 7848fc12602b
children e13c65f874e5
comparison
equal deleted inserted replaced
20812:0d6563e4d1f5 20813:eb21f2944d7d
2090 // This set of the unloading_occurred flag is done before the 2090 // This set of the unloading_occurred flag is done before the
2091 // call to post_compiled_method_unload() so that the unloading 2091 // call to post_compiled_method_unload() so that the unloading
2092 // of this nmethod is reported. 2092 // of this nmethod is reported.
2093 unloading_occurred = true; 2093 unloading_occurred = true;
2094 } 2094 }
2095
2096 #ifdef GRAAL
2097 // Follow Graal method
2098 if (_graal_installed_code != NULL) {
2099 if (_graal_installed_code->is_a(HotSpotNmethod::klass()) && HotSpotNmethod::isDefault(_graal_installed_code)) {
2100 if (!is_alive->do_object_b(_graal_installed_code)) {
2101 _graal_installed_code = NULL;
2102 }
2103 } else {
2104 if (can_unload(is_alive, (oop*)&_graal_installed_code, unloading_occurred)) {
2105 return false;
2106 }
2107 }
2108 }
2109
2110 if (_speculation_log != NULL) {
2111 if (!is_alive->do_object_b(_speculation_log)) {
2112 _speculation_log = NULL;
2113 }
2114 }
2115 #endif
2095 2116
2096 // When class redefinition is used all metadata in the CodeCache has to be recorded, 2117 // When class redefinition is used all metadata in the CodeCache has to be recorded,
2097 // so that unused "previous versions" can be purged. Since walking the CodeCache can 2118 // so that unused "previous versions" can be purged. Since walking the CodeCache can
2098 // be expensive, the "mark on stack" is piggy-backed on this parallel unloading code. 2119 // be expensive, the "mark on stack" is piggy-backed on this parallel unloading code.
2099 bool mark_metadata_on_stack = a_class_was_redefined; 2120 bool mark_metadata_on_stack = a_class_was_redefined;