diff options
Diffstat (limited to 'tools/preload/Operation.java')
-rw-r--r-- | tools/preload/Operation.java | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/tools/preload/Operation.java b/tools/preload/Operation.java deleted file mode 100644 index 4f1938e..0000000 --- a/tools/preload/Operation.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import java.util.List; -import java.util.ArrayList; -import java.io.Serializable; - -/** - * An operation with a duration. Could represent a class load or initialization. - */ -class Operation implements Serializable { - - private static final long serialVersionUID = 0; - - /** - * Type of operation. - */ - enum Type { - LOAD, INIT - } - - /** Process this operation occurred in. */ - final Proc process; - - /** Start time for this operation. */ - final long startTimeNanos; - - /** Index of this operation relative to its process. */ - final int index; - - /** Type of operation. */ - final Type type; - - /** End time for this operation. */ - long endTimeNanos = -1; - - /** The class that this operation loaded or initialized. */ - final LoadedClass loadedClass; - - /** Other operations that occurred during this one. */ - final List<Operation> subops = new ArrayList<Operation>(); - - /** Constructs a new operation. */ - Operation(Proc process, LoadedClass loadedClass, long startTimeNanos, - int index, Type type) { - this.process = process; - this.loadedClass = loadedClass; - this.startTimeNanos = startTimeNanos; - this.index = index; - this.type = type; - } - - /** - * Returns how long this class initialization and all the nested class - * initializations took. - */ - private long inclusiveTimeNanos() { - if (endTimeNanos == -1) { - throw new IllegalStateException("End time hasn't been set yet: " - + loadedClass.name); - } - - return endTimeNanos - startTimeNanos; - } - - /** - * Returns how long this class initialization took. - */ - int exclusiveTimeMicros() { - long exclusive = inclusiveTimeNanos(); - - for (Operation child : subops) { - exclusive -= child.inclusiveTimeNanos(); - } - - if (exclusive < 0) { - throw new AssertionError(loadedClass.name); - } - - return nanosToMicros(exclusive); - } - - /** Gets the median time that this operation took across all processes. */ - int medianExclusiveTimeMicros() { - switch (type) { - case LOAD: return loadedClass.medianLoadTimeMicros(); - case INIT: return loadedClass.medianInitTimeMicros(); - default: throw new AssertionError(); - } - } - - /** - * Converts nanoseconds to microseconds. - * - * @throws RuntimeException if overflow occurs - */ - private static int nanosToMicros(long nanos) { - long micros = nanos / 1000; - int microsInt = (int) micros; - if (microsInt != micros) { - throw new RuntimeException("Integer overflow: " + nanos); - } - return microsInt; - } - - /** - * Primarily for debugger support - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(type.toString()); - sb.append(' '); - sb.append(loadedClass.toString()); - if (subops.size() > 0) { - sb.append(" ("); - sb.append(subops.size()); - sb.append(" sub ops)"); - } - return sb.toString(); - } - -} |