--- old/src/share/vm/runtime/perfData.hpp 2017-06-14 11:45:07.037092460 +0900 +++ new/src/share/vm/runtime/perfData.hpp 2017-06-14 11:45:06.952090756 +0900 @@ -916,22 +916,22 @@ public: inline PerfTraceTime(PerfLongCounter* timerp) : _timerp(timerp), _recursion_counter(NULL) { - if (!UsePerfData) return; + if (!UsePerfData || (_timerp == NULL)) return; _t.start(); } inline PerfTraceTime(PerfLongCounter* timerp, int* recursion_counter) : _timerp(timerp), _recursion_counter(recursion_counter) { - if (!UsePerfData || (_recursion_counter != NULL && - (*_recursion_counter)++ > 0)) return; + if (!UsePerfData || (_timerp == NULL) || + (_recursion_counter != NULL && (*_recursion_counter)++ > 0)) return; _t.start(); } - inline void suspend() { if (!UsePerfData) return; _t.stop(); } - inline void resume() { if (!UsePerfData) return; _t.start(); } + inline void suspend() { if (!UsePerfData || (_timerp == NULL)) return; _t.stop(); } + inline void resume() { if (!UsePerfData || (_timerp == NULL)) return; _t.start(); } inline ~PerfTraceTime() { - if (!UsePerfData || (_recursion_counter != NULL && - --(*_recursion_counter) > 0)) return; + if (!UsePerfData || (_timerp == NULL) || + (_recursion_counter != NULL && --(*_recursion_counter) > 0)) return; _t.stop(); _timerp->inc(_t.ticks()); } @@ -963,12 +963,12 @@ public: inline PerfTraceTimedEvent(PerfLongCounter* timerp, PerfLongCounter* eventp): PerfTraceTime(timerp), _eventp(eventp) { - if (!UsePerfData) return; + if (!UsePerfData || (timerp == NULL)) return; _eventp->inc(); } inline PerfTraceTimedEvent(PerfLongCounter* timerp, PerfLongCounter* eventp, int* recursion_counter): PerfTraceTime(timerp, recursion_counter), _eventp(eventp) { - if (!UsePerfData) return; + if (!UsePerfData || (timerp == NULL)) return; _eventp->inc(); } };