--- old/src/share/vm/runtime/sweeper.hpp 2013-10-11 15:44:37.537819593 +0200 +++ new/src/share/vm/runtime/sweeper.hpp 2013-10-11 15:44:37.309819602 +0200 @@ -53,12 +53,13 @@ // is full. class NMethodSweeper : public AllStatic { - static long _traversals; // Stack scan count, also sweep ID. - static nmethod* _current; // Current nmethod - static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache - static int _flushed_count; // Nof. nmethods flushed in current sweep - static int _zombified_count; // Nof. nmethods made zombie in current sweep - static int _marked_count; // Nof. nmethods marked for reclaim in current sweep + static long _traversals; // Stack scan count, also sweep ID. + static nmethod* _current_nmethod; // Current nmethod + static int _current_type; // Current CodeBlobType + static int _seen; // Nof. nmethod we have currently processed in current pass of CodeCache + static int _flushed_count; // Nof. nmethods flushed in current sweep + static int _zombified_count; // Nof. nmethods made zombie in current sweep + static int _marked_count; // Nof. nmethods marked for reclaim in current sweep static volatile int _invocations; // No. of invocations left until we are completed with this pass static volatile int _sweep_started; // Flag to control conc sweeper @@ -76,7 +77,7 @@ static jlong _peak_sweep_time; // Peak time for a full sweep static jlong _peak_sweep_fraction_time; // Peak time sweeping one fraction - static int process_nmethod(nmethod *nm); + static int process_nmethod(nmethod *nm, int code_blob_type); static void release_nmethod(nmethod* nm); static bool sweep_in_progress(); @@ -97,7 +98,7 @@ #ifdef ASSERT - static bool is_sweeping(nmethod* which) { return _current == which; } + static bool is_sweeping(nmethod* which) { return _current_nmethod == which; } // Keep track of sweeper activity in the ring buffer static void record_sweep(nmethod* nm, int line); static void report_events(int id, address entry);