Path: blob/master/runtime/gc_verbose_old_events/VerboseEventCompletedConcurrentSweep.cpp
5985 views
1/*******************************************************************************2* Copyright (c) 1991, 2014 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#include "j9.h"24#include "j9cfg.h"2526#include "VerboseEventCompletedConcurrentSweep.hpp"2728#include "Debug.hpp"29#include "GCExtensions.hpp"30#include "VerboseManagerOld.hpp"3132/**33* Create an new instance of a MM_VerboseEventGlobalGCEnd event.34* @param event Pointer to a structure containing the data passed over the hookInterface35*/36MM_VerboseEvent *37MM_VerboseEventCompletedConcurrentSweep::newInstance(MM_CompletedConcurrentSweep *event, J9HookInterface** hookInterface)38{39MM_VerboseEventCompletedConcurrentSweep *eventObject;4041eventObject = (MM_VerboseEventCompletedConcurrentSweep *)MM_VerboseEvent::create(event->currentThread, sizeof(MM_VerboseEventCompletedConcurrentSweep));42if(NULL != eventObject) {43new(eventObject) MM_VerboseEventCompletedConcurrentSweep(event, hookInterface);44eventObject->initialize();45}46return eventObject;47}4849void50MM_VerboseEventCompletedConcurrentSweep::initialize(void)51{52OMRPORT_ACCESS_FROM_OMRVMTHREAD(_omrThread);53_timeInMilliSeconds = omrtime_current_time_millis();54}5556/**57* Populate events data fields.58* The event calls the event stream requesting the address of events it is interested in.59* When an address is returned it populates itself with the data.60*/61void62MM_VerboseEventCompletedConcurrentSweep::consumeEvents(void)63{64}6566/**67* Passes a format string and data to the output routine defined in the passed output agent.68* @param agent Pointer to an output agent.69*/70void71MM_VerboseEventCompletedConcurrentSweep::formattedOutput(MM_VerboseOutputAgent *agent)72{73char timestamp[32];74UDATA indentLevel = _manager->getIndentLevel();75OMRPORT_ACCESS_FROM_OMRVMTHREAD(_omrThread);7677switch((SweepCompletionReason)_reason) {7879case ABOUT_TO_GC:8081omrstr_ftime(timestamp, sizeof(timestamp), VERBOSEGC_DATE_FORMAT, _timeInMilliSeconds);82agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<con event=\"completed full sweep\" timestamp=\"%s\">", timestamp);8384_manager->incrementIndent();85indentLevel = _manager->getIndentLevel();8687agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<stats sweepbytes=\"%zu\" sweeptime=\"%llu.%03.3llu\" connectbytes=\"%zu\" connecttime=\"%llu.%03.3llu\" />",88_bytesSwept,89_timeElapsedSweep / 1000,90_timeElapsedSweep % 1000,91_bytesConnected,92_timeElapsedConnect / 1000,93_timeElapsedConnect % 1000);9495_manager->decrementIndent();96indentLevel = _manager->getIndentLevel();9798agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "</con>");99break;100case COMPACTION_REQUIRED:101agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<warning details=\"completed sweep to facilitate compaction\" />");102break;103case CONTRACTION_REQUIRED:104agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<warning details=\"completed sweep to facilitate contraction\" />");105break;106case EXPANSION_REQUIRED:107agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<warning details=\"completed sweep to facilitate expansion\" />");108break;109case LOA_RESIZE:110agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<warning details=\"completed sweep to facilitate LOA resize\" />");111break;112case SYSTEM_GC:113agent->formatAndOutput(static_cast<J9VMThread*>(_omrThread->_language_vmthread), indentLevel, "<warning details=\"completed sweep due to system gc\" />");114break;115default:116assume0(0);117}118}119120121