⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tracetoslog2.java

📁 fortran并行计算包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package logformat.slog2.output;import java.util.*;import java.io.File;import base.drawable.*;import logformat.trace.*;import logformat.slog2.*;public class TraceToSlog2{    static {        System.loadLibrary( "TraceInput" );     }    private static short    num_children_per_node = 0;    private static int      leaf_bytesize         = 0;    private static String   trace_filespec, slog_filename;    private static boolean  enable_endtime_check;    private static boolean  continue_when_violation;    public static final void main( String[] args )    {        logformat.trace.InputLog            dobj_ins;        logformat.slog2.output.OutputLog    slog_outs;        Kind                                next_kind;        Topology                            topo;        CategoryMap                         objdefs;   // Drawable def'n        Map                                 shadefs;   // Shadow   def'n        Category                            objdef;        LineIDMapList                       lineIDmaps;        LineIDMap                           lineIDmap;        Primitive                           prime_obj;        Composite                           cmplx_obj;        long                                Nobjs;        TreeTrunk                           treetrunk;        double                              prev_dobj_endtime;        double                              curr_dobj_endtime;        long                                offended_Nobjs;        Drawable                            offended_dobj;        //  Initialize prev_dobj_endtime to avoid complaint by compiler        prev_dobj_endtime = Double.NEGATIVE_INFINITY;        offended_Nobjs    = Integer.MIN_VALUE;        offended_dobj     = null;        slog_filename = null;        parseCmdLineArgs( args );        if ( slog_filename == null )            slog_filename  = TraceName.getDefaultSLOG2Name( trace_filespec );        objdefs       = new CategoryMap();        shadefs       = new HashMap();        lineIDmaps    = new LineIDMapList();        Nobjs         = 0;        /* */    Date time1 = new Date();        dobj_ins   = new logformat.trace.InputLog( trace_filespec );        slog_outs  = new logformat.slog2.output.OutputLog( slog_filename );        //  Set Tree properties, !optional!        //  TreeNode's minimum size, without any drawable/shadow, is 38 bytes.        //  Drawable;s minimum size is 32 bytes, whether it is state/arrow.        //  Arrow( with 2 integer infovalues ) is 40 bytes long.        //  So, for 1 state primitive leaf, the size is 38 + 40 = 78 .        if ( leaf_bytesize > 0 )            slog_outs.setTreeLeafByteSize( leaf_bytesize );        if ( num_children_per_node > 0 )            slog_outs.setNumChildrenPerNode( num_children_per_node );        treetrunk = new TreeTrunk( slog_outs, shadefs );        /* */    Date time2 = new Date();        while ( ( next_kind = dobj_ins.peekNextKind() ) != Kind.EOF ) {            if ( next_kind == Kind.TOPOLOGY ) {                topo = dobj_ins.getNextTopology();                objdef = Category.getShadowCategory( topo );                objdefs.put( new Integer( objdef.getIndex() ), objdef );                shadefs.put( topo, objdef );            }            else if ( next_kind == Kind.YCOORDMAP ) {                lineIDmap = new LineIDMap( dobj_ins.getNextYCoordMap() );                lineIDmaps.add( lineIDmap );            }            else if ( next_kind == Kind.CATEGORY ) {                objdef = dobj_ins.getNextCategory();                objdefs.put( new Integer( objdef.getIndex() ), objdef );            }             else if ( next_kind == Kind.PRIMITIVE ) {                prime_obj = dobj_ins.getNextPrimitive();                prime_obj.resolveCategory( objdefs );                // postponed, wait till on-demand decoding of InfoBuffer                // prime_obj.decodeInfoBuffer();                Nobjs++;                // System.out.println( Nobjs + " : " + prime_obj );                if ( enable_endtime_check ) {                    if ( ! prime_obj.isTimeOrdered() ) {                        System.out.println( "**** Primitive Time Error ****" );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    curr_dobj_endtime = prime_obj.getLatestTime();                    if ( prev_dobj_endtime > curr_dobj_endtime ) {                        System.err.println( "**** Violation of "                                          + "Increasing Endtime Order ****\n"                                          + "\t Offended Drawable -> "                                          + offended_Nobjs + " : "                                          + offended_dobj + "\n"                                          + "\t Offending Primitive -> "                                          + Nobjs + " : " + prime_obj + "\n"                                          + "   previous drawable endtime ( "                                          + prev_dobj_endtime + " ) "                                          + " > current drawable endtiime ( "                                          + curr_dobj_endtime + " ) " );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    offended_Nobjs    = Nobjs;                    offended_dobj     = prime_obj;                    prev_dobj_endtime = curr_dobj_endtime;                }                treetrunk.addDrawable( prime_obj );            }            else if ( next_kind == Kind.COMPOSITE ) {                cmplx_obj = dobj_ins.getNextComposite();                cmplx_obj.resolveCategory( objdefs );                // postponed, wait till on-demand decoding of InfoBuffer                // cmplx_obj.decodeInfoBuffer();                Nobjs++;                // System.out.println( Nobjs + " : " + cmplx_obj );                if ( enable_endtime_check ) {                    if ( ! cmplx_obj.isTimeOrdered() ) {                        System.out.println( "**** Composite Time Error ****" );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    curr_dobj_endtime = cmplx_obj.getLatestTime();                    if ( prev_dobj_endtime > curr_dobj_endtime ) {                        System.err.println( "***** Violation of "                                          + "Increasing Endtime Order! *****\n"                                          + "\t Offended Drawable -> "                                          + offended_Nobjs + " : "                                          + offended_dobj + "\n"                                          + "\t Offending Composite -> "                                          + Nobjs + " : " + cmplx_obj + "\n"                                          + "   previous drawable endtime ( "                                          + prev_dobj_endtime + " ) "                                          + " > current drawable endtiime ( "                                          + curr_dobj_endtime + " ) " );                        if ( ! continue_when_violation )                            System.exit( 1 );                    }                    offended_Nobjs    = Nobjs;                    offended_dobj     = cmplx_obj;                    prev_dobj_endtime = curr_dobj_endtime;                }                treetrunk.addDrawable( cmplx_obj );            }            else {                System.err.println( "TraceToSlog2: Unrecognized return "                                  + "from peekNextKind() = " + next_kind );            }        }   // Endof while ( dobj_ins.peekNextKind() )        // Check if flushToFile is successful,        // i.e. if treetrunk contains drawables.        if ( treetrunk.flushToFile() ) {            objdefs.removeUnusedCategories();            slog_outs.writeCategoryMap( objdefs );            lineIDmaps.add( treetrunk.getIdentityLineIDMap() );            slog_outs.writeLineIDMapList( lineIDmaps );            slog_outs.close();            dobj_ins.close();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -