+diff -Nu mpegaudio1/Context.java mpegaudio/Context.java
+--- mpegaudio1/Context.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/Context.java Tue Nov 26 11:35:40 2002
+@@ -0,0 +1,444 @@
++/*
++ * @(#)Context.java 1.31 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.harness;
++
++/**
++ * This class is used to define the context for the execution of the
++ * benchmark. This container class has the parameters which can hold
++ * the benchmark run specific parameters like the run time, speed,
++ * files opened, number of cached_files, SpecBasePath, console window
++ * for displaying the trace
++ */
++
++
++public final class Context{
++
++/**
++ * SpecBasePath is used to define the base directory of the specJava
++ * @see java.lang.String
++ */
++ private static String SpecBasePath = "";
++
++/**
++ * NetworkAccess flag is used to define whether the benchmark uses
++ * the network or not
++ */
++ static boolean NetworkAccess = false;
++
++/**
++ * BasePath
++ * @see java.lang.String
++ */
++ static String BasePath = "";
++
++/**
++ * speed is used to define the benchmark run length. The benchmarks
++ * can be run at 1%, 10% and 100% of their full length of execution.
++ * Some times the % variation is reflected by just altering the loop
++ * count in the benchmark (ie repeatedly executing the same benchmark)
++ */
++ static int speed = 100;
++
++/**
++ * CachedInput is flag used to indicate, whether the classes have to
++ * be cached or not. When the benchmark is run by the harness. The
++ * classes are fetched over the net during the first run. The execution
++ * time in this case includes the network load time. Depending on the
++ * user selection this flag will be toggled and used to cache the
++ * classes loaded first time. The second run uses these cached
++ * classes if flag is turned on.
++ */
++ static boolean CachedInput = true;
++
++/**
++ * IOtime is gives the cumilative io time of the all the io calls in
++ * in the execution of the benchmark. The refference time is taken
++ * before entering the io routine and the refference time is taken at
++ * the time of exiting from the routine. The difference between them
++ * gives the time sepent in that routine. All such times are
++ * accumilated to give the overall io time in the benchmark execution.
++ * see @java.lang.System#getSystemTime
++ */
++ static boolean batch = false;
++
++/**
++ * This flag is used to turn on/off the graphicsMode. Some of the tests
++ * have the graphics in them. The graphics are conditionally enabled or
++ * disabled depending on the final version of SpecJava
++ */
++ static boolean graphicsMode = false;
++
++/**
++ * The parameter is used to for storing the IOtime of the current benchmark
++ * under execution.
++ */
++ static long IOtime = 0;
++
++/**
++ * num_files_open is an integer variable to hold the number of files
++ * opened during the benchmark run.
++ */
++ static int num_files_open = 0;
++
++/**
++ * cached_data is an integer variable to hold the number of bytes of
++ * data that is cached. This can be more than zero for the first run
++ * but this has to be zero for the subsequent runs.
++ */
++ static int cached_data = 0;
++
++/**
++ * num_cached_files is an integer variable to hold the number of files
++ * cached during the run of the benchmark.
++ */
++ static int num_cached_files = 0;
++
++/**
++ * userPropFile is the string used to hold the user profile file name
++ * The user profile file has the user specific data, which can also be
++ * modified by using the setup key. The Setup parameters are initialized
++ * with the data from the user profile file
++ */
++ static String userPropFile;
++
++/**
++ * verify flag is used to turn on/off the verification process of benchmark
++ * runs.
++ */
++ static boolean verify = true;
++
++/**
++ * commandLineMode is a flag that holds the value which indicate whether the
++ * benchmark is running in command line mode or as an applet.
++ */
++ static boolean commandLineMode = false;
++
++/**
++ * window is the ConsoleWindow object type where the trace of the
++ * benchmark execution is displayed.
++ * @see spec.harness.ConsoleWindow
++ */
++
++/**
++ * out is the PrintStream into which the trace messages will be written.
++ * This is assigned to the System.output stream by default
++ */
++ public static java.io.PrintStream out = System.out;
++
++/**
++ * This function returns the integer value given the String form
++ * of it. In case of any number format exception, the function returns
++ * default value.
++ * @param s String value passed
++ * @param deft the default value to be returned.
++ */
++ public static int getValue(String s, int deft) {
++
++ try {
++ return Integer.parseInt(s, 10);
++ } catch(NumberFormatException x) {}
++
++ return deft;
++ }
++
++/**
++ * This function creates the new Console window and the print stream
++ * @see spec.harness.ConsoleWindow
++ */
++ public static void setupConsoleWindow(){
++ }
++
++/**
++ * This function set the SpecBasePath to the string value passed with
++ * some data stripped.
++ * @param basePath The URL of the file
++ */
++ public static void setSpecBasePath(String basepath){
++ if (basepath.indexOf("file:" , 0) == 0){
++ SpecBasePath = basepath.substring(5);
++ }
++ else{
++ SpecBasePath = basepath;
++ }
++
++ if (SpecBasePath.indexOf("http:" , 0) == 0){
++ NetworkAccess = true;
++ } else {
++ while (SpecBasePath.charAt(0) == '/' && SpecBasePath.charAt(1) == '/') {
++ SpecBasePath = SpecBasePath.substring(1);
++ }
++ }
++ }
++
++/**
++ returns the specbase path
++ */
++ public static String getSpecBasePath(){
++ return SpecBasePath;
++ }
++
++/**
++ * Increments the the cached_data parameter by the integer passed.
++ * @param num increment value
++ */
++ public static void addCachedDataSize(int num){
++ cached_data += num;
++ }
++
++/**
++ * gets the cached data size.
++ * @return The cached_data value
++ */
++ public static int getCachedDataSize(){
++ return cached_data;
++ }
++
++/**
++ * Increments the the num_cached_files parameter by 1.
++ */
++ public static void IncrementNumCachedFiles(){
++ num_cached_files++;
++ }
++
++/**
++ * gets the numbef of cached files.
++ * @return The num_cached_files value
++ */
++ public static int getNumCachedFiles(){
++ return num_cached_files;
++ }
++
++/**
++ * Increments the number of Files open parameter. The number of files
++ * open parameter is used for debugging purposes to findout whether the
++ * finalizers are called or not
++ */
++ public static void IncrementNumOpenFiles(){
++ num_files_open++;
++ }
++
++/**
++ Decrements the number of Files open parameter
++ */
++ public static void DecrementNumOpenFiles(){
++ num_files_open--;
++ }
++
++/**
++ returns the number of files open
++ */
++ public static int getNumOpenFiles(){
++ return num_files_open;
++ }
++
++/**
++ * sets the benchmark relative path. For example if SpecBasepath is
++ * /var/htdocs/v11/spec, The relative benchmark path path for
++ * _201_compress is benchmarks/_201_compress. This function adds these
++ * two strings and forms the BasePath
++ * BasePath = /var/htdocs/v11/spec + benchmarks/_201_compress
++ * @param rpath Relative path of the benchmark
++ */
++ public static void setBenchmarkRelPath(String rpath){
++ BasePath = SpecBasePath + rpath;
++ }
++
++
++/**
++ * This function changes the basepath to point to the input directory
++ * of the benchmark. this function just concatinates the "/input"
++ * to the existing basepath if it is not added already.
++ */
++ public static void cdInput(){
++ if( !BasePath.endsWith( "input/" )) {
++ BasePath = BasePath + "input/" ;
++ }
++ }
++
++/**
++ * Sets the network access flag
++ * @param flag Flag indicating the network access
++ */
++ public static void setNetworkAccess(boolean flag){
++
++ NetworkAccess = flag;
++ }
++
++/**
++ Returns the spec base path. This function is handly in loading the files
++ from the relative directories.
++ */
++ public static String getBasePath(){
++
++ return BasePath;
++ }
++
++/**
++ Indicates whether SpecJVMClient is running as an applet or application
++ */
++ public static boolean isNetworkAccess(){
++
++ return NetworkAccess;
++
++ }
++
++/**
++ * Sets the speed of execution to the value passed. Depending on the
++ * user's selection, the speed of execution is set as 1% 10% or 100%
++ * @param n Speed selected by the user
++ */
++ public static void setSpeed( int n ) {
++ speed = n;
++ }
++
++/**
++ Returns the speed of the benchmark.
++ */
++ public static int getSpeed() {
++ return speed;
++ }
++
++/**
++ Sets the CachedInput flag. The data is read from the Cache during the second
++ run if this flag is set.\7f
++ */
++ public static void setCachedInputFlag( boolean cif ){
++ CachedInput = cif;
++ }
++
++/**
++ Sets the batch flag
++ @param b boolean value for the batch flag
++ */
++ public static void setBatch( boolean b ){
++ batch = b;
++ }
++
++/**
++ Returns whether SpecJVMClient is running in batch mode
++ */
++ public static boolean isBatch(){
++ return batch;
++ }
++
++/**
++ Sets the graphics mode. Normally SepcJVM client runs with graphics disabled.
++ This flag is for future extensions and debugging
++ */
++ public static void setGraphicsMode (boolean mode){
++ graphicsMode = mode;
++ }
++
++/**
++ Returns the graphic mode flag value
++ */
++ public static boolean getGraphicsMode(){
++ return graphicsMode;
++ }
++
++/**
++ Sets the user properties file. These properties are stored in the mail sent at
++ the end of the test
++ @param s Properties file name
++ */
++ public static void setUserPropFile( String s){
++ userPropFile = s;
++ }
++
++/**
++ Returns the properties file name
++ */
++ public static String getUserPropFile(){
++ return userPropFile;
++ }
++
++/**
++ Returns the cached input flag
++ */
++ public static boolean isCachedInput(){
++ return CachedInput;
++ }
++
++/**
++ Clears the IOtiming. This is normally done before starting a benchmark
++ */
++ public static void clearIOtime(){
++ IOtime = 0;
++ }
++
++/**
++ Increments the IOTime by the value provided
++ @param time Incremental value
++ */
++ public static void addIOtime(long time){
++ IOtime = IOtime + time;
++ }
++
++/**
++ Returns the IO time
++ */
++ public static long getIOtime(){
++ return IOtime;
++ }
++
++ /**
++ * Set commandLineMode flag
++ */
++ public static void setCommandLineMode(boolean value) {
++ commandLineMode = value;
++ }
++
++
++ /**
++ * Get commandLineMode flag
++ */
++ public static boolean getCommandLineMode() {
++ return commandLineMode;
++ }
++
++
++ /**
++ * Set verify flag
++ */
++ public static void setVerify(boolean value) {
++ verify = value;
++ }
++
++
++ /**
++ * Get verify flag
++ */
++ public static boolean getVerify() {
++ return verify;
++ }
++
++
++ /**
++ * Start output window
++ */
++ public static void startOutputWindow() {
++ }
++
++
++ /**
++ * Stop output window
++ */
++ public static void stopOutputWindow() {
++ }
++
++ /**
++ * Output to console window
++ */
++ public static void appendWindow(String s) {
++ System.out.print(s);
++ }
++}
++
+diff -Nu mpegaudio1/File.java mpegaudio/File.java
+--- mpegaudio1/File.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/File.java Tue Nov 26 11:02:12 2002
+@@ -0,0 +1,356 @@
++/*
++ * @(#)File.java 1.5 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++
++/**
++ This class extends the java.io.File and provides some extra functionality.
++ File object maintains a static table of files called the Table of existing
++ files. The files listed in the TableOfExisting files are loaded from the
++ local disk. All the other files are loaded over the network.
++*/
++public class File extends java.io.File{
++
++/**
++ Variable representing the file name
++ */
++
++ String filename;
++
++/**
++ Table to hold the ListOfExisting files
++ */
++ private static TableOfExistingFiles tef = new TableOfExistingFiles();
++
++/**
++ Constructor.
++ @param Path of the file (includes the file name also)
++ */
++ public File(String path){
++
++ super(path);
++
++ //System.out.println("Inside constructor File(" + path + ")");
++
++ filename = path;
++
++ }
++
++/**
++ Overloaded constructor which takes the path and the files name to load the
++ file
++ @param path Directory of the file
++ @param name file name
++ */
++ public File(String path , String name){
++
++ super(path , name);
++
++ //System.out.println("Inside constructor File(" + path + " , " + name + ")");
++
++ filename = path + name;
++
++ }
++
++/**
++ Overloaded constructor which takes the directory in the File object format
++ and a name of the file.
++ @param dir Directory of the file in the File object format
++ @param name file name
++ */
++ public File(File dir , String name){
++
++ super(dir , name);
++
++ //System.out.println("Inside constructor File(dir, name) , dir.getName = " + dir.getName());
++
++ filename = dir.getPath() + name;
++
++ }
++
++/**
++ returns the name of the file
++ @return name of file
++ */
++ public String getName(){
++
++ String returnvalue = super.getName();
++
++ //System.out.println("Inside File.getName() , \nfilename = " + filename + "\nreturnvalue = " +returnvalue);
++
++
++ return returnvalue;
++
++ }
++
++/**
++ returns the path of the file
++ */
++ public String getPath(){
++
++ String returnvalue = super.getPath();
++
++ //System.out.println("Inside File.getPath() , filename = " + filename + " returnvalue = " +returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ returns tha absolutePath of the file Dir + name
++ */
++ public String getAbsolutePath(){
++
++ String returnvalue = super.getAbsolutePath();
++
++ //System.out.println("Inside File.getAbsolutePath() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ returns the Parent directory name
++ */
++
++ public String getParent(){
++
++ String returnvalue = super.getParent();
++
++ //String returnvalue = null;
++
++ //System.out.println("Inside File.getParent() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Checks whether the given file name exists or not
++ */
++ public boolean exists(){
++
++ //boolean returnvalue = super.exists();
++
++ boolean returnvalue = tef.exists( filename.replace( '\\', '/' ) );
++
++ //System.out.println("Inside File.exists() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Checks whether the given file is writablle or not
++ */
++ public boolean canWrite(){
++
++ boolean returnvalue = super.canWrite();
++
++ //System.out.println("Inside File.canWrite() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Checks whether the given file is readable
++ */
++ public boolean canRead(){
++
++ boolean returnvalue = super.canRead();
++
++ //System.out.println("Inside File.canRead() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Checks whether the given file name is a file or directory
++ The functionality is modified to return whether the file name is classes.zip
++ or not
++ */
++ public boolean isFile(){
++
++ //boolean returnvalue = super.isFile();
++
++ boolean returnvalue = filename.endsWith("classes.zip");
++
++ //System.out.println("Inside File.isFile() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Checks whether the given file name is directory or not
++ */
++ public boolean isDirectory(){
++
++ boolean returnvalue = super.isDirectory();
++
++ //System.out.println("Inside File.isDirectory() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Returns the date of last modification
++ */
++ public long lastModified(){
++
++ long returnvalue = super.lastModified();
++
++ //System.out.println("Inside File.lastModified() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Returns the length of the file
++ */
++ public long length(){
++
++ long returnvalue = super.length();
++
++ //System.out.println("Inside File.length() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Creates a new directory
++ */
++ public boolean mkdir(){
++
++ boolean returnvalue = super.mkdir();
++
++ //System.out.println("Inside File.mkdir() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Renames the file
++ */
++ public boolean renameTo(File dest){
++
++ boolean returnvalue = super.renameTo(dest);
++
++ //System.out.println("Inside File.renameTo() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Creates a directory whose pathname is specified by this File object,
++ including any necessary parent directories.
++ */
++ public boolean mkdirs() {
++
++ boolean returnvalue = super.mkdirs();
++
++ //System.out.println("Inside File.mkdirs() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Returns a list of the files in the directory specified by this File object
++*/
++ public String[] list(){
++
++ String[] returnvalue = super.list();
++
++ //System.out.println("Inside File.list() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Returns a list of the files in the directory specified by this File that
++ satisfy the specified filter.
++*/
++ public String[] list(java.io.FilenameFilter filter){
++
++ String[] returnvalue = super.list(filter);
++
++ //System.out.println("Inside File.list(filter) , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Deletes the file specified by this object.
++ */
++ public boolean delete(){
++
++ boolean returnvalue = super.delete();
++
++ //System.out.println("Inside File.delete() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Computes a hashcode for the file.
++ */
++ public int hashCode(){
++
++ int returnvalue = super.hashCode();
++
++ //System.out.println("Inside File.hashcode() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++/**
++ Compares this object against the specified object.
++ */
++ public boolean equals(Object obj){
++
++ boolean returnvalue = super.equals(obj);
++
++ //System.out.println("Inside File.equals() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++ }
++
++/**
++ Returns a string representation of this object.
++*/
++ public String toString(){
++
++ String returnvalue = super.toString();
++
++ //System.out.println("Inside File.toString() , filename = " + filename + " returnvalue = " + returnvalue);
++
++ return returnvalue;
++
++ }
++
++}
++
++
++
++
++
++
+diff -Nu mpegaudio1/FileCacheData.java mpegaudio/FileCacheData.java
+--- mpegaudio1/FileCacheData.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/FileCacheData.java Tue Nov 26 11:01:41 2002
+@@ -0,0 +1,105 @@
++/*
++ * @(#)FileCacheData.java 1.3 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++
++import java.util.*;
++
++/**
++ SpecJVMClient maintains the internal cache. The data is read over the network
++ for the first run and it is cached. The cached data is used for subsequent runs
++ The FileInputStream object contains a FileCacheData object which caches data
++ @see spec.io.FileInputStream
++ */
++public class FileCacheData{
++
++/**
++ Data buffer to cache data
++ */
++ private byte[] data = null;
++
++/**
++ Total number of bytes present in the data buffer at anytime
++ */
++ private int total_num_bytes = 0;
++
++/**
++ Constructor
++ @param len Length of the file. The byte array of 'len' size is created
++ */
++ public FileCacheData(int len){
++
++ data = new byte[len];
++
++ }
++
++/**
++ Creates the byte array to hold the file data. The size of the file is passed
++ as argument.
++ @param len Length of the file
++ */
++ public void createData(int len){
++
++ data = new byte[len];
++
++ }
++
++/**
++ Copies the given specified of bytes from the given buffer from given offset
++ to the data buffer of the FileCacheData object
++ @param b[] 'from' byte array
++ @param off Offset within the byte array
++ @param num_bytes Number of bytes to be copied
++ */
++ public void copyData(byte b[] , int off , int num_bytes){
++
++ System.arraycopy(b,off,data,total_num_bytes, num_bytes);
++ total_num_bytes += num_bytes;
++
++ }
++
++/**
++ Copies the byte to the data buffer. Increments the number of bytes field
++ @param b byte to be copied
++ */
++ public void copyData(byte b){
++
++ data[total_num_bytes] = b;
++ total_num_bytes += 1;
++
++ }
++
++/**
++ Skips a portion of buffer
++ */
++ public void skipPos(long n){
++ total_num_bytes += n;
++ }
++
++ /**
++ Converts the data buffer array to InputStream
++ */
++ public java.io.InputStream getInputStream(){
++
++ return new java.io.ByteArrayInputStream(data , 0 , total_num_bytes);
++
++ }
++
++/**
++ Returns the length of the buffer.
++ */
++ public int getLength(){
++ return total_num_bytes;
++ }
++
++}
++
++
++
+diff -Nu mpegaudio1/FileInputStream.java mpegaudio/FileInputStream.java
+--- mpegaudio1/FileInputStream.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/FileInputStream.java Tue Nov 26 11:28:57 2002
+@@ -0,0 +1,893 @@
++/*
++ * @(#)FileInputStream.java 1.33 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++
++import java.util.*;
++import java.net.*;
++//import spec.harness.*;
++
++
++/**
++ This class extends the java.io.InputStream and provides some extra functionality
++ for caching the data. It also keeps a count of the number of filestreams
++ opened by the SpecJVMClient, number of files read, number of bytes read,
++ io times spent
++ @see java.io.InputStream
++ @see spec.io.FileCacheData
++ */
++public class FileInputStream extends java.io.InputStream{
++
++
++
++ //************************* Static variables****************************//
++ // Constants
++ private static final int LENGTH_ERROR = -1;
++
++ // Cache variables
++
++/**
++ Maintains a list of cached files
++ */
++ private static Hashtable filecache = new Hashtable();
++
++/**
++ Maintains a list of opened InputStreams
++ */
++ private static Vector openedInputStreams = new Vector();
++
++/**
++ Enables or disables the Debug mode of operation
++ */
++ public static boolean debug = false;
++ public static boolean testing = false;
++
++/**
++ Keeps a count of closed filestreams
++ */
++ public static int numofCloses = 0;
++
++ // How and whether to retry http operations
++/**
++ Number of retries before declaring the error in opening the file
++ */
++ private static int nRetry = 5; // times to try
++
++/**
++ Sleep time between two successive retries
++ */
++ private static int retryDelay = 5000; // milliseconds
++
++/**
++ Total retries made throughout the benchmark suit
++ */
++ private static int totalRetries = 0; // count over all benchmarks
++
++/**
++ A flag to control which API to be used
++ */
++ private static boolean use11net = true; // use 1.1 API instead of
++
++ // IO Stats variables
++
++/**
++ Number of open files
++ */
++ private static int num_open_files = 0;
++
++/**
++ Number of files used
++ */
++ private static int num_files_used = 0;
++
++/**
++ Number of cached files
++ */
++ private static int num_cached_files = 0;
++
++/**
++ Size of the cache at a given time
++ */
++ private static int size_cached_data = 0;
++
++/**
++ Total number of bytes read from the cache for executing this benchmark
++ */
++ private static int total_num_of_byte_reads_from_cache = 0;
++
++/**
++ Total number of bytes read from file
++ */
++ private static int total_num_of_byte_reads_from_file = 0;
++
++/**
++ Total number of bytes read from the URL
++ */
++ private static int total_num_of_byte_reads_from_url = 0;
++
++/**
++ Number of cache hits
++ */
++ private static int num_cache_hits = 0;
++
++/**
++ Number of cache misses or number of files hits
++ */
++ private static int num_cache_misses = 0;
++
++/**
++ IOtime for executing this benchmark
++ */
++ private static long IOtime =0;
++
++/**
++ Caching time for executing this benchmark
++ */
++ private static long Cachingtime = 0;
++ //********************** End Static variables****************************//
++
++
++
++ //************************* Static methods******************************//
++
++ // Cache methods
++
++/**
++ Clears the cache data and updates the Caching parameters
++ */
++ public static void clearCache(){
++ filecache = new Hashtable();
++ num_cached_files = 0;
++ size_cached_data = 0;
++ num_cache_hits = 0;
++ num_cache_misses = 0;
++ }
++
++/**
++ Closes all the opened streams
++ */
++ public static void closeAll() throws java.io.IOException{
++
++ Enumeration all_opened_in_streams = openedInputStreams.elements();
++ if(debug) {
++ System.out.println("Close all called");
++ }
++
++ while(all_opened_in_streams.hasMoreElements()){
++
++ try{
++ java.io.InputStream in = (java.io.InputStream)all_opened_in_streams.nextElement();
++ in.close();
++ num_open_files--;
++ }catch(NoSuchElementException e){
++ }
++ }
++
++ }
++
++
++ // IO Stats methods
++
++ /*
++ * could be useful in debugging
++ public static String getListCachedFiles(){
++ StringBuffer buf = new StringBuffer();
++ for (Enumeration e = filecache.keys(); e.hasMoreElements(); ){
++ buf.append ((String)(e.nextElement()));
++ buf.append (",");
++ }
++ return buf.toString();
++ }
++ */
++/**
++ Returns the number of open files
++ */
++ public static int getNumOpenFiles(){
++ return num_open_files;
++ }
++
++/**
++ Returns the number of used files
++ */
++ public static int getNumUsedFiles(){
++ return num_files_used;
++ }
++
++/**
++ Returns the number of Cached files
++*/
++ public static int getNumCachedFiles(){
++ return num_cached_files;
++ }
++
++/**
++ Returns the size of the cached data
++*/
++ public static int getCachedDataSize(){
++ return size_cached_data;
++ }
++
++ /**
++ Returns the number of bytes read from the cache
++ */
++ public static int getNumCacheByteReads(){
++ return total_num_of_byte_reads_from_cache;
++ }
++
++ /**
++ Returns the number of bytes read from the file
++ */
++ public static int getNumFileByteReads(){
++ return total_num_of_byte_reads_from_file;
++ }
++
++/**
++ Returns the number of bytes read form the URL
++ */
++ public static int getNumUrlByteReads(){
++ return total_num_of_byte_reads_from_url;
++ }
++
++/**
++ Returns the number of cache hits in executing the current benchmark
++ */
++ public static int getNumCacheHits(){
++ return num_cache_hits;
++ }
++
++/**
++ Returns the number of cache misses in executing the current benchmark
++ */
++ public static int getNumCacheMisses(){
++ return num_cache_misses;
++ }
++
++/**
++ Returns the IO time spent in executing the current benchmark
++ */
++ public static long getIOtime(){
++ return IOtime;
++ }
++
++/**
++ Returns the Caching time
++ */
++ public static long getCachingtime(){
++ return Cachingtime;
++ }
++
++/**
++ Return the total retries
++ */
++ public static int getTotalRetries(){
++ return totalRetries;
++ }
++
++/**
++ Clears the IO statistics variables.
++ */
++ public static void clearIOStats(){
++ num_files_used = 0;
++ total_num_of_byte_reads_from_cache = 0;
++ total_num_of_byte_reads_from_file = 0;
++ total_num_of_byte_reads_from_url = 0;
++ IOtime = 0;
++ Cachingtime = 0;
++ }
++
++/**
++ Checks whether the given URL is valid or not.
++ */
++ public static boolean IsURLOk(URL url){
++
++ /* should have no leading/trailing LWS
++ * expedite the typical case by assuming it has
++ * form "HTTP/1.x <WS> 2XX <mumble>"
++ */
++ int ind;
++ try {
++
++ URLConnection urlc = url.openConnection();
++
++ String resp = urlc.getHeaderField(0);
++
++ if( resp == null ) {
++// System.out.println( "resp == NULL in IsURLOk" );
++ return true;
++ }
++
++ ind = resp.indexOf(' ');
++ while(resp.charAt(ind) == ' ')
++ ind++;
++ int responseCode = Integer.parseInt(resp.substring(ind, ind + 3));
++
++ if (debug){
++ System.out.println("responseCode = " + responseCode);
++ }
++
++ return !( ((responseCode >= 400) && (responseCode <= 415)) ||
++ ((responseCode >= 500) && (responseCode <= 505))
++ );
++
++ } catch (java.io.IOException e) {
++ System.out.println("Exception in IsURLOk " + e );
++ return false;
++ }
++
++ }
++
++
++/**
++ Constructs the URL for the server file given the file name
++ */
++ private static String makeGoodUrl(String str){
++
++ String retstr;
++
++ retstr = str.replace( '\\', '/' );
++
++ int ind = 0;
++
++ if (retstr.startsWith("http")){
++ ind = 6;
++ }
++
++ if (retstr.indexOf("//" , ind) != -1){
++ char c[] = retstr.toCharArray();
++ int len = retstr.length();
++ for(int i = ind; i < len; i++){
++
++ if (c[i] == '/'){
++ int j = i+1;
++
++ while( (j < len) && (c[j] == '/') ){
++ j = j+1;
++ }
++ if (j > (i+1)){
++ for(int k = i+1 , l = j; l < len; l++ , k++){
++ c[k] = c[l];
++ }
++ len = len - (j-i-1);
++ }
++ }
++ retstr = new String(c , 0 , len);
++ }
++ }
++ return retstr;
++ }
++
++ //********************** End Static methods****************************//
++
++
++
++/**
++ The file URL
++ */
++ private String my_file_url;
++
++/**
++
++ */
++ private java.io.InputStream orig_in;
++
++/**
++ Length of the FileInputStream
++ */
++ private int len = 0;
++
++/**
++ Flag indicating whether the file stream is closed or not
++ */
++ private boolean closed = false;
++
++/**
++ Flag indicating whether to cache the data during the first loading or not
++ */
++ private boolean doCache;
++
++/**
++ Flag indicating whether the data is from the Cache
++ */
++ private boolean fromCache = false;
++
++/**
++ Flag indicating whether the data is from URL
++ */
++ private boolean fromUrl = false;
++
++ /**
++ Updates the file read statistics
++ @param len Length of the FileStream
++ */
++ private void collectReadStats(int len){
++
++ if (len <= 0){
++ return;
++ }
++
++ if (fromCache){
++ total_num_of_byte_reads_from_cache += len;
++ }
++ else{
++ if (fromUrl){
++ total_num_of_byte_reads_from_url += len;
++ }
++ else{
++ total_num_of_byte_reads_from_file += len;
++ }
++ }
++
++ }
++
++
++ /**
++ * Main class constructor.
++ *
++ * Try and find the strange URL open bug by catching any exceptions and calling the
++ * System finalizer to try and close the sockets.
++ */
++ public FileInputStream(String input_filename) throws java.io.FileNotFoundException,
++ java.net.MalformedURLException , java.io.IOException {
++ super();
++
++ try {
++ construct(input_filename);
++ } catch(Exception a) {
++ System.out.println ( "----------------------------------");
++ System.out.println ( "spec.io.FileInputStream: Caught exception in constructor: "+a);
++ System.out.println ( "trying to open: " + input_filename); //wnb
++ System.out.println ( "spec.io.FileInputStream: Attempting recovery with System.runFinalization()");
++ System.gc();
++ System.runFinalization();
++ try {
++ construct(input_filename);
++ } catch(Exception b){
++ System.out.println ( "----------------------------------");
++ System.out.println ( "spec.io.FileInputStream: Caught exception in constructor at second level: "+a);
++ if ( !(b instanceof java.io.FileNotFoundException) ) {
++ System.out.println ( "spec.io.FileInputStream: Exiting benchmark");
++ printStackTrace(b);
++ throw new StopBenchmarkException( "spec.io.FileInputStream failure" );
++ } else {
++ throw (java.io.FileNotFoundException)b;
++ }
++ }
++ }
++ }
++
++/**
++ Constructs thd FileInputStream object from the given file name
++ */
++ private void construct(String input_filename) throws Exception{
++
++ long startTime = System.currentTimeMillis();
++
++ my_file_url = makeGoodUrl(input_filename);
++
++ num_open_files++;
++ num_files_used++;
++
++ if (filecache.containsKey(my_file_url)){
++
++ long cacheStartTime = System.currentTimeMillis();
++
++ doCache = false; // no need to cache data -- data is already in cache
++ fromCache = true; // read data from cache
++
++ num_cache_hits++; // we have a hit
++
++ if (debug){
++ System.out.println("\n++++++++making InputStream from cached " + my_file_url);
++ }
++
++
++ // Get the cached data from the filecache
++ FileCacheData fcd = (FileCacheData)filecache.get(my_file_url);
++
++ // Get the length of the data
++ len = fcd.getLength();
++
++ // Get an inputStream to read data form the cache
++ orig_in = fcd.getInputStream();
++
++ long cacheEndTime = System.currentTimeMillis();
++ Cachingtime += (cacheEndTime - cacheStartTime);
++ }
++ else{
++
++ num_cache_misses++; // we have a miss
++
++ if (debug){
++ System.out.println("\n++++++++Opening InputStream for " + my_file_url);
++ }
++
++
++ openStream(); // open an inputStream through network or file I/O
++
++
++ if (false){
++
++ long cacheStartTime = System.currentTimeMillis();
++
++ doCache = true; // we have to cache data
++
++ // create a new FileCacheData object of size len and put it in the filecache
++ // with my_file_url as the key
++
++ FileCacheData fcd = new FileCacheData(len);
++ filecache.put(my_file_url , fcd);
++
++ size_cached_data += len;
++ num_cached_files++;
++
++ long cacheEndTime = System.currentTimeMillis();
++ Cachingtime += (cacheEndTime - cacheStartTime);
++ }
++ else{
++ doCache = false;
++ }
++
++ // Keep track of all the InputStreams opened so far.
++ openedInputStreams.addElement(orig_in);
++
++
++ }
++
++ long endTime = System.currentTimeMillis();
++ long totalTime = endTime - startTime;
++
++
++ IOtime += totalTime;
++ }
++
++
++ /**
++ * Prints the stack backtrace to Context.out. If this is an instance of
++ * spec.io.PrintStream (it normally will be) then the default validity
++ * check value is changed to '1'. This is the code that means all data
++ * should be compaired and will ensure that the benchmark fails the
++ * validity check process.
++ */
++ void printStackTrace(Exception x) {
++ java.io.PrintStream str = System.out;
++ x.printStackTrace(System.out);
++ }
++
++/**
++ Opens the FileInputStream
++ */
++ private void openStream() throws java.io.FileNotFoundException,
++ java.net.MalformedURLException , java.io.IOException{
++
++ if (false){
++ fromUrl = true;
++ URL url = new URL(my_file_url);
++ URLConnection urlc = url.openConnection();
++ len = urlc.getHeaderFieldInt("content-length", LENGTH_ERROR);
++ for (int retry=0; retry < nRetry && len == LENGTH_ERROR; retry++){
++ if (urlc instanceof HttpURLConnection)
++ ((HttpURLConnection) urlc).disconnect();
++ urlc = null;
++ System.gc();
++ System.runFinalization();
++ if (debug)
++ System.out.println ("GET failed on " + my_file_url);
++ try{
++ Thread.sleep (retryDelay);
++ }catch (InterruptedException e){}
++ urlc = url.openConnection();
++ urlc.connect();
++ len = urlc.getHeaderFieldInt("content-length", LENGTH_ERROR);
++ totalRetries++;
++ }
++ if (use11net && (urlc instanceof HttpURLConnection)){
++ HttpURLConnection urlh = (HttpURLConnection) urlc;
++ if (urlh.getResponseCode() != HttpURLConnection.HTTP_OK)
++ throw new java.io.FileNotFoundException( my_file_url +
++ ": " + urlh.getResponseMessage());
++ }else{
++ if (!IsURLOk(url))
++ throw new java.io.FileNotFoundException( my_file_url );
++ }
++
++ if (len == LENGTH_ERROR){
++ throw new java.io.IOException("Cannot establish URL content-length");
++/*
++ System.out.println("Error getting size of file -- turning off caching");
++ spec.harness.Context.setCachedInputFlag(false);
++*/
++ }
++
++ if (debug){
++ if (len == LENGTH_ERROR){
++ if (urlc == null){
++ System.out.println("urlc is null");
++ }
++ else{
++ System.out.println("urlc = " + urlc);
++ }
++ }
++ System.out.println("++++++++spec.io.FileInputStream url len = " + len);
++ }
++
++ try{
++ orig_in = urlc.getInputStream();
++ }catch(java.io.IOException ioe){
++ System.out.println("Error trying to get an inputStream from url connection " + urlc);
++ throw ioe;
++ }
++
++ }else{ // NOT (Context.isNetworkAccess())
++
++ File file = new File(my_file_url);
++ len = (int)file.length();
++
++ if (debug){
++ System.out.println("++++++++spec.io.FileInputStream file len = " + len);
++ }
++ orig_in = new java.io.FileInputStream(my_file_url);
++
++ }
++ }
++
++/**
++ Constructor
++ @param file File object
++ */
++ public FileInputStream(spec.io.File file) throws java.io.FileNotFoundException,
++ java.net.MalformedURLException , java.io.IOException{
++ this(file.getPath());
++ }
++
++/**
++ Returns the stream length
++ */
++ public int getContentLength(){
++
++ return len;
++
++ }
++
++/**
++ Returns the number of bytes that can be read from this input stream without
++ blocking.
++ */
++ public synchronized int available() throws java.io.IOException{
++
++ try{
++
++ return orig_in.available();
++
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++ }
++
++/**
++ Reads the next byte of data from this input stream.
++ */
++ public synchronized int read() throws java.io.IOException{
++
++ try{
++
++ long startTime = System.currentTimeMillis();
++
++ int byte_read = orig_in.read();
++ if ((doCache) && (byte_read != -1)){
++
++ long cacheStartTime = System.currentTimeMillis();
++ ((FileCacheData)filecache.get(my_file_url)).copyData((byte)byte_read);
++ long cacheEndTime = System.currentTimeMillis();
++ Cachingtime += (cacheEndTime - cacheStartTime);
++ }
++
++ long endTime = System.currentTimeMillis();
++ long totalTime = endTime - startTime;
++
++
++ IOtime += totalTime;
++
++ if( debug ){
++// System.out.println("byte_read = " + byte_read);
++ }
++
++ collectReadStats(1);
++ return byte_read;
++
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++ }
++
++/**
++ Reads up to byte.length bytes of data from this input stream into an array of
++ bytes. This method blocks until some input is available.
++
++ The read method of FilterInputStream calls the read method of three arguments
++ with the arguments b, 0, and b.length, and returns whatever value that method
++ returns.
++
++ Note that this method does not call the one-argument read method of its
++ underlying stream with the single argument b. Subclasses of FilterInputStream
++ do not need to override this method if they have overridden the three-argument
++ read method.
++ @param b Buffer into which the data is read
++*/
++ public int read(byte b[]) throws java.io.IOException{
++
++ try{
++ long startTime = System.currentTimeMillis();
++
++ int bytes_read = orig_in.read(b);
++
++ if ((doCache) && (bytes_read > 0)){
++
++ long cacheStartTime = System.currentTimeMillis();
++ ((FileCacheData)filecache.get(my_file_url)).copyData(b, 0, bytes_read);
++ long cacheEndTime = System.currentTimeMillis();
++ Cachingtime += (cacheEndTime - cacheStartTime);
++ }
++
++ long endTime = System.currentTimeMillis();
++ long totalTime = endTime - startTime;
++
++
++ IOtime += totalTime;
++
++
++ if( debug ){
++ System.out.println("bytes_read = " + bytes_read);
++ }
++
++ collectReadStats(bytes_read);
++ return bytes_read;
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++ }
++
++/**
++ Reads up to len bytes of data from this input stream into an array of bytes.
++ This method blocks until some input is available.
++
++ The read method of FilterInputStream calls the read method of its underlying
++ input stream with the same arguments and returns whatever value that method
++ returns.
++ @param b - the buffer into which the data is read
++ @param off - the start offset of the data
++ @param len - the maximum number of bytes read
++ */
++
++ public synchronized int read(byte b[], int off, int len) throws java.io.IOException{
++
++
++ try{
++
++ long startTime = System.currentTimeMillis();
++
++ int bytes_read = orig_in.read(b, off, len);
++ if ((doCache) && (bytes_read > 0)){
++
++ long cacheStartTime = System.currentTimeMillis();
++ ((FileCacheData)filecache.get(my_file_url)).copyData(b, off, bytes_read);
++ long cacheEndTime = System.currentTimeMillis();
++ Cachingtime += (cacheEndTime - cacheStartTime);
++ }
++ long endTime = System.currentTimeMillis();
++ long totalTime = endTime - startTime;
++
++
++ IOtime += totalTime;
++
++
++ if( debug ){
++ System.out.println("bytes_read = " + bytes_read);
++ }
++
++ collectReadStats(bytes_read);
++ return bytes_read;
++
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++ }
++
++/**
++ Closes this input stream and releases any system resources associated with the
++ stream. The close method of FilterInputStream calls the close method of its
++ underlying input stream.
++ */
++ public void close() throws java.io.IOException{
++
++ try{
++ if (!closed){
++
++ orig_in.close();
++ numofCloses ++;
++ num_open_files--;
++
++
++ if (debug || testing){
++ System.out.println("++++++++Closing InputStream for " + my_file_url +
++ " " + num_open_files + " " + numofCloses);
++ }
++
++ closed = true;
++
++ }
++ else{
++ if (debug){
++ System.out.println("++++++++InputStream for " + my_file_url + " has been closed before");
++ }
++ }
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++
++ }
++
++/**
++ Skips over and discards n bytes of data from the input stream. The skip method
++ may, for a variety of reasons, end up skipping over some smaller number of
++ bytes, possibly 0. The actual number of bytes skipped is returned.
++
++ The skip method of FilterInputStream calls the skip method of its underlying
++ input stream with the same argument, and returns whatever value that method
++ does.
++ @param n - number of bytes to be skipped
++ */
++ public long skip(long n) throws java.io.IOException{
++
++ try{
++ if (debug){
++ System.out.println("++++++++ Skipping " + n + " positions in InputStream for " + my_file_url);
++ }
++
++ if (doCache){
++ ((FileCacheData)filecache.get(my_file_url)).skipPos(n);
++ }
++ return orig_in.skip(n);
++ }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++
++ }
++
++ /**
++ Finalization method.
++ */
++
++ protected void finalize() throws java.io.IOException{
++
++ // try{
++ if (!closed){
++
++ if (debug || testing ){
++ System.out.println("++++++++Calling close Inside finalize for " + my_file_url );
++ }
++
++ this.close();
++
++ }
++ /* }catch(java.io.IOException ioe){
++ printStackTrace(ioe);
++ throw new StopBenchmarkException(ioe.toString());
++ }
++ */
++
++ }
++
++}
+diff -Nu mpegaudio1/FileOutputStream.java mpegaudio/FileOutputStream.java
+--- mpegaudio1/FileOutputStream.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/FileOutputStream.java Tue Nov 26 11:36:25 2002
+@@ -0,0 +1,128 @@
++/*
++ * @(#)FileOutputStream.java 1.11 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++import spec.harness.Context;
++
++/**
++ * Dummy output stream that is only used as a place holder and for a little
++ * benchmark validity checking
++ */
++public class FileOutputStream extends java.io.OutputStream {
++
++ /**
++ * Development debug flag
++ */
++ final static boolean debug = false;
++
++ /**
++ * Count of bytes written
++ */
++ static int byteCount = -99999999;
++
++ /**
++ * Checksum
++ */
++ static int checksum = 0;
++
++ /**
++ * Standard constructor. It creates the file if it is not existing, but it
++ * truncates the existing data if the file already exists
++ */
++ public FileOutputStream(String name) throws java.io.IOException{
++ }
++
++ /**
++ * Standard constructor. It opens the existing file but doesn't truncate
++ * existing data
++ * @see java.io.FileOutPutStream
++ */
++ public FileOutputStream(String name, boolean append) throws java.io.IOException {
++ }
++
++ /**
++ * Standard constructor
++ */
++ public FileOutputStream(spec.io.File file) throws java.io.IOException {
++ }
++
++ /**
++ * Writes specified byte into output stream.
++ * @param b - byte to be written
++ */
++ public void write(int b) throws java.io.IOException {
++ byteCount++;
++ checksum += specialTrace("W", b );
++ }
++
++ /**
++ * Write b.length bytes into output stream
++ * @param b - byte array to be written
++ */
++ public void write(byte b[]) throws java.io.IOException {
++ int len = b.length;
++ byteCount += len;
++ if (len > 0) {
++ checksum += specialTrace("X", b[0] );; // Just checksum the first character
++ }
++ if( debug ) {
++ System.out.println("Inside spec.io.FileOutStream.write() -- throwing away output");
++ }
++ }
++
++/**
++ Writes len bytes from the specified byte array starting at offset off to this
++ output stream. The write method of FilterOutputStream calls the write method
++ of one argument on each byte to output.
++
++ Note that this method does not call the write method of its underlying input
++ stream with the same arguments. Subclasses of FilterOutputStream should
++ provide a more efficient implementation of this method
++*/
++ public void write(byte b[], int off, int len) throws java.io.IOException {
++ byteCount += len;
++
++ if (len > 0) {
++ checksum += specialTrace("Z",b[off]); // Just checksum the first character
++ }
++ if( debug ) {
++ System.out.println("Inside spec.io.FileOutStream.write() -- throwing away output");
++ }
++ }
++
++ /**
++ * Chears the byte counter
++ */
++ public static void clearCount() {
++ byteCount = 0;
++ checksum = 0;
++ }
++
++ /**
++ * Prints the byte counter in validity check mode '1'
++ * @param check - Indicates whether the validation is enabled or not
++ */
++ public static void printCount(boolean check) {
++ spec.io.PrintStream s = (spec.io.PrintStream)Context.out;
++ if( check ) {
++ s.println('1',"File output byte count = "+byteCount+" checksum = "+checksum);
++ } else {
++ s.println('1',"File output byte count = "+byteCount);
++ }
++ }
++
++
++ public static int specialTrace(String rtn, int ch) {
++// ((spec.io.PrintStream)Context.out).println('1',rtn+ch);
++ return ch;
++ }
++}
++
++
+diff -Nu mpegaudio1/StopBenchmarkException.java mpegaudio/StopBenchmarkException.java
+--- mpegaudio1/StopBenchmarkException.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/StopBenchmarkException.java Tue Nov 26 11:31:12 2002
+@@ -0,0 +1,9 @@
++package spec.io;
++
++import java.io.IOException;
++
++class StopBenchmarkException extends IOException {
++ public StopBenchmarkException(String a) {
++ super(a);
++ }
++};
+diff -Nu mpegaudio1/TableOfExistingFiles.java mpegaudio/TableOfExistingFiles.java
+--- mpegaudio1/TableOfExistingFiles.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/TableOfExistingFiles.java Tue Nov 26 11:03:06 2002
+@@ -0,0 +1,672 @@
++/*
++ * @(#)TableOfExistingFiles.java 1.5 06/17/98
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++
++/**
++ This class maintains a list of the files that should not be loaded across
++ the net. Any other class or data file required by the SpecJVMClient are
++ loaded across the net.
++ */
++public class TableOfExistingFiles extends java.util.Hashtable{
++
++/**
++ Constructor.
++ */
++public TableOfExistingFiles(){
++super();
++
++String o = "Java programmers make better lovers.";
++super.put("lib/java/util" , o);
++super.put("lib/java/io" , o);
++super.put("lib/java/lang/Object.class" , o);
++super.put("lib/java/lang/Exception.class" , o);
++super.put("lib/java/lang/Integer.class" , o);
++super.put("lib/java/lang/NumberFormatException.class" , o);
++super.put("lib/java/lang/Throwable.class" , o);
++super.put("lib/java/lang/Class.class" , o);
++super.put("lib/java/lang/IllegalAccessException.class" , o);
++super.put("lib/java/lang/StringBuffer.class" , o);
++super.put("lib/java/lang/ClassNotFoundException.class" , o);
++super.put("lib/java/lang/IllegalArgumentException.class" , o);
++super.put("lib/java/lang/Number.class" , o);
++super.put("lib/java/lang/InterruptedException.class" , o);
++super.put("lib/java/lang/String.class" , o);
++super.put("lib/java/lang/RuntimeException.class" , o);
++super.put("lib/java/lang/InternalError.class" , o);
++super.put("lib/java/lang/Long.class" , o);
++super.put("lib/java/lang/Character.class" , o);
++super.put("lib/java/lang/CloneNotSupportedException.class" , o);
++super.put("lib/java/lang/InstantiationException.class" , o);
++super.put("lib/java/lang/VirtualMachineError.class" , o);
++super.put("lib/java/lang/Double.class" , o);
++super.put("lib/java/lang/Error.class" , o);
++super.put("lib/java/lang/NullPointerException.class" , o);
++super.put("lib/java/lang/Cloneable.class" , o);
++super.put("lib/java/lang/System.class" , o);
++super.put("lib/java/lang/ClassLoader.class" , o);
++super.put("lib/java/lang/Math.class" , o);
++super.put("lib/java/lang/Float.class" , o);
++super.put("lib/java/lang/Runtime.class" , o);
++super.put("lib/java/lang/StringIndexOutOfBoundsException.class" , o);
++super.put("lib/java/lang/IndexOutOfBoundsException.class" , o);
++super.put("lib/java/lang/SecurityException.class" , o);
++super.put("lib/java/lang/LinkageError.class" , o);
++super.put("lib/java/lang/Runnable.class" , o);
++super.put("lib/java/lang/Process.class" , o);
++super.put("lib/java/lang/SecurityManager.class" , o);
++super.put("lib/java/lang/Thread.class" , o);
++super.put("lib/java/lang/UnsatisfiedLinkError.class" , o);
++super.put("lib/java/lang/IncompatibleClassChangeError.class" , o);
++super.put("lib/java/lang/NoSuchMethodError.class" , o);
++super.put("lib/java/lang/IllegalThreadStateException.class" , o);
++super.put("lib/java/lang/ThreadGroup.class" , o);
++super.put("lib/java/lang/ThreadDeath.class" , o);
++super.put("lib/java/lang/ArrayIndexOutOfBoundsException.class" , o);
++super.put("lib/java/lang/Boolean.class" , o);
++super.put("lib/java/lang/Compiler.class" , o);
++super.put("lib/java/lang/NoSuchMethodException.class" , o);
++super.put("lib/java/lang/ArithmeticException.class" , o);
++super.put("lib/java/lang/ArrayStoreException.class" , o);
++super.put("lib/java/lang/ClassCastException.class" , o);
++super.put("lib/java/lang/NegativeArraySizeException.class" , o);
++super.put("lib/java/lang/IllegalMonitorStateException.class" , o);
++super.put("lib/java/lang/ClassCircularityError.class" , o);
++super.put("lib/java/lang/ClassFormatError.class" , o);
++super.put("lib/java/lang/AbstractMethodError.class" , o);
++super.put("lib/java/lang/IllegalAccessError.class" , o);
++super.put("lib/java/lang/InstantiationError.class" , o);
++super.put("lib/java/lang/NoSuchFieldError.class" , o);
++super.put("lib/java/lang/NoClassDefFoundError.class" , o);
++super.put("lib/java/lang/VerifyError.class" , o);
++super.put("lib/java/lang/OutOfMemoryError.class" , o);
++super.put("lib/java/lang/StackOverflowError.class" , o);
++super.put("lib/java/lang/UnknownError.class" , o);
++super.put("lib/java/lang/Win32Process.class" , o);
++super.put("lib/java/io/FilterOutputStream.class" , o);
++super.put("lib/java/io/OutputStream.class" , o);
++super.put("lib/java/io/IOException.class" , o);
++super.put("lib/java/io/PrintStream.class" , o);
++super.put("lib/java/io/FileInputStream.class" , o);
++super.put("lib/java/io/InterruptedIOException.class" , o);
++super.put("lib/java/io/File.class" , o);
++super.put("lib/java/io/InputStream.class" , o);
++super.put("lib/java/io/BufferedInputStream.class" , o);
++super.put("lib/java/io/FileOutputStream.class" , o);
++super.put("lib/java/io/FileNotFoundException.class" , o);
++super.put("lib/java/io/BufferedOutputStream.class" , o);
++super.put("lib/java/io/FileDescriptor.class" , o);
++super.put("lib/java/io/FilenameFilter.class" , o);
++super.put("lib/java/io/FilterInputStream.class" , o);
++super.put("lib/java/io/PipedInputStream.class" , o);
++super.put("lib/java/io/PipedOutputStream.class" , o);
++super.put("lib/java/io/EOFException.class" , o);
++super.put("lib/java/io/UTFDataFormatException.class" , o);
++super.put("lib/java/io/DataInput.class" , o);
++super.put("lib/java/io/DataOutput.class" , o);
++super.put("lib/java/io/DataInputStream.class" , o);
++super.put("lib/java/io/PushbackInputStream.class" , o);
++super.put("lib/java/io/ByteArrayInputStream.class" , o);
++super.put("lib/java/io/SequenceInputStream.class" , o);
++super.put("lib/java/io/StringBufferInputStream.class" , o);
++super.put("lib/java/io/LineNumberInputStream.class" , o);
++super.put("lib/java/io/DataOutputStream.class" , o);
++super.put("lib/java/io/ByteArrayOutputStream.class" , o);
++super.put("lib/java/io/RandomAccessFile.class" , o);
++super.put("lib/java/io/StreamTokenizer.class" , o);
++super.put("lib/java/util/Hashtable.class" , o);
++super.put("lib/java/util/Enumeration.class" , o);
++super.put("lib/java/util/HashtableEnumerator.class" , o);
++super.put("lib/java/util/Properties.class" , o);
++super.put("lib/java/util/HashtableEntry.class" , o);
++super.put("lib/java/util/Dictionary.class" , o);
++super.put("lib/java/util/Date.class" , o);
++super.put("lib/java/util/NoSuchElementException.class" , o);
++super.put("lib/java/util/StringTokenizer.class" , o);
++super.put("lib/java/util/Random.class" , o);
++super.put("lib/java/util/VectorEnumerator.class" , o);
++super.put("lib/java/util/Vector.class" , o);
++super.put("lib/java/util/BitSet.class" , o);
++super.put("lib/java/util/EmptyStackException.class" , o);
++super.put("lib/java/util/Observable.class" , o);
++super.put("lib/java/util/Observer.class" , o);
++super.put("lib/java/util/ObserverList.class" , o);
++super.put("lib/java/util/Stack.class" , o);
++super.put("lib/java/awt/Toolkit.class" , o);
++super.put("lib/java/awt/peer/WindowPeer.class" , o);
++super.put("lib/java/awt/peer/TextFieldPeer.class" , o);
++super.put("lib/java/awt/peer/ContainerPeer.class" , o);
++super.put("lib/java/awt/peer/PanelPeer.class" , o);
++super.put("lib/java/awt/peer/CanvasPeer.class" , o);
++super.put("lib/java/awt/peer/FramePeer.class" , o);
++super.put("lib/java/awt/peer/ChoicePeer.class" , o);
++super.put("lib/java/awt/peer/CheckboxMenuItemPeer.class" , o);
++super.put("lib/java/awt/peer/TextAreaPeer.class" , o);
++super.put("lib/java/awt/peer/FileDialogPeer.class" , o);
++super.put("lib/java/awt/peer/TextComponentPeer.class" , o);
++super.put("lib/java/awt/peer/ScrollbarPeer.class" , o);
++super.put("lib/java/awt/peer/ButtonPeer.class" , o);
++super.put("lib/java/awt/peer/ComponentPeer.class" , o);
++super.put("lib/java/awt/peer/MenuComponentPeer.class" , o);
++super.put("lib/java/awt/peer/MenuItemPeer.class" , o);
++super.put("lib/java/awt/peer/CheckboxPeer.class" , o);
++super.put("lib/java/awt/peer/MenuPeer.class" , o);
++super.put("lib/java/awt/peer/ListPeer.class" , o);
++super.put("lib/java/awt/peer/MenuBarPeer.class" , o);
++super.put("lib/java/awt/peer/LabelPeer.class" , o);
++super.put("lib/java/awt/peer/DialogPeer.class" , o);
++super.put("lib/java/awt/Image.class" , o);
++super.put("lib/java/awt/MenuItem.class" , o);
++super.put("lib/java/awt/MenuComponent.class" , o);
++super.put("lib/java/awt/image/ImageProducer.class" , o);
++super.put("lib/java/awt/image/ColorModel.class" , o);
++super.put("lib/java/awt/image/DirectColorModel.class" , o);
++super.put("lib/java/awt/image/ImageConsumer.class" , o);
++super.put("lib/java/awt/image/ImageObserver.class" , o);
++super.put("lib/java/awt/image/CropImageFilter.class" , o);
++super.put("lib/java/awt/image/ImageFilter.class" , o);
++super.put("lib/java/awt/image/FilteredImageSource.class" , o);
++super.put("lib/java/awt/image/IndexColorModel.class" , o);
++super.put("lib/java/awt/image/MemoryImageSource.class" , o);
++super.put("lib/java/awt/image/PixelGrabber.class" , o);
++super.put("lib/java/awt/image/RGBImageFilter.class" , o);
++super.put("lib/java/awt/FontMetrics.class" , o);
++super.put("lib/java/awt/Checkbox.class" , o);
++super.put("lib/java/awt/CheckboxGroup.class" , o);
++super.put("lib/java/awt/MenuContainer.class" , o);
++super.put("lib/java/awt/Menu.class" , o);
++super.put("lib/java/awt/Insets.class" , o);
++super.put("lib/java/awt/MenuBar.class" , o);
++super.put("lib/java/awt/List.class" , o);
++super.put("lib/java/awt/Label.class" , o);
++super.put("lib/java/awt/Component.class" , o);
++super.put("lib/java/awt/TextField.class" , o);
++super.put("lib/java/awt/TextComponent.class" , o);
++super.put("lib/java/awt/Dialog.class" , o);
++super.put("lib/java/awt/Font.class" , o);
++super.put("lib/java/awt/Window.class" , o);
++super.put("lib/java/awt/FocusManager.class" , o);
++super.put("lib/java/awt/Panel.class" , o);
++super.put("lib/java/awt/Container.class" , o);
++super.put("lib/java/awt/Graphics.class" , o);
++super.put("lib/java/awt/CheckboxMenuItem.class" , o);
++super.put("lib/java/awt/Canvas.class" , o);
++super.put("lib/java/awt/Frame.class" , o);
++super.put("lib/java/awt/Choice.class" , o);
++super.put("lib/java/awt/Event.class" , o);
++super.put("lib/java/awt/TextArea.class" , o);
++super.put("lib/java/awt/AWTError.class" , o);
++super.put("lib/java/awt/Polygon.class" , o);
++super.put("lib/java/awt/FlowLayout.class" , o);
++super.put("lib/java/awt/Point.class" , o);
++super.put("lib/java/awt/FileDialog.class" , o);
++super.put("lib/java/awt/Scrollbar.class" , o);
++super.put("lib/java/awt/Dimension.class" , o);
++super.put("lib/java/awt/Color.class" , o);
++super.put("lib/java/awt/Button.class" , o);
++super.put("lib/java/awt/LayoutManager.class" , o);
++super.put("lib/java/awt/Rectangle.class" , o);
++super.put("lib/java/awt/BorderLayout.class" , o);
++super.put("lib/java/awt/GridLayout.class" , o);
++super.put("lib/java/awt/GridBagConstraints.class" , o);
++super.put("lib/java/awt/GridBagLayout.class" , o);
++super.put("lib/java/awt/GridBagLayoutInfo.class" , o);
++super.put("lib/java/awt/CardLayout.class" , o);
++super.put("lib/java/awt/MediaTracker.class" , o);
++super.put("lib/java/awt/MediaEntry.class" , o);
++super.put("lib/java/awt/ImageMediaEntry.class" , o);
++super.put("lib/java/awt/AWTException.class" , o);
++super.put("lib/java/net/URL.class" , o);
++super.put("lib/java/net/URLStreamHandlerFactory.class" , o);
++super.put("lib/java/net/InetAddress.class" , o);
++super.put("lib/java/net/UnknownContentHandler.class" , o);
++super.put("lib/java/net/UnknownHostException.class" , o);
++super.put("lib/java/net/URLStreamHandler.class" , o);
++super.put("lib/java/net/URLConnection.class" , o);
++super.put("lib/java/net/MalformedURLException.class" , o);
++super.put("lib/java/net/ContentHandlerFactory.class" , o);
++super.put("lib/java/net/ContentHandler.class" , o);
++super.put("lib/java/net/UnknownServiceException.class" , o);
++super.put("lib/java/net/ServerSocket.class" , o);
++super.put("lib/java/net/PlainSocketImpl.class" , o);
++super.put("lib/java/net/SocketImpl.class" , o);
++super.put("lib/java/net/ProtocolException.class" , o);
++super.put("lib/java/net/SocketException.class" , o);
++super.put("lib/java/net/SocketInputStream.class" , o);
++super.put("lib/java/net/Socket.class" , o);
++super.put("lib/java/net/SocketImplFactory.class" , o);
++super.put("lib/java/net/SocketOutputStream.class" , o);
++super.put("lib/java/net/DatagramPacket.class" , o);
++super.put("lib/java/net/DatagramSocket.class" , o);
++super.put("lib/java/net/URLEncoder.class" , o);
++super.put("lib/java/applet/Applet.class" , o);
++super.put("lib/java/applet/AppletContext.class" , o);
++super.put("lib/java/applet/AudioClip.class" , o);
++super.put("lib/java/applet/AppletStub.class" , o);
++super.put("lib/sun/tools/debug/BreakpointQueue.class" , o);
++super.put("lib/sun/tools/debug/DebuggerCallback.class" , o);
++super.put("lib/sun/tools/debug/RemoteThread.class" , o);
++super.put("lib/sun/tools/debug/StackFrame.class" , o);
++super.put("lib/sun/tools/debug/RemoteAgent.class" , o);
++super.put("lib/sun/tools/debug/AgentConstants.class" , o);
++super.put("lib/sun/tools/debug/AgentIn.class" , o);
++super.put("lib/sun/tools/debug/RemoteObject.class" , o);
++super.put("lib/sun/tools/debug/RemoteStackVariable.class" , o);
++super.put("lib/sun/tools/debug/RemoteValue.class" , o);
++super.put("lib/sun/tools/debug/RemoteClass.class" , o);
++super.put("lib/sun/tools/debug/Agent.class" , o);
++super.put("lib/sun/tools/debug/RemoteBoolean.class" , o);
++super.put("lib/sun/tools/debug/RemoteChar.class" , o);
++super.put("lib/sun/tools/debug/RemoteString.class" , o);
++super.put("lib/sun/tools/debug/NoSessionException.class" , o);
++super.put("lib/sun/tools/debug/Field.class" , o);
++super.put("lib/sun/tools/debug/NoSuchLineNumberException.class" , o);
++super.put("lib/sun/tools/debug/RemoteShort.class" , o);
++super.put("lib/sun/tools/debug/RemoteThreadGroup.class" , o);
++super.put("lib/sun/tools/debug/RemoteInt.class" , o);
++super.put("lib/sun/tools/debug/ResponseStream.class" , o);
++super.put("lib/sun/tools/debug/RemoteDouble.class" , o);
++super.put("lib/sun/tools/debug/LocalVariable.class" , o);
++super.put("lib/sun/tools/debug/BreakpointSet.class" , o);
++super.put("lib/sun/tools/debug/RemoteStackFrame.class" , o);
++super.put("lib/sun/tools/debug/MainThread.class" , o);
++super.put("lib/sun/tools/debug/BreakpointHandler.class" , o);
++super.put("lib/sun/tools/debug/AgentOutputStream.class" , o);
++super.put("lib/sun/tools/debug/RemoteLong.class" , o);
++super.put("lib/sun/tools/debug/RemoteFloat.class" , o);
++super.put("lib/sun/tools/debug/RemoteArray.class" , o);
++super.put("lib/sun/tools/debug/InvalidPCException.class" , o);
++super.put("lib/sun/tools/debug/LineNumber.class" , o);
++super.put("lib/sun/tools/debug/RemoteField.class" , o);
++super.put("lib/sun/tools/debug/NoSuchFieldException.class" , o);
++super.put("lib/sun/tools/debug/RemoteByte.class" , o);
++super.put("lib/sun/tools/debug/EmptyApp.class" , o);
++super.put("lib/sun/tools/debug/RemoteDebugger.class" , o);
++super.put("lib/sun/tools/java/RuntimeConstants.class" , o);
++super.put("lib/sun/tools/java/Constants.class" , o);
++super.put("lib/sun/tools/java/Environment.class" , o);
++super.put("lib/sun/tools/java/ClassPath.class" , o);
++super.put("lib/sun/tools/java/ClassDeclaration.class" , o);
++super.put("lib/sun/tools/java/FieldDefinition.class" , o);
++super.put("lib/sun/tools/java/Type.class" , o);
++super.put("lib/sun/tools/java/ClassNotFound.class" , o);
++super.put("lib/sun/tools/java/ClassType.class" , o);
++super.put("lib/sun/tools/java/ClassDefinition.class" , o);
++super.put("lib/sun/tools/java/Parser.class" , o);
++super.put("lib/sun/tools/java/ClassPathEntry.class" , o);
++super.put("lib/sun/tools/java/CompilerError.class" , o);
++super.put("lib/sun/tools/java/Identifier.class" , o);
++super.put("lib/sun/tools/java/Package.class" , o);
++super.put("lib/sun/tools/java/ClassFile.class" , o);
++super.put("lib/sun/tools/java/Imports.class" , o);
++super.put("lib/sun/tools/java/ArrayType.class" , o);
++super.put("lib/sun/tools/java/AmbiguousField.class" , o);
++super.put("lib/sun/tools/java/MethodType.class" , o);
++super.put("lib/sun/tools/java/Scanner.class" , o);
++super.put("lib/sun/tools/java/SyntaxError.class" , o);
++super.put("lib/sun/tools/java/BinaryClass.class" , o);
++super.put("lib/sun/tools/java/BinaryField.class" , o);
++super.put("lib/sun/tools/java/AmbiguousClass.class" , o);
++super.put("lib/sun/tools/java/BinaryConstantPool.class" , o);
++super.put("lib/sun/tools/java/ScannerInputStream.class" , o);
++super.put("lib/sun/tools/java/BinaryAttribute.class" , o);
++super.put("lib/sun/tools/java/BinaryCode.class" , o);
++super.put("lib/sun/tools/java/BinaryExceptionHandler.class" , o);
++super.put("lib/sun/tools/javac/Main.class" , o);
++super.put("lib/sun/tools/javac/SourceClass.class" , o);
++super.put("lib/sun/tools/javac/CompilerField.class" , o);
++super.put("lib/sun/tools/javac/SourceField.class" , o);
++super.put("lib/sun/tools/javac/BatchEnvironment.class" , o);
++super.put("lib/sun/tools/javac/ErrorConsumer.class" , o);
++super.put("lib/sun/tools/javac/ErrorMessage.class" , o);
++super.put("lib/sun/tools/javac/BatchParser.class" , o);
++super.put("lib/sun/tools/zip/ZipFile.class" , o);
++super.put("lib/sun/tools/zip/ZipEntry.class" , o);
++super.put("lib/sun/tools/zip/ZipFileInputStream.class" , o);
++super.put("lib/sun/tools/zip/ZipConstants.class" , o);
++super.put("lib/sun/tools/zip/ZipFormatException.class" , o);
++super.put("lib/sun/tools/zip/ZipReaderInputStream.class" , o);
++super.put("lib/sun/tools/zip/ZipReader.class" , o);
++super.put("lib/sun/tools/tree/ConstantExpression.class" , o);
++super.put("lib/sun/tools/tree/LocalField.class" , o);
++super.put("lib/sun/tools/tree/Expression.class" , o);
++super.put("lib/sun/tools/tree/IncDecExpression.class" , o);
++super.put("lib/sun/tools/tree/SuperExpression.class" , o);
++super.put("lib/sun/tools/tree/NaryExpression.class" , o);
++super.put("lib/sun/tools/tree/StringExpression.class" , o);
++super.put("lib/sun/tools/tree/UnaryExpression.class" , o);
++super.put("lib/sun/tools/tree/Context.class" , o);
++super.put("lib/sun/tools/tree/ExpressionStatement.class" , o);
++super.put("lib/sun/tools/tree/ConditionVars.class" , o);
++super.put("lib/sun/tools/tree/Node.class" , o);
++super.put("lib/sun/tools/tree/CharExpression.class" , o);
++super.put("lib/sun/tools/tree/CaseStatement.class" , o);
++super.put("lib/sun/tools/tree/LessExpression.class" , o);
++super.put("lib/sun/tools/tree/IntegerExpression.class" , o);
++super.put("lib/sun/tools/tree/SubtractExpression.class" , o);
++super.put("lib/sun/tools/tree/ArrayAccessExpression.class" , o);
++super.put("lib/sun/tools/tree/TryStatement.class" , o);
++super.put("lib/sun/tools/tree/BinaryEqualityExpression.class" , o);
++super.put("lib/sun/tools/tree/Statement.class" , o);
++super.put("lib/sun/tools/tree/AssignSubtractExpression.class" , o);
++super.put("lib/sun/tools/tree/FinallyStatement.class" , o);
++super.put("lib/sun/tools/tree/ForStatement.class" , o);
++super.put("lib/sun/tools/tree/DivRemExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryExpression.class" , o);
++super.put("lib/sun/tools/tree/ShiftRightExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignMultiplyExpression.class" , o);
++super.put("lib/sun/tools/tree/BooleanExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryArithmeticExpression.class" , o);
++super.put("lib/sun/tools/tree/ThrowStatement.class" , o);
++super.put("lib/sun/tools/tree/AssignDivideExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignShiftLeftExpression.class" , o);
++super.put("lib/sun/tools/tree/NewArrayExpression.class" , o);
++super.put("lib/sun/tools/tree/AndExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignBitOrExpression.class" , o);
++super.put("lib/sun/tools/tree/BreakStatement.class" , o);
++super.put("lib/sun/tools/tree/SynchronizedStatement.class" , o);
++super.put("lib/sun/tools/tree/PreDecExpression.class" , o);
++super.put("lib/sun/tools/tree/CompoundStatement.class" , o);
++super.put("lib/sun/tools/tree/DoubleExpression.class" , o);
++super.put("lib/sun/tools/tree/ConvertExpression.class" , o);
++super.put("lib/sun/tools/tree/NullExpression.class" , o);
++super.put("lib/sun/tools/tree/LessOrEqualExpression.class" , o);
++super.put("lib/sun/tools/tree/IdentifierExpression.class" , o);
++super.put("lib/sun/tools/tree/ReturnStatement.class" , o);
++super.put("lib/sun/tools/tree/BitNotExpression.class" , o);
++super.put("lib/sun/tools/tree/LongExpression.class" , o);
++super.put("lib/sun/tools/tree/VarDeclarationStatement.class" , o);
++super.put("lib/sun/tools/tree/MethodExpression.class" , o);
++super.put("lib/sun/tools/tree/ThisExpression.class" , o);
++super.put("lib/sun/tools/tree/BitOrExpression.class" , o);
++super.put("lib/sun/tools/tree/PositiveExpression.class" , o);
++super.put("lib/sun/tools/tree/IfStatement.class" , o);
++super.put("lib/sun/tools/tree/FloatExpression.class" , o);
++super.put("lib/sun/tools/tree/NotEqualExpression.class" , o);
++super.put("lib/sun/tools/tree/InstanceOfExpression.class" , o);
++super.put("lib/sun/tools/tree/NotExpression.class" , o);
++super.put("lib/sun/tools/tree/BitAndExpression.class" , o);
++super.put("lib/sun/tools/tree/DivideExpression.class" , o);
++super.put("lib/sun/tools/tree/ShortExpression.class" , o);
++super.put("lib/sun/tools/tree/RemainderExpression.class" , o);
++super.put("lib/sun/tools/tree/NewInstanceExpression.class" , o);
++super.put("lib/sun/tools/tree/SwitchStatement.class" , o);
++super.put("lib/sun/tools/tree/AddExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignOpExpression.class" , o);
++super.put("lib/sun/tools/tree/EqualExpression.class" , o);
++super.put("lib/sun/tools/tree/PostIncExpression.class" , o);
++super.put("lib/sun/tools/tree/GreaterExpression.class" , o);
++super.put("lib/sun/tools/tree/PostDecExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignExpression.class" , o);
++super.put("lib/sun/tools/tree/WhileStatement.class" , o);
++super.put("lib/sun/tools/tree/ContinueStatement.class" , o);
++super.put("lib/sun/tools/tree/ConditionalExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignAddExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryBitExpression.class" , o);
++super.put("lib/sun/tools/tree/CastExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignBitXorExpression.class" , o);
++super.put("lib/sun/tools/tree/ArrayExpression.class" , o);
++super.put("lib/sun/tools/tree/InlineMethodExpression.class" , o);
++super.put("lib/sun/tools/tree/InlineNewInstanceExpression.class" , o);
++super.put("lib/sun/tools/tree/CodeContext.class" , o);
++super.put("lib/sun/tools/tree/AssignShiftRightExpression.class" , o);
++super.put("lib/sun/tools/tree/UnsignedShiftRightExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignBitAndExpression.class" , o);
++super.put("lib/sun/tools/tree/ShiftLeftExpression.class" , o);
++super.put("lib/sun/tools/tree/CatchStatement.class" , o);
++super.put("lib/sun/tools/tree/IntExpression.class" , o);
++super.put("lib/sun/tools/tree/TypeExpression.class" , o);
++super.put("lib/sun/tools/tree/CommaExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignUnsignedShiftRightExpression.class" , o);
++super.put("lib/sun/tools/tree/ExprExpression.class" , o);
++super.put("lib/sun/tools/tree/AssignRemainderExpression.class" , o);
++super.put("lib/sun/tools/tree/ByteExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryAssignExpression.class" , o);
++super.put("lib/sun/tools/tree/DoStatement.class" , o);
++super.put("lib/sun/tools/tree/DeclarationStatement.class" , o);
++super.put("lib/sun/tools/tree/MultiplyExpression.class" , o);
++super.put("lib/sun/tools/tree/InlineReturnStatement.class" , o);
++super.put("lib/sun/tools/tree/BitXorExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryCompareExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryShiftExpression.class" , o);
++super.put("lib/sun/tools/tree/CheckContext.class" , o);
++super.put("lib/sun/tools/tree/PreIncExpression.class" , o);
++super.put("lib/sun/tools/tree/GreaterOrEqualExpression.class" , o);
++super.put("lib/sun/tools/tree/FieldExpression.class" , o);
++super.put("lib/sun/tools/tree/OrExpression.class" , o);
++super.put("lib/sun/tools/tree/BinaryLogicalExpression.class" , o);
++super.put("lib/sun/tools/tree/NegativeExpression.class" , o);
++super.put("lib/sun/tools/tree/LengthExpression.class" , o);
++super.put("lib/sun/tools/asm/Assembler.class" , o);
++super.put("lib/sun/tools/asm/Instruction.class" , o);
++super.put("lib/sun/tools/asm/LocalVariable.class" , o);
++super.put("lib/sun/tools/asm/ArrayData.class" , o);
++super.put("lib/sun/tools/asm/LocalVariableTable.class" , o);
++super.put("lib/sun/tools/asm/SwitchDataEnumeration.class" , o);
++super.put("lib/sun/tools/asm/ConstantPool.class" , o);
++super.put("lib/sun/tools/asm/ConstantPoolData.class" , o);
++super.put("lib/sun/tools/asm/NameAndTypeConstantData.class" , o);
++super.put("lib/sun/tools/asm/NumberConstantData.class" , o);
++super.put("lib/sun/tools/asm/FieldConstantData.class" , o);
++super.put("lib/sun/tools/asm/TryData.class" , o);
++super.put("lib/sun/tools/asm/Label.class" , o);
++super.put("lib/sun/tools/asm/SwitchData.class" , o);
++super.put("lib/sun/tools/asm/CatchData.class" , o);
++super.put("lib/sun/tools/asm/StringExpressionConstantData.class" , o);
++super.put("lib/sun/tools/asm/NameAndTypeData.class" , o);
++super.put("lib/sun/tools/asm/StringConstantData.class" , o);
++super.put("lib/sun/tools/asm/ClassConstantData.class" , o);
++super.put("lib/sun/tools/ttydebug/TTY.class" , o);
++super.put("lib/sun/tools/javadoc/Main.class" , o);
++super.put("lib/sun/tools/javadoc/DocumentationGenerator.class" , o);
++super.put("lib/sun/tools/javadoc/HTMLDocumentationGenerator.class" , o);
++super.put("lib/sun/tools/javadoc/MIFDocumentationGenerator.class" , o);
++super.put("lib/sun/tools/javadoc/MIFPrintStream.class" , o);
++super.put("lib/sun/net/MulticastSocket.class" , o);
++super.put("lib/sun/net/URLCanonicalizer.class" , o);
++super.put("lib/sun/net/NetworkClient.class" , o);
++super.put("lib/sun/net/NetworkServer.class" , o);
++super.put("lib/sun/net/ProgressData.class" , o);
++super.put("lib/sun/net/ProgressEntry.class" , o);
++super.put("lib/sun/net/TelnetInputStream.class" , o);
++super.put("lib/sun/net/TelnetProtocolException.class" , o);
++super.put("lib/sun/net/TelnetOutputStream.class" , o);
++super.put("lib/sun/net/TransferProtocolClient.class" , o);
++super.put("lib/sun/net/ftp/FtpInputStream.class" , o);
++super.put("lib/sun/net/ftp/FtpClient.class" , o);
++super.put("lib/sun/net/ftp/FtpLoginException.class" , o);
++super.put("lib/sun/net/ftp/FtpProtocolException.class" , o);
++super.put("lib/sun/net/ftp/IftpClient.class" , o);
++super.put("lib/sun/net/nntp/NewsgroupInfo.class" , o);
++super.put("lib/sun/net/nntp/NntpClient.class" , o);
++super.put("lib/sun/net/nntp/UnknownNewsgroupException.class" , o);
++super.put("lib/sun/net/nntp/NntpProtocolException.class" , o);
++super.put("lib/sun/net/nntp/NntpInputStream.class" , o);
++super.put("lib/sun/net/smtp/SmtpPrintStream.class" , o);
++super.put("lib/sun/net/smtp/SmtpClient.class" , o);
++super.put("lib/sun/net/smtp/SmtpProtocolException.class" , o);
++super.put("lib/sun/net/www/auth/Authenticator.class" , o);
++super.put("lib/sun/net/www/auth/basic.class" , o);
++super.put("lib/sun/net/www/content/text/Generic.class" , o);
++super.put("lib/sun/net/www/content/text/plain.class" , o);
++super.put("lib/sun/net/www/content/image/gif.class" , o);
++super.put("lib/sun/net/www/content/image/jpeg.class" , o);
++super.put("lib/sun/net/www/content/image/x_xbitmap.class" , o);
++super.put("lib/sun/net/www/content/image/x_xpixmap.class" , o);
++super.put("lib/sun/net/www/FormatException.class" , o);
++super.put("lib/sun/net/www/MessageHeader.class" , o);
++super.put("lib/sun/net/www/MeteredStream.class" , o);
++super.put("lib/sun/net/www/ProgressReport.class" , o);
++super.put("lib/sun/net/www/MimeEntry.class" , o);
++super.put("lib/sun/net/www/MimeLauncher.class" , o);
++super.put("lib/sun/net/www/MimeTable.class" , o);
++super.put("lib/sun/net/www/URLConnection.class" , o);
++super.put("lib/sun/net/www/UnknownContentException.class" , o);
++super.put("lib/sun/net/www/UnknownContentHandler.class" , o);
++super.put("lib/sun/net/www/protocol/file/Handler.class" , o);
++super.put("lib/sun/net/www/protocol/file/FileURLConnection.class" , o);
++super.put("lib/sun/net/www/protocol/http/Handler.class" , o);
++super.put("lib/sun/net/www/protocol/http/HttpURLConnection.class" , o);
++super.put("lib/sun/net/www/protocol/http/HttpPostBufferStream.class" , o);
++super.put("lib/sun/net/www/protocol/doc/Handler.class" , o);
++super.put("lib/sun/net/www/protocol/verbatim/Handler.class" , o);
++super.put("lib/sun/net/www/protocol/verbatim/VerbatimConnection.class" , o);
++super.put("lib/sun/net/www/protocol/gopher/GopherClient.class" , o);
++super.put("lib/sun/net/www/protocol/gopher/GopherInputStream.class" , o);
++super.put("lib/sun/net/www/http/UnauthorizedHttpRequestException.class" , o);
++super.put("lib/sun/net/www/http/HttpClient.class" , o);
++super.put("lib/sun/net/www/http/AuthenticationInfo.class" , o);
++super.put("lib/sun/awt/HorizBagLayout.class" , o);
++super.put("lib/sun/awt/VerticalBagLayout.class" , o);
++super.put("lib/sun/awt/VariableGridLayout.class" , o);
++super.put("lib/sun/awt/FocusingTextField.class" , o);
++super.put("lib/sun/awt/win32/MToolkit.class" , o);
++super.put("lib/sun/awt/win32/MMenuBarPeer.class" , o);
++super.put("lib/sun/awt/win32/MButtonPeer.class" , o);
++super.put("lib/sun/awt/win32/Win32Image.class" , o);
++super.put("lib/sun/awt/win32/MScrollbarPeer.class" , o);
++super.put("lib/sun/awt/win32/MDialogPeer.class" , o);
++super.put("lib/sun/awt/win32/MCheckboxMenuItemPeer.class" , o);
++super.put("lib/sun/awt/win32/Win32Graphics.class" , o);
++super.put("lib/sun/awt/win32/MListPeer.class" , o);
++super.put("lib/sun/awt/win32/MWindowPeer.class" , o);
++super.put("lib/sun/awt/win32/MMenuItemPeer.class" , o);
++super.put("lib/sun/awt/win32/ModalThread.class" , o);
++super.put("lib/sun/awt/win32/MCanvasPeer.class" , o);
++super.put("lib/sun/awt/win32/MFileDialogPeer.class" , o);
++super.put("lib/sun/awt/win32/MTextAreaPeer.class" , o);
++super.put("lib/sun/awt/win32/MPanelPeer.class" , o);
++super.put("lib/sun/awt/win32/MComponentPeer.class" , o);
++super.put("lib/sun/awt/win32/MCheckboxPeer.class" , o);
++super.put("lib/sun/awt/win32/MLabelPeer.class" , o);
++super.put("lib/sun/awt/win32/Win32FontMetrics.class" , o);
++super.put("lib/sun/awt/win32/MFramePeer.class" , o);
++super.put("lib/sun/awt/win32/MMenuPeer.class" , o);
++super.put("lib/sun/awt/win32/MChoicePeer.class" , o);
++super.put("lib/sun/awt/win32/MTextFieldPeer.class" , o);
++super.put("lib/sun/awt/win32/Win32PrintJob.class" , o);
++super.put("lib/sun/awt/image/URLImageSource.class" , o);
++super.put("lib/sun/awt/image/ImageWatched.class" , o);
++super.put("lib/sun/awt/image/InputStreamImageSource.class" , o);
++super.put("lib/sun/awt/image/ConsumerQueue.class" , o);
++super.put("lib/sun/awt/image/ImageDecoder.class" , o);
++super.put("lib/sun/awt/image/ImageRepresentation.class" , o);
++super.put("lib/sun/awt/image/ImageInfoGrabber.class" , o);
++super.put("lib/sun/awt/image/XbmImageDecoder.class" , o);
++super.put("lib/sun/awt/image/GifImageDecoder.class" , o);
++super.put("lib/sun/awt/image/ImageFetcher.class" , o);
++super.put("lib/sun/awt/image/PixelStore.class" , o);
++super.put("lib/sun/awt/image/JPEGImageDecoder.class" , o);
++super.put("lib/sun/awt/image/PixelStore8.class" , o);
++super.put("lib/sun/awt/image/ImageFetchable.class" , o);
++super.put("lib/sun/awt/image/OffScreenImageSource.class" , o);
++super.put("lib/sun/awt/image/PixelStore32.class" , o);
++super.put("lib/sun/awt/image/ImageFormatException.class" , o);
++super.put("lib/sun/awt/image/FileImageSource.class" , o);
++super.put("lib/sun/awt/image/Image.class" , o);
++super.put("lib/sun/awt/UpdateClient.class" , o);
++super.put("lib/sun/awt/ScreenUpdaterEntry.class" , o);
++super.put("lib/sun/awt/ScreenUpdater.class" , o);
++super.put("lib/sun/misc/Ref.class" , o);
++super.put("lib/sun/misc/MessageUtils.class" , o);
++super.put("lib/sun/misc/Cache.class" , o);
++super.put("lib/sun/misc/CacheEntry.class" , o);
++super.put("lib/sun/misc/CacheEnumerator.class" , o);
++super.put("lib/sun/misc/CEFormatException.class" , o);
++super.put("lib/sun/misc/CEStreamExhausted.class" , o);
++super.put("lib/sun/misc/CRC16.class" , o);
++super.put("lib/sun/misc/CharacterDecoder.class" , o);
++super.put("lib/sun/misc/BASE64Decoder.class" , o);
++super.put("lib/sun/misc/UCDecoder.class" , o);
++super.put("lib/sun/misc/UUDecoder.class" , o);
++super.put("lib/sun/misc/CharacterEncoder.class" , o);
++super.put("lib/sun/misc/BASE64Encoder.class" , o);
++super.put("lib/sun/misc/HexDumpEncoder.class" , o);
++super.put("lib/sun/misc/UCEncoder.class" , o);
++super.put("lib/sun/misc/UUEncoder.class" , o);
++super.put("lib/sun/misc/Timeable.class" , o);
++super.put("lib/sun/misc/TimerTickThread.class" , o);
++super.put("lib/sun/misc/Timer.class" , o);
++super.put("lib/sun/misc/TimerThread.class" , o);
++super.put("lib/sun/misc/ConditionLock.class" , o);
++super.put("lib/sun/misc/Lock.class" , o);
++super.put("lib/sun/audio/AudioDataStream.class" , o);
++super.put("lib/sun/audio/AudioData.class" , o);
++super.put("lib/sun/audio/AudioDevice.class" , o);
++super.put("lib/sun/audio/AudioPlayer.class" , o);
++super.put("lib/sun/audio/AudioStream.class" , o);
++super.put("lib/sun/audio/NativeAudioStream.class" , o);
++super.put("lib/sun/audio/InvalidAudioFormatException.class" , o);
++super.put("lib/sun/audio/AudioTranslatorStream.class" , o);
++super.put("lib/sun/audio/AudioStreamSequence.class" , o);
++super.put("lib/sun/audio/ContinuousAudioDataStream.class" , o);
++super.put("lib/sun/applet/StdAppletViewerFactory.class" , o);
++super.put("lib/sun/applet/TextFrame.class" , o);
++super.put("lib/sun/applet/AppletViewerFactory.class" , o);
++super.put("lib/sun/applet/AppletViewer.class" , o);
++super.put("lib/sun/applet/AppletCopyright.class" , o);
++super.put("lib/sun/applet/AppletAudioClip.class" , o);
++super.put("lib/sun/applet/AppletSecurity.class" , o);
++super.put("lib/sun/applet/AppletThreadGroup.class" , o);
++super.put("lib/sun/applet/AppletClassLoader.class" , o);
++super.put("lib/sun/applet/AppletPanel.class" , o);
++super.put("lib/sun/applet/AppletViewerPanel.class" , o);
++super.put("lib/sun/applet/AppletProps.class" , o);
++super.put("lib/sun/applet/AppletSecurityException.class" , o);
++super.put("lib/sun/applet/AppletZipClassLoader.class" , o);
++super.put("lib/spec/benchmarks/_202_jess/Activation.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Binding.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Context.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/ContextState.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Deffacts.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Deffunction.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Defglobal.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Defrule.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Deftemplate.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Fact.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Funcall.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/GlobalContext.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Jesp.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Jess.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Main.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Node.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Node1.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Node2.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/NodeNot2.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/NodeTerm.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/NullDisplay.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Pattern.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/RU.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Rete.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/ReteCompiler.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/ReteDisplay.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/ReteException.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/StringFunctions.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Successor.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Test1.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Test2.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Token.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/TokenVector.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Userfunction.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/Value.java" , o);
++super.put("lib/spec/benchmarks/_202_jess/ValueVector.java" , o);
++
++}
++
++/**
++ Checks whether the given file exists in the list of existing files
++ */
++public boolean exists(String filename){
++
++// System.out.println( "*** "+filename+" = "+containsKey(filename) );
++ return containsKey(filename);
++
++}
++}
+diff -Nu mpegaudio1/setup.sh mpegaudio/setup.sh
+--- mpegaudio1/setup.sh Thu Jan 1 01:00:00 1970
++++ mpegaudio/setup.sh Sat Nov 30 18:06:34 2002
+@@ -0,0 +1,3 @@
++mkdir -p spec/benchmarks/_222_mpegaudio
++mv *.class spec/benchmarks/_222_mpegaudio
++ln -s /tmp/output.wav .
+diff -Nu mpegaudio1/PrintStream.java mpegaudio/PrintStream.java
+--- mpegaudio1/PrintStream.java Thu Jan 1 01:00:00 1970
++++ mpegaudio/PrintStream.java Sat Nov 30 18:13:49 2002
+@@ -0,0 +1,65 @@
++/*
++ * %W% %G%
++ *
++ * Copyright (c) 1998 Standard Performance Evaluation Corporation (SPEC)
++ * All rights reserved.
++ * Copyright (c) 1997,1998 Sun Microsystems, Inc. All rights reserved.
++ *
++ * This source code is provided as is, without any express or implied warranty.
++ */
++
++package spec.io;
++
++/**
++ * This class implements a special form of PrintStream that is used by
++ * the benchmarks. The class vaieable spec.harness.Context.out is made
++ * to point to an instance of this class. The purpuse of the class is to
++ * record validity check information with the recorded output. This is done
++ * using one of nine integer values (0-8). 0 means the default validity checking
++ * is to be used and is what a Context.out.println() would employ. The numbers
++ * 1 through 8 are used to set various valitity cheching rules. This class
++ * implements a set of println() type methods that allow the text output to be
++ * does so within the context of a certain validity cheching value.
++ *
++ * These routines will output the valitity check value to the associated
++ * OutputStream unchanged. This will cause them to be output as the character
++ * values \u0000 to \u0008 these values are not normally used (the next one
++ * \u0009 is) so this should not cause a problem. However this is checked for
++ * in ValidityCheckOutputStream.
++ *
++ * @see ConsoleOutputStream
++ * @see ValidityCheckOutputStream
++ */
++public
++class PrintStream extends java.io.PrintStream {
++ /**
++ * The actual output stream. This is the same as 'out' in our superclass but
++ * kept here as well to avoid a lot of runtime casting.
++ */
++
++ /**
++ * Creates a new PrintStream.
++ * @param out the output stream
++ */
++ public PrintStream(java.io.OutputStream out) {
++ super(out, false);
++ }
++
++ /**
++ * Print a string in a validity context
++ * @param v the validity context value.
++ * @param s the data to be printed.
++ */
++ synchronized public void print(char v, String s) {
++ super.print(s);
++ }
++
++ /**
++ * Print a string in a validity context
++ * @param v the validity context value.
++ * @param s the data to be printed.
++ */
++ synchronized public void println(char v, String s) {
++ super.println(s);
++ }
++}
+--- mpegaudio2/Main.java Mon Dec 9 12:36:17 2002
++++ mpegaudio/Main.java Mon Dec 9 12:34:26 2002
+@@ -7,15 +7,15 @@
+ * This source code is provided as is, without any express or implied warranty.
+ */
+
+-package spec.benchmarks._222_mpegaudio;
+-import spec.harness.*;
++import spec.benchmarks._222_mpegaudio.*;
++//import spec.harness.*;
+
+
+-public class Main implements SpecBenchmark {
++public class Main {
+
+ static long runBenchmark( String[] args ) {
+
+- int speed = spec.harness.Context.getSpeed();
++ int speed = 100;
+ int iter = 1;
+ String name = "track16.mp3";
+
+@@ -34,11 +34,11 @@
+ args[0] = "input/"+name;
+ }
+
+- spec.harness.Context.out.println( "MPEG Audio - Decoding " + args[0] + " " + iter + " time" + (iter > 1 ? "s" : "") );
++ System.out.println( "MPEG Audio - Decoding " + args[0] + " " + iter + " time" + (iter > 1 ? "s" : "") );
+ long startTime = System.currentTimeMillis();
+
+ for( int i = 0 ; i < iter ; i++ ) {
+- BenchDec.main( args );
++ JavaDec.main( args );
+ }
+
+ return System.currentTimeMillis() - startTime;
+diff -Nu mpegaudio2/postoutput.sh mpegaudio/postoutput.sh
+--- mpegaudio2/postoutput.sh Thu Jan 1 01:00:00 1970
++++ mpegaudio/postoutput.sh Mon Dec 9 15:11:24 2002
+@@ -0,0 +1 @@
++brik -Gb output.wav > mpegaudio.output