46 void CodeBlobToOopClosure::do_nmethod(nmethod* nm) { 47 nm->oops_do(_cl); 48 if (_fix_relocations) { 49 nm->fix_oop_relocations(); 50 } 51 } 52 53 void CodeBlobToOopClosure::do_code_blob(CodeBlob* cb) { 54 nmethod* nm = cb->as_nmethod_or_null(); 55 if (nm != NULL) { 56 do_nmethod(nm); 57 } 58 } 59 60 void MarkingCodeBlobClosure::do_code_blob(CodeBlob* cb) { 61 nmethod* nm = cb->as_nmethod_or_null(); 62 if (nm != NULL && !nm->test_set_oops_do_mark()) { 63 do_nmethod(nm); 64 } 65 } 66 67 // Generate the *Klass::oop_oop_iterate functions for the base class 68 // of the oop closures. These versions use the virtual do_oop calls, 69 // instead of the devirtualized do_oop_nv version. 70 ALL_KLASS_OOP_OOP_ITERATE_DEFN(ExtendedOopClosure, _v) 71 72 // Generate the *Klass::oop_oop_iterate functions 73 // for the NoHeaderExtendedOopClosure helper class. 74 ALL_KLASS_OOP_OOP_ITERATE_DEFN(NoHeaderExtendedOopClosure, _nv) | 46 void CodeBlobToOopClosure::do_nmethod(nmethod* nm) { 47 nm->oops_do(_cl); 48 if (_fix_relocations) { 49 nm->fix_oop_relocations(); 50 } 51 } 52 53 void CodeBlobToOopClosure::do_code_blob(CodeBlob* cb) { 54 nmethod* nm = cb->as_nmethod_or_null(); 55 if (nm != NULL) { 56 do_nmethod(nm); 57 } 58 } 59 60 void MarkingCodeBlobClosure::do_code_blob(CodeBlob* cb) { 61 nmethod* nm = cb->as_nmethod_or_null(); 62 if (nm != NULL && !nm->test_set_oops_do_mark()) { 63 do_nmethod(nm); 64 } 65 } |