001 /* 002 * This file is part of the Jikes RVM project (http://jikesrvm.org). 003 * 004 * This file is licensed to You under the Eclipse Public License (EPL); 005 * You may not use this file except in compliance with the License. You 006 * may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/eclipse-1.0.php 009 * 010 * See the COPYRIGHT.txt file distributed with this work for information 011 * regarding copyright ownership. 012 */ 013 package org.mmtk.vm; 014 015 import org.vmmagic.pragma.Interruptible; 016 import org.vmmagic.pragma.Uninterruptible; 017 018 019 @Uninterruptible 020 public abstract class Statistics { 021 /** 022 * Read cycle counter 023 */ 024 public abstract long nanoTime(); 025 026 /** 027 * Convert nanoseconds to milliseconds 028 */ 029 public abstract double nanosToMillis(long c); 030 031 /** 032 * Convert nanoseconds to seconds 033 */ 034 public abstract double nanosToSecs(long c); 035 036 /** 037 * Convert milliseconds to nanoseconds 038 */ 039 public abstract long millisToNanos(double t); 040 041 /** 042 * Convert seconds to nanoseconds 043 */ 044 public abstract long secsToNanos(double t); 045 046 /** 047 * Read the cycle counter 048 */ 049 public abstract long cycles(); 050 051 /** 052 * Initialize performance events 053 */ 054 @Interruptible 055 public abstract void perfEventInit(String events); 056 057 /** 058 * Read a performance event value 059 */ 060 public abstract void perfEventRead(int counter, long[] values); 061 }