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.jikesrvm.mm.mmtk.gcspy; 014 015 import org.mmtk.utility.gcspy.Color; 016 import org.mmtk.utility.gcspy.GCspy; 017 import org.mmtk.utility.gcspy.StreamConstants; 018 import org.mmtk.utility.gcspy.drivers.AbstractDriver; 019 020 import org.jikesrvm.VM; 021 import static org.jikesrvm.runtime.SysCall.sysCall; 022 023 import org.vmmagic.pragma.*; 024 import org.vmmagic.unboxed.Address; 025 026 /** 027 * Set up a GCspy Stream with data type INT_TYPE. 028 */ 029 030 @Uninterruptible public class IntStream extends org.mmtk.vm.gcspy.IntStream { 031 032 /**************************************************************************** 033 * 034 * Initialization 035 */ 036 037 /** 038 * Construct a new GCspy stream of INT_TYPE. 039 * @param driver The driver that owns this Stream 040 * @param name The name of the stream (e.g. "Used space") 041 * @param minValue The minimum value for any item in this stream. 042 * Values less than this will be represented as "minValue-" 043 * @param maxValue The maximum value for any item in this stream. 044 * Values greater than this will be represented as "maxValue+" 045 * @param zeroValue The zero value for this stream 046 * @param defaultValue The default value for this stream 047 * @param stringPre A string to prefix values (e.g. "Used: ") 048 * @param stringPost A string to suffix values (e.g. " bytes.") 049 * @param presentation How a stream value is to be presented. 050 * @param paintStyle How the value is to be painted. 051 * @param indexMaxStream The index of the maximum stream if the presentation is *_VAR. 052 * @param colour The default colour for tiles of this stream 053 */ 054 public IntStream( 055 AbstractDriver driver, 056 String name, 057 int minValue, 058 int maxValue, 059 int zeroValue, 060 int defaultValue, 061 String stringPre, 062 String stringPost, 063 int presentation, 064 int paintStyle, 065 int indexMaxStream, 066 Color colour, 067 boolean summary) { 068 069 super(driver, name, 070 minValue, maxValue, zeroValue, defaultValue, 071 stringPre, stringPost, presentation, paintStyle, 072 indexMaxStream, colour, summary); 073 074 if (VM.BuildWithGCSpy) { 075 // We never delete these 076 Address tmpName = GCspy.util.getBytes(name); 077 Address tmpPre = GCspy.util.getBytes(stringPre); 078 Address tmpPost = GCspy.util.getBytes(stringPost); 079 080 sysCall.gcspyStreamInit(stream, streamId, StreamConstants.INT_TYPE, 081 tmpName, minValue, maxValue, zeroValue, defaultValue, 082 tmpPre, tmpPost, presentation, paintStyle, indexMaxStream, 083 colour.getRed(), colour.getGreen(), colour.getBlue()); 084 } 085 } 086 087 } 088