X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=firmjni%2Ftestprograms%2FEmpty.java;h=21bfea46cd68d0a22b90be0515653d2bb213c99b;hb=64c5d88231b07d0914ce913ea957e552858ff42a;hp=d3e481cbbef764b726eb478368a429ffda14af11;hpb=ed9b5ebd17cf1a3cd1a6a4ae608f92823c859138;p=libfirm diff --git a/firmjni/testprograms/Empty.java b/firmjni/testprograms/Empty.java index d3e481cbb..21bfea46c 100644 --- a/firmjni/testprograms/Empty.java +++ b/firmjni/testprograms/Empty.java @@ -1,13 +1,16 @@ -import firmjni.*; +/* + * Project: libFIRM + * File name: firmjni/testprograms/Empty.java + * Purpose: This is an example of how to use the JNI interface of Firm. + * Author: Goetz Lindenmaier + * Modified by: + * Created: + * CVS-ID: $Id$ + * Copyright: (c) 2002 Universitaet Karlsruhe + * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + */ -/* Copyright (C) 2002 by Universitaet Karlsruhe -** All rights reserved. -** -** Author: Goetz Lindenmaier -** -** This is an example of how to use the JNI interface of Firm. -** -*/ +import firmjni.*; /** *** An empty Firm program. @@ -22,27 +25,25 @@ import firmjni.*; **/ class Empty { public static void main (String[] args) { - Firm firm = new Firm(); System.out.println("\nCreating an IR graph: EMPTY..."); - /* init library */ - Firm.initFirm(); + /* init library: Java did not support the callback, so ALWAYS use 0 here */ + Firm.initFirm(0); /** Build type information for the procedure. **/ - /* FIRM was designed for oo languages where all methods beint to a class. + /* FIRM was designed for oo languages where all methods belong to a class. * For imperative languages like C we view a file as a large class containing * all functions in this file as methods. - * This clas is generated automatically. - */ + * This class is generated automatically. */ int owner = Irprog.getGlobType(); /* The type of the method */ - int name = Ident.idFromStr("main", 4); + int name = Ident.newIdFromStr("EMPTY_main"); int proc_main = Type.newTypeMethod(name, 0, 0); - /* An entity representing the method. Owner of the entity is the global class - type mentioned above. */ + /* An entity representing the method. Owner of the entity is the global + class type mentioned above. */ int ent = Entity.newEntity (owner, name, proc_main); /** Build code for the procedure. **/ @@ -59,33 +60,26 @@ class Empty { * it is not matured. * Generate the return node into this region. The Return node is needed to * return at least the memory. */ - //ir_node *in[0]; /* this is the array containing the return parameters */ int []in = new int[0]; int x = Ircons.newReturn (Ircons.getStore(), in.length, in); - /* Test enumerators */ - if (Irnode.getIrnModecode(x) != Irmode.irm_X) - System.out.println(" wrong modecode"); - else - System.out.println(" proper modecode Execution."); - /* Now we generated all instructions for this block and all its predecessor * blocks so we can mature it. (There are not too much.) */ - Ircons.matureBlock (Irgraph.getIrgCurrentBlock(irg)); + Ircons.matureImmBlock (Irgraph.getIrgCurrentBlock(irg)); /* This adds the in edge of the end block which originates at the return statement. * The return node passes controlflow to the end block. */ - Ircons.addInEdge (Irgraph.getIrgEndBlock(irg), x); + Ircons.addImmBlockPred (Irgraph.getIrgEndBlock(irg), x); /* Now we can mature the end block as all it's predecessors are known. */ - Ircons.matureBlock (Irgraph.getIrgEndBlock(irg)); + Ircons.matureImmBlock (Irgraph.getIrgEndBlock(irg)); /* Verify the graph. Finds some very bad errors in the graph. */ - //irg_vrfy(irg); - Ircons.finalizeCons (irg); + Irvrfy.irgVerify(irg, Irvrfy.VRFY_NORMAL); + Irgraph.setIrgPhaseState (irg, Irgraph.phase_high); System.out.println("Done building the graph. Dumping it."); - Irdump.dumpIrBlockGraph (irg); - Irdump.dumpAllTypes(); + Irdump.dumpIrBlockGraph (irg, ""); + Irdump.dumpAllTypes(""); System.out.println("use xvcg to view this graph:");