/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Common Public License (CPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/cpl1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
package org.jikesrvm.adaptive.measurements.organizers;
import org.jikesrvm.adaptive.measurements.VM_RuntimeMeasurements;
import org.jikesrvm.adaptive.measurements.listeners.VM_YieldCounterListener;
/**
* An organizer that periodically decays runtime counters
*
**/
public final class VM_DecayOrganizer extends VM_Organizer {
/**
* @param listener the associated listener
*/
public VM_DecayOrganizer(VM_YieldCounterListener listener) {
this.listener = listener;
listener.setOrganizer(this);
makeDaemon(true);
}
/**
* Initialization: install and activate our listener.
*/
@Override
public void initialize() {
VM_RuntimeMeasurements.installTimerNullListener((VM_YieldCounterListener) listener);
}
/**
* Method that is called when the sampling threshold is reached
* We decay the decayable objects and activate the listener again.
*/
void thresholdReached() {
VM_RuntimeMeasurements.decayDecayableObjects();
}
}