diff -r 54b3b351d6f9 -r 753cf9794df9 src/share/vm/memory/iterator.hpp --- a/src/share/vm/memory/iterator.hpp Wed Sep 23 23:56:15 2009 -0700 +++ b/src/share/vm/memory/iterator.hpp Wed Sep 23 23:57:44 2009 -0700 @@ -25,6 +25,7 @@ // The following classes are C++ `closures` for iterating over objects, roots and spaces class CodeBlob; +class nmethod; class ReferenceProcessor; class DataLayout; @@ -70,9 +71,6 @@ virtual const bool should_remember_mdo() const { return false; } virtual void remember_mdo(DataLayout* v) { /* do nothing */ } - // If "true", invoke on nmethods (when scanning compiled frames). - virtual const bool do_nmethods() const { return false; } - // The methods below control how object iterations invoking this closure // should be performed: @@ -190,7 +188,7 @@ class MarkingCodeBlobClosure : public CodeBlobClosure { public: // Called for each code blob, but at most once per unique blob. - virtual void do_newly_marked_nmethod(CodeBlob* cb) = 0; + virtual void do_newly_marked_nmethod(nmethod* nm) = 0; virtual void do_code_blob(CodeBlob* cb); // = { if (!nmethod(cb)->test_set_oops_do_mark()) do_newly_marked_nmethod(cb); } @@ -213,7 +211,7 @@ OopClosure* _cl; bool _do_marking; public: - virtual void do_newly_marked_nmethod(CodeBlob* cb); + virtual void do_newly_marked_nmethod(nmethod* cb); // = { cb->oops_do(_cl); } virtual void do_code_blob(CodeBlob* cb); // = { if (_do_marking) super::do_code_blob(cb); else cb->oops_do(_cl); }