Mercurial > hg > graal-compiler
diff graal/com.oracle.max.cri/src/com/oracle/max/cri/ri/RiProfilingInfo.java @ 4440:271220b49abc
profiling info fixes
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Fri, 20 Jan 2012 18:24:17 -0800 |
parents | f7251c729b31 |
children | 4e3aaf14cbc6 |
line wrap: on
line diff
--- a/graal/com.oracle.max.cri/src/com/oracle/max/cri/ri/RiProfilingInfo.java Thu Jan 19 16:29:35 2012 -0800 +++ b/graal/com.oracle.max.cri/src/com/oracle/max/cri/ri/RiProfilingInfo.java Fri Jan 20 18:24:17 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,20 +27,42 @@ * Represents profiling information for one specific method. */ public interface RiProfilingInfo { - // iterating the profiling information - boolean setBCI(int bci); - int currentBCI(); - boolean next(); - boolean isAtValidData(); + /** + * Returns an estimate of how often the branch at the given byte code was taken. + * @return The estimated probability, with 0.0 meaning never and 1.0 meaning always, or -1 if this information is not available. + */ + double getBranchTakenProbability(int bci); + + /** + * Returns an estimate of how often the switch cases are taken at the given BCI. + * @return An array of double values that contains the estimated probabilities, with 0.0 meaning never and 1.0 meaning always, + * or null if this information is not available. The default case is stored as the last entry. + */ + double[] getSwitchProbabilities(int bci); + + /** + * Returns all types that were encountered at the given BCI. + * @return An array containing all types that were encountered during profiling at the given BCI, or null if not available. + */ + RiResolvedType[] getTypes(int bci); - // invokevirtual/invokeinterface - RiResolvedType[] getTypes(); - double[] getTypeProbabilities(); + /** + * Returns an estimate of how often each individual type is encountered at the given BCI. + * @return An array of double values that contains the estimated probabilities, with 0.0 meaning never and 1.0 meaning always, + * or null if this information is not available. + */ + double[] getTypeProbabilities(int bci); - // branches - double getBranchTakenProbability(); - double[] getSwitchProbabilities(); + /** + * Returns true if the given BCI did throw an implicit exception (NullPointerException, ClassCastException, + * ArrayStoreException, or ArithmeticException) during profiling. + * @return true if any of the exceptions was encountered during profiling, false otherwise. + */ + boolean getImplicitExceptionSeen(int bci); - // exceptions - boolean hasExceptionOccurred(); + /** + * Returns an estimate how often the current BCI was executed. + * @return the estimated execution count or -1 if not available. + */ + int getExecutionCount(int bci); }