001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package runtime;
028:
029: import components.ConstantPool;
030: import util.ClassnameFilterList;
031:
032: /*
033: * This is the interface that a machine-independent
034: * (ROM) image writer must implement in order to be called
035: * by the JavaCodeCompact driver.
036: * Additionally, the image writer must have a public constructor
037: * of no parameters.
038: */
039: public interface CoreImageWriter {
040:
041: void init(boolean uselinenumbers, ClassnameFilterList nativeTypes,
042: boolean verbose, int maxSegmentSize);
043:
044: /*
045: * Finish initialization. Parameters:
046: * uselinenumbers: produce data structures giving correspondence
047: * between bytecode PC and source line numbers
048: * nativeTypes: classifies native method interface for a class
049: * verbose: print informative messages on System.out.
050: */
051:
052: boolean setAttribute(String attributeValue);
053:
054: /*
055: * Process target-specific flags from the command line.
056: * Return value: false: flag unrecognized or malformed
057: * true: flag recognized and well-formed.
058: */
059:
060: boolean open(String filename);
061:
062: /*
063: * Open the named file for writing output.
064: * Return value: false: could not open. See printError.
065: * true: otherwise.
066: */
067:
068: boolean writeClasses(ConstantPool consts);
069:
070: /*
071: * Write class and other data structures to output file.
072: * Parameter:
073: * consts: shared constant and string pool
074: * Return value: false: any error was encountered. See printError.
075: * true: otherwise.
076: */
077:
078: boolean writeClasses(ConstantPool consts, ConstantPool sharedconsts);
079:
080: /*
081: * Write class and other data structures to output file.
082: * Parameter:
083: * consts: string pool
084: * sharedconsts: shared constant
085: * Return value: false: any error was encountered. See printError.
086: * true: otherwise.
087: */
088:
089: void printSpaceStats(java.io.PrintStream log);
090:
091: /*
092: * Print informative message upon normal completion.
093: * This is usually a set of numbers, such as the amount
094: * or read-only and read-write memory that will be consumed by
095: * this image.
096: * Parameter:
097: * log: PrintStream to use for output
098: */
099:
100: void close();
101:
102: /*
103: * Close output file.
104: */
105:
106: void printError(java.io.PrintStream o);
107: /*
108: * Print information about any error encountered during processing.
109: * To be called if either open or writeClasses returns false.
110: * Often, this is the contents of an exception thrown and caught
111: * internally.
112: * Parameter:
113: * o: PrintStream to use for output
114: */
115:
116: }
|