blob: 2ad564d23a49bfca6c378918337349ad020f889e [file] [log] [blame]
//===------------------------ Statistics.java -----------------------------===//
//
// The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
package org.j3.mmtk;
import org.vmmagic.pragma.*;
@Uninterruptible
public final class Statistics extends org.mmtk.vm.Statistics {
/**
* Returns the number of collections that have occurred.
*
* @return The number of collections that have occurred.
*/
@Uninterruptible
public native int getCollectionCount();
/**
* Read nanoTime (high resolution, monotonically increasing clock).
* Has same semantics as java.lang.System.nanoTime().
*/
public native long nanoTime();
/**
* Read a cycle counter (high resolution, non-monotonic clock).
* This method should be used with care as the cycle counters (especially on IA32 SMP machines)
* are not a reliably time source.
*/
public native long cycles();
/**
* Convert nanoseconds to milliseconds
*/
public double nanosToMillis(long c) {
return ((double)c)/1e6;
}
/**
* Convert nanoseconds to seconds
*/
public double nanosToSecs(long c) {
return ((double)c)/1e9;
}
/**
* Convert milliseconds to nanoseconds
*/
public long millisToNanos(double t) {
return (long)(t * 1e6);
}
/**
* Convert seconds to nanoseconds
*/
public long secsToNanos(double t) {
return (long)(t * 1e9);
}
/**
* Initialize performance events
*/
@Interruptible
public native void perfEventInit(String events);
/**
* Read a performance event
*/
public native void perfEventRead(int id, long[] values);
}