/*
 * Copyright (c) 2004, 2014, 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
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

option timestamp {
  column {
    header "^Timestamp"
    data (sun.os.hrt.ticks/sun.os.hrt.frequency)
    scale sec
    align right
    width 15
    format "0.0"
  }
}

option class {
  column {
    header "^Loaded^"	/* Number of classes loaded */
    data java.cls.loadedClasses
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^Bytes^"	/* Accumulated Size of classes loaded */
    data sun.cls.loadedBytes
    align right
    scale K
    width 7
    format "0.0"
  }
  column {
    header "^Unloaded^"	/* Number of classes unloaded */
    data java.cls.unloadedClasses
    align right
    width 5
    scale raw
    format "0"
  }
  column {
    header "^Bytes^"	/* Accumulated size of classes unloaded */
    data sun.cls.unloadedBytes
    align right
    scale K
    width 7
    format "0.0"
  }
  column {
    header "^Time^"	/* Accumulated time for class loading */
    data sun.cls.time/sun.os.hrt.frequency
    scale raw
    align right
    width 10
    format "0.00"
  }
}

/*
 * Modified for Zing VM GPGC - we do not have this implemented
 */
/* BEGIN COMMENT OUT
option compiler {
  column {
    header "^Compiled^"		/* Number of compilation tasks performed */
    data sun.ci.totalCompiles
    scale raw
    align right
    width 6
    format "0"
  }
  column {
    header "^Failed^"		/* Number of failed compilation tasks */
    data sun.ci.totalBailouts
    scale raw
    align right
    width 6
    format "0"
  }
  column {
    header "^Invalid^"		/* Number of invalidated compilation tasks */
    data sun.ci.totalInvalidates
    scale raw
    align right
    width 6
    format "0"
  }
  column {
    header "^Time^"		/* Time spent in compilation */
    data java.ci.totalTime/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.00"
  }
  column {
    header "^FailedType^"	/* Type of last failed compilation */
    data sun.ci.lastFailedType
    scale raw
    align right
    width 4
  }
  column {
    header "^FailedMethod"	/* Name of class and method for last failed compile */
    data sun.ci.lastFailedMethod
    scale raw
    align left
    width 1
  }
}
END COMMENT OUT */

/*
 * Modified for Zing VM GPGC
 */
option gc {
  column {
    header "^NGU^"	/* New Generation Used */
    data azul.gc.generation.0.space.0.used
    scale K
    align center
    width 10
    format "0.0"
  }
  column {
    header "^OGU^"	/* Old Generation Used */
    data azul.gc.generation.1.space.0.used
    scale K
    align center
    width 10
    format "0.0"
  }
  column {
    header "^PGU^"	/* Perm Generation Used */
    data azul.gc.generation.2.space.0.used
    scale K
    align center
    width 6
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    scale K
    align center
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^NGCT^"	/* New Generation Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^GCT^"	/* Total Garbage Collection Time */
    data (azul.gc.collector.0.time + azul.gc.collector.1.time)/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
}

/*
 * Modified for Zing VM GPGC (same as -gc option)
 */
option gpgc {
  column {
    header "^NGU^"	/* New Generation Used */
    data azul.gc.generation.0.space.0.used
    scale K
    align center
    width 10
    format "0.0"
  }
  column {
    header "^OGU^"	/* Old Generation Used */
    data azul.gc.generation.1.space.0.used
    scale K
    align center
    width 10
    format "0.0"
  }
  column {
    header "^PGU^"	/* Perm Generation Used */
    data azul.gc.generation.2.space.0.used
    scale K
    align center
    width 6
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    scale K
    align center
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^NGCT^"	/* New Generation Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^GCT^"	/* Total Garbage Collection Time */
    data (azul.gc.collector.0.time + azul.gc.collector.1.time)/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
}

/*
 * Modified for Zing VM GPGC - GPGC does not have the traditional HotSpot heap capacity
 */
/* BEGIN COMMENT OUT
option gccapacity {
  column {
    header "^NGCMN^"	/* New Generation Capacity - Minimum *
    data (azul.rt.memory.javaheap.max - azul.rt.memory.javaheap.max)
    scale K
    align right
    width 8
    format "0.0"
  }
  column {
    header "^NGCEstimate^"	/* New Generation Capacity - Current *
    data ((azul.rt.memory.javaheap.max - azul.gc.generation.1.space.0.used - azul.gc.generation.2.space.0.used) + azul.gc.generation.0.space.0.used)
    scale K
    align right
    width 8
    format "0.0"
  }
  column {
    header "^OGCMN^"	/* Old Generation Capacity - Minimum *
    data (azul.rt.memory.javaheap.max - azul.rt.memory.javaheap.max)
    scale K
    align right
    width 10
    format "0.0"
  }
  column {
    header "^OGCEstimate^"	/* Old Generation Capacity - Current *
    data ((azul.rt.memory.javaheap.max - azul.gc.generation.0.space.0.used - azul.gc.generation.2.space.0.used) + azul.gc.generation.1.space.0.used)
    scale K
    align right
    width 10
    format "0.0"
  }
  column {
    header "^PGCMN^"	/* Perm Generation Capacity - Minimum *
    data (azul.rt.memory.javaheap.max - azul.rt.memory.javaheap.max)
    scale K
    align right
    width 8
    format "0.0"
  }
  column {
    header "^PGCEstimate^"	/* Perm Generation Capacity - Current *
    data ((azul.rt.memory.javaheap.max - azul.gc.generation.0.space.0.used - azul.gc.generation.1.space.0.used) + azul.gc.generation.2.space.0.used)
    scale K
    align right
    width 8
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max *
    data azul.rt.memory.javaheap.max
    scale K
    align center
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections *
    data azul.gc.collector.0.invocations
    scale raw
    align right
    width 6
    format "0"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections *
    data azul.gc.collector.1.invocations
    align right
    width 5
    scale raw
    format "0"
  }
}
 END COMMENT OUT */

/*
 * Modified for Zing VM GPGC - we do not have this implemented
 */
/* BEGIN COMMENT OUT
option gccause {
  column {
    header "^S0^"	/* Survivor 0 Space - Percent Used */
    data (1-((sun.gc.generation.0.space.1.capacity - sun.gc.generation.0.space.1.used)/sun.gc.generation.0.space.1.capacity)) * 100
    scale raw
    align right
    width 6
    format "0.00"
  }
  column {
    header "^S1^"	/* Survivor 1 Space - Percent Used */
    data (1-((sun.gc.generation.0.space.2.capacity - sun.gc.generation.0.space.2.used)/sun.gc.generation.0.space.2.capacity)) * 100
    scale raw
    align right
    width 6
    format "0.00"
  }
  column {
    header "^E^"	/* Eden Space - Percent Used */
    data (1-((sun.gc.generation.0.space.0.capacity - sun.gc.generation.0.space.0.used)/sun.gc.generation.0.space.0.capacity)) * 100
    align right
    scale raw
    width 6
    format "0.00"
  }
  column {
    header "^O^"	/* Old Space - Percent Used */
    data (1-((sun.gc.generation.1.space.0.capacity - sun.gc.generation.1.space.0.used)/sun.gc.generation.1.space.0.capacity)) * 100
    align right
    scale raw
    width 6
    format "0.00"
  }
  column {
    header "^P^"	/* Perm Space - Percent Used */
    data (1-((sun.gc.generation.2.space.0.capacity - sun.gc.generation.2.space.0.used)/sun.gc.generation.2.space.0.capacity)) * 100
    align right
    width 6
    scale raw
    format "0.00"
  }
  column {
    header "^YGC^"	/* Young Generation Collections */
    data sun.gc.collector.0.invocations
    align right
    width 6
    format "0"
  }
  column {
    header "^YGCT^"	/* Young Generation Collection Time */
    data sun.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^FGC^"	/* Full Collections */
    data sun.gc.collector.1.invocations
    align right
    width 5
    scale raw
    format "0"
  }
  column {
    header "^FGCT^"	/* Full Collection Time */
    data sun.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^GCT^"	/* Total Garbage Collection Time */
    data (sun.gc.collector.0.time + sun.gc.collector.1.time)/sun.os.hrt.frequency
    align right
    width 8
    scale sec
    format "0.000"
  }
  column {
    header "^LGCC"	/* Last GC Cause */
    data sun.gc.lastCause
    align left
    width 20
    scale raw
  }
  column {
    header "^GCC"	/* Current GC Cause */
    data sun.gc.cause
    align left
    width 20
    scale raw
  }
}
END COMMENT OUT */

/*
 * Modified for Zing VM GPGC
 */
option gccause {
  column {
    header "^JavaHeapPercentUsed^"	/* Java Heap Space - Percent Used */
    data ((azul.gc.generation.0.space.0.used + azul.gc.generation.1.space.0.used + azul.gc.generation.2.space.0.used) / azul.rt.memory.javaheap.max) * 100
    align right
    scale raw
    width 6
    format "0.00"
  }
  column {
    header "^NGU^"	/* New Generation Used */
    data azul.gc.generation.0.space.0.used
    align center
    scale K
    width 10
    format "0.0"
  }
  column {
    header "^OGU^"	/* Old Generation Used */
    data azul.gc.generation.1.space.0.used
    align center
    scale K
    width 10
    format "0.0"
  }
  column {
    header "^PGU^"	/* Perm Generation Used */
    data azul.gc.generation.2.space.0.used
    align center
    scale K
    width 6
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    align center
    scale K
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^NGCT^"	/* New Generation Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^LGCC"	/* Last GC Cause */
    data sun.gc.lastCause
    align left
    width 20
    scale raw
  }
  column {
    header "^GCC"	/* Current GC Cause */
    data sun.gc.cause
    align left
    width 20
    scale raw
  }
}

/*
 * Modified for Zing VM GPGC
 */
option gcnew {
  column {
    header "^NGU^"	/* New Generation Used */
    data azul.gc.generation.0.space.0.used
    align center
    scale K
    width 10
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    align center
    scale K
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^NGCT^"	/* New Generation Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
}

/*
 * Modified for Zing VM GPGC
 */
option gcold {
  column {
    header "^PGU^"	/* Perm Generation Used */
    data azul.gc.generation.2.space.0.used
    align center
    scale K
    width 6
    format "0.0"
  }
  column {
    header "^OGU^"	/* Old Generation Used */
    data azul.gc.generation.1.space.0.used
    align center
    scale K
    width 10
    format "0.0"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    align center
    scale K
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^GCT^"	/* Total Garbage Collection Time */
    data (azul.gc.collector.0.time + azul.gc.collector.1.time)/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
}

/*
 * Modified for Zing VM GPGC
 */
option gcutil {
  column {
    header "^JavaHeapPercentUsed^"	/* Java Heap Space - Percent Used */
    data ((azul.gc.generation.0.space.0.used + azul.gc.generation.1.space.0.used + azul.gc.generation.2.space.0.used)/azul.rt.memory.javaheap.max) * 100
    /* The percent used is missing the use of the code cache and the "other." We need to add this to PerfData to do the correct calculation. */
    align right
    scale raw
    width 6
    format "0.00"
  }
  column {
    header "^JHMX^"	/* Java Heap Max */
    data azul.rt.memory.javaheap.max
    align center
    scale K
    width 13
    format "0.0"
  }
  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }
  column {
    header "^NGCT^"	/* New Generation Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }
  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
  column {
    header "^GCT^"	/* Total Garbage Collection Time */
    data (azul.gc.collector.0.time + azul.gc.collector.1.time)/sun.os.hrt.frequency
    align right
    scale sec
    width 8
    format "0.000"
  }
}

/*
 * Added stats for Zing VM GPGC
 */
option stats {
  column {
    header "^Loaded^"	/* Number of classes loaded */
    data java.cls.loadedClasses
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "^classInitTime^"
    data sun.cls.classInitTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^classLinkedTime^"
    data sun.cls.classLinkedTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^classVerifyTime^"
    data sun.cls.classVerifyTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^sun.cls.time^"
    data sun.cls.time/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^applicationTime^"
    data sun.rt.applicationTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^safepointSyncTime^"
    data sun.rt.safepointSyncTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^safepointTime^"
    data sun.rt.safepointTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^vmOperationTime^"
    data sun.threads.vmOperationTime/sun.os.hrt.frequency
    align right
    width 15
    scale sec
    format "0.000000"
  }

  column {
    header "^NGC^"	/* New Generation Collections */
    data azul.gc.collector.0.invocations
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "^NGCT^"	/* New Gen Garbage Collection Time */
    data azul.gc.collector.0.time/sun.os.hrt.frequency
    align right
    scale sec
    width 10
    format "0.000000"
  }

  column {
    header "^OGC^"	/* Old Generation Garbage Collections */
    data azul.gc.collector.1.invocations
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "^OGCT^"	/* Old Generation Garbage Collection Time */
    data azul.gc.collector.1.time/sun.os.hrt.frequency
    align right
    scale sec
    width 10
    format "0.000000"
  }
}

/*
 * Deopt Counters
 */
option deopt {
  column {
    header "CHA^"
    data azul.deopt.cha
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "UnreachedIf^"
    data azul.deopt.unreachedIf
    align right
    scale raw
    width 10
    format "0"
  }

  column {
    header "UnreachedCall^"
    data azul.deopt.unreachedCall
    align right
    scale raw
    width 10
    format "0"
  }

  column {
    header "Unloaded^"
    data (azul.deopt.unloaded + azul.deopt.unloadedArray)
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "Uninit^"
    data (azul.deopt.uninitialized + azul.deopt.staticInClinit)
    align right
    scale raw
    width 7
    format "0"
  }

  column {
    header "Unexpected^"
    data (azul.deopt.monomorphicUnexpectedClass + azul.deopt.bimorphicUnexpectedClass)
    align right
    scale raw
    width 11
    format "0"
  }

  column {
    header "Null^"
    data azul.deopt.null
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "StuckInLoop^"
    data azul.deopt.tier1StuckInLoop
    align right
    scale raw
    width 12
    format "0"
  }

  column {
    header "NotEntrant^"
    data azul.deopt.deoptimization
    align right
    scale raw
    width 11
    format "0"
  }

  column {
    header "Cast^"
    data (azul.deopt.cast + azul.deopt.nullCast + azul.deopt.arrayStore)
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "Range^"
    data (azul.deopt.range + azul.deopt.rangeWidened)
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "Throw^"
    data (azul.deopt.throw + azul.deopt.installAsync + azul.deopt.constructorThrow)
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "Div0^"
    data azul.deopt.div0
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "UncountedLoops^"
    data azul.deopt.loopSpeculationFailed
    align right
    scale raw
    width 5
    format "0"
  }

   column {
    header "NewGenOop^"
    data azul.deopt.newGenOopAssumption 
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "Jvmti^"
    data azul.deopt.jvmti
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "UnreachedJump^"
    data azul.deopt.unreachedJump
    align right
    scale raw
    width 10
    format "0"
  }

  column {
    header "Other^"
    data (azul.deopt.unhandled + azul.deopt.intrinsic + azul.deopt.tier1Volatile + azul.deopt.tooManyCompilations + azul.deopt.deoptALot)
    align right
    scale raw
    width 6
    format "0"
  }
}

/*
 * Normal stats for ProfileLogIn
 */
option profile {
  column {
    header "Loaders^"
    data azul.profile.classLoaders
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "IDedLoaders^"
    data azul.profile.identifiedClassLoaders
    align right
    scale raw
    width 12
    format "0"
  }

  column {
    header "Class^"
    data azul.profile.classes
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "SpecLoad^"
    data azul.profile.speculativeClassLoads
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "SpecInit^"
    data azul.profile.speculativeClassInitializations
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "Loaded^"
    data azul.profile.matchedClassLoads
    align right
    scale raw
    width 7
    format "0"
  }

  column {
    header "Inited^"
    data azul.profile.initializedClasses
    align right
    scale raw
    width 7
    format "0"
  }

  column {
    header "Developed^"
    data azul.profile.fullyDevelopedHierarchies
    align right
    scale raw
    width 10
    format "0"
  }

  column {
    header "Method^"
    data azul.profile.methods
    align right
    scale raw
    width 7
    format "0"
  }

  column {
    header "T1E^"
    data azul.profile.tier1EligibleMethods
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "T1C^"
    data azul.profile.tier1CompiledMethods
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "T2E^"
    data azul.profile.tier2EligibleMethods
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "T2C^"
    data azul.profile.tier2CompiledMethods
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "Profiled^"
    data azul.profile.profiledMethods
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "ProfUsed^"
    data azul.profile.profileAppliedMethods
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "Warn^"
    data (azul.profile.collidingClasses + azul.profile.failedSpeculativeClassLoads + azul.profile.unmatchedClassLoads + azul.profile.collidingClassLoads + azul.profile.overDevelopedHierarchies)
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "Error^"
    data (azul.profile.collidingClassLoaders + azul.profile.unresolvedClassLoaders + azul.profile.unresolvedClasses + azul.profile.failedSpeculativeClassInitializations + azul.profile.unresolvedMethods + azul.profile.collidingMethods)
    align right
    scale raw
    width 6
    format "0"
  }
}

/*
 * Errors stats for ProfileLogIn
 */
option profileerrors {
  column {
    header "Warn^"
    data (azul.profile.collidingClasses + azul.profile.failedSpeculativeClassLoads + azul.profile.unmatchedClassLoads + azul.profile.collidingClassLoads + azul.profile.overDevelopedHierarchies)
    align right
    scale raw
    width 5
    format "0"
  }

  column {
    header "ColClass^"
    data azul.profile.collidingClasses
    align right
    scale raw
    width 9
    format "0"
  }

  column {
    header "SpecLoadFail^"
    data azul.profile.failedSpeculativeClassLoads
    align right
    scale raw
    width 13
    format "0"
  }

  column {
    header "UnmatchLoad^"
    data azul.profile.unmatchedClassLoads
    align right
    scale raw
    width 12
    format "0"
  }

  column {
    header "RepLoad^"
    data azul.profile.collidingClassLoads
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "OverDeveloped^"
    data azul.profile.overDevelopedHierarchies
    align right
    scale raw
    width 14
    format "0"
  }

  column {
    header "Error^"
    data (azul.profile.collidingClassLoaders + azul.profile.unresolvedClassLoaders + azul.profile.unresolvedClasses + azul.profile.failedSpeculativeClassInitializations + azul.profile.unresolvedMethods + azul.profile.collidingMethods)
    align right
    scale raw
    width 6
    format "0"
  }

  column {
    header "ColLoaders^"
    data azul.profile.collidingClassLoaders
    align right
    scale raw
    width 11
    format "0"
  }

  column {
    header "UnresLoaders^"
    data azul.profile.unresolvedClassLoaders
    align right
    scale raw
    width 13
    format "0"
  }

  column {
    header "UnresClass^"
    data azul.profile.unresolvedClasses
    align right
    scale raw
    width 11
    format "0"
  }

  column {
    header "SpecInitFail^"
    data azul.profile.failedSpeculativeClassInitializations
    align right
    scale raw
    width 13
    format "0"
  }

  column {
    header "UnresMethod^"
    data azul.profile.unresolvedMethods
    align right
    scale raw
    width 12
    format "0"
  }

  column {
    header "ColMethod^"
    data azul.profile.collidingMethods
    align right
    scale raw
    width 10
    format "0"
  }
}

/*
 * Precompilation stats for ProfileLogIn
 */
option profileprecomp {
  column {
    header "PrecompTier1^"
    data azul.profile.tier1PrecompiledMethods
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "PrecompTargetTier1^"
    data azul.profile.tier1PrecompileTarget
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Tier1Eligible^"
    data azul.profile.tier1EligibleMethods
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "PrecompTier2^"
    data azul.profile.tier2PrecompiledMethods
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "PrecompTargetTier2^"
    data azul.profile.tier2PrecompileTarget
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Tier2Eligible^"
    data azul.profile.tier2EligibleMethods
    align right
    scale raw
    width 8
    format "0"
  }
}

/*
 * Object stashing stats
 */
option compilestashing {
  column {
    header "Lookup success^"
    data azul.compilestashing.lookupMatch
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Missing^"
    data azul.compilestashing.lookupMissing
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Mismatched^"
    data azul.compilestashing.lookupMismatched
    align right
    scale raw
    width 8
    format "0"
  }
  
  column {
    header "Lookup Excluded^"
    data azul.compilestashing.lookupExcluded
    align right
    scale raw
    width 8
    format "0"
  }
  column {
    header "Lookup Error^"
    data azul.compilestashing.lookupError
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Store succeeded^"
    data azul.compilestashing.storeSuccess
    align right
    scale raw
    width 8
    format "0"
  }

  column {
    header "Already In^"
    data azul.compilestashing.storeAlreadyPresent
    align right
    scale raw
    width 8
    format "0"
  }
  column {
    header "Too Large^"
    data azul.compilestashing.storeTooLargeToStash
    align right
    scale raw
    width 8
    format "0"
  }
  column {
    header "Cache Full^"
    data azul.compilestashing.storeCacheFull
    align right
    scale raw
    width 8
    format "0"
  }
  column {
    header "Store Excluded^"
    data azul.compilestashing.storeExcluded
    align right
    scale raw
    width 8
    format "0"
  }
  column {
    header "Store Error^"
    data azul.compilestashing.storeError
    align right
    scale raw
    width 8
    format "0"
  }
}

