Path: blob/master/runtime/gc_verbose_old_events/VerboseEventConcurrentHalted.hpp
5985 views
1/*******************************************************************************2* Copyright (c) 1991, 2019 IBM Corp. and others3*4* This program and the accompanying materials are made available under5* the terms of the Eclipse Public License 2.0 which accompanies this6* distribution and is available at https://www.eclipse.org/legal/epl-2.0/7* or the Apache License, Version 2.0 which accompanies this distribution and8* is available at https://www.apache.org/licenses/LICENSE-2.0.9*10* This Source Code may also be made available under the following11* Secondary Licenses when the conditions for such availability set12* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU13* General Public License, version 2 with the GNU Classpath14* Exception [1] and GNU General Public License, version 2 with the15* OpenJDK Assembly Exception [2].16*17* [1] https://www.gnu.org/software/classpath/license.html18* [2] http://openjdk.java.net/legal/assembly-exception.html19*20* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception21*******************************************************************************/2223#if !defined(EVENT_CON_HALTED_HPP_)24#define EVENT_CON_HALTED_HPP_2526#include "j9.h"27#include "j9cfg.h"28#include "mmhook.h"2930#include "VerboseEvent.hpp"3132/**33* Stores the data relating to an halted concurrent collection.34* @ingroup GC_verbose_events35*/36class MM_VerboseEventConcurrentHalted : public MM_VerboseEvent37{38private:39/* Passed Data */40UDATA _executionMode; /**< the concurrent execution mode at the time of the halt event */41UDATA _traceTarget; /**< the targetted number of bytes to be concurrently traced */42UDATA _tracedTotal; /**< the number of bytes concurrently traced */43UDATA _tracedByMutators; /**< the number of bytes traced by mutators */44UDATA _tracedByHelpers; /**< the number of bytes traced by helper threads */45UDATA _cardsCleaned; /**< the number of cards cleaned */46UDATA _cardCleaningThreshold; /**< the number of free bytes at which we wish to start the card cleaning phase */47UDATA _workStackOverflowOccured; /**< flag to indicate if workstack overflow has occured */48UDATA _workStackOverflowCount; /**< the number of times concurrent work stacks have overflowed */49UDATA _isCardCleaningComplete;50UDATA _scanClassesMode;51UDATA _isTracingExhausted;5253public:5455const char *getConcurrentStatusAsString(UDATA mode);56const char *getConcurrentStateAsString(UDATA isCardCleaningComplete, UDATA scanClassesMode, UDATA isTracingExhausted);5758static MM_VerboseEvent *newInstance(MM_ConcurrentHaltedEvent *event, J9HookInterface** hookInterface);5960virtual void consumeEvents();61virtual void formattedOutput(MM_VerboseOutputAgent *agent);6263MMINLINE virtual bool definesOutputRoutine() { return true; };64MMINLINE virtual bool endsEventChain() { return false; };6566MM_VerboseEventConcurrentHalted(MM_ConcurrentHaltedEvent *event, J9HookInterface** hookInterface) :67MM_VerboseEvent(event->currentThread, event->timestamp, event->eventid, hookInterface),68_executionMode(event->executionMode),69_traceTarget(event->traceTarget),70_tracedTotal(event->tracedTotal),71_tracedByMutators(event->tracedByMutators),72_tracedByHelpers(event->tracedByHelpers),73_cardsCleaned(event->cardsCleaned),74_cardCleaningThreshold(event->cardCleaningThreshold),75_workStackOverflowOccured(event->workStackOverflowOccured),76_workStackOverflowCount(event->workStackOverflowCount),77_isCardCleaningComplete(event->isCardCleaningComplete),78_scanClassesMode(event->scanClassesMode),79_isTracingExhausted(event->isTracingExhausted)80{};81};8283#endif /* EVENT_CON_HALTED_HPP_ */848586