Mercurial > hg > truffle
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; |