home *** CD-ROM | disk | FTP | other *** search
/ Tutto per Internet / Internet.iso / soft95 / Java / espints / espinst.exe / classes / espresso / Simplify.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-02-28  |  5.7 KB  |  167 lines

  1. package espresso;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5.  
  6. class Simplify implements Constants {
  7.    private static final Name booleanValueS = Name.fromString("booleanValue");
  8.    private static final Name doubleValueS = Name.fromString("doubleValue");
  9.    private static final Name floatValueS = Name.fromString("floatValue");
  10.    private static final Name longValueS = Name.fromString("longValue");
  11.    private static final Name intValueS = Name.fromString("intValue");
  12.    private static final Name BooleanS = Name.fromString("Boolean");
  13.    private static final Name DoubleS = Name.fromString("Double");
  14.    private static final Name FloatS = Name.fromString("Float");
  15.    private static final Name LongS = Name.fromString("Long");
  16.    private static final Name IntegerS = Name.fromString("Integer");
  17.    private static final Name boxS = Name.fromString("espresso.lang.Closure.box");
  18.    static final Name dollarS = Name.fromString("$");
  19.    static final Name argsS = Name.fromString("$args");
  20.    static final Name tagS = Name.fromString("$tag");
  21.    static final Name receiverS = Name.fromString("$receiver");
  22.    static final Name fvarsS = Name.fromString("$fvars");
  23.    static final Name allargsS = Name.fromString("$allargs");
  24.    static final Name closureS = Name.fromString("$closure");
  25.    static final Name applyS = Name.fromString("$apply");
  26.    static final Name nullS = Name.fromString("null");
  27.    static final Name combineS = Name.fromString("combine");
  28.    static final Name ThrowableS = Name.fromString("Throwable");
  29.    static final Name MessageNotUnderstoodS = Name.fromString("espresso.lang.MessageNotUnderstood");
  30.    static final Name ClosureS = Name.fromString("espresso.lang.Closure");
  31.    static final Name ReceiverS = Name.fromString("espresso.lang.Receiver");
  32.  
  33.    static int totalClosures(ClassObj var0) {
  34.       return var0 == null ? 0 : var0.nclosures + totalClosures(var0.superclass);
  35.    }
  36.  
  37.    static void swapTypes() {
  38.       Enumeration var0 = ClassFile.loaded.elements();
  39.  
  40.       while(var0.hasMoreElements()) {
  41.          Object var1 = var0.nextElement();
  42.          if (var1 instanceof ClassObj) {
  43.             ClassObj var2 = (ClassObj)var1;
  44.             if (var2.scope != null) {
  45.                for(ScopeEntry var3 = var2.scope.elements(); var3 != null; var3 = var3.sibling) {
  46.                   if (var3.obj.alttyp != null) {
  47.                      Typ var4 = var3.obj.typ;
  48.                      var3.obj.typ = var3.obj.alttyp;
  49.                      var3.obj.alttyp = var4;
  50.                   }
  51.                }
  52.             }
  53.          }
  54.       }
  55.  
  56.    }
  57.  
  58.    static void markFree(Env var0, Obj var1) {
  59.       if (var1 instanceof VarObj && var1.owner != null && var1.owner instanceof FunObj && var0.enclFun != null) {
  60.          for(Obj var2 = var0.enclFun.obj; var2 != var1.owner && var2.name == null; var2 = var2.owner) {
  61.             Hashtable var3 = ((FunObj)var2).freevars;
  62.             if (var3 != null && var3.get(var1) == null) {
  63.                var3.put(var1, var1);
  64.             }
  65.          }
  66.       }
  67.  
  68.    }
  69.  
  70.    static AST unbox(AST var0, Typ var1) {
  71.       int var2 = var0.pos;
  72.       switch (var1.tag) {
  73.          case 2:
  74.          case 4:
  75.          case 5:
  76.             return new Typeop(var2, 62, unbox(var0, Typ.intTyp), toAST(var2, var1));
  77.          case 3:
  78.          default:
  79.             throw new CompilerError("unbox");
  80.          case 6:
  81.             return new Apply(var2, new Select(var2, new Typeop(var2, 62, var0, toAST(var2, IntegerS)), intValueS), new ASTS());
  82.          case 7:
  83.             return new Apply(var2, new Select(var2, new Typeop(var2, 62, var0, toAST(var2, LongS)), longValueS), new ASTS());
  84.          case 8:
  85.             return new Apply(var2, new Select(var2, new Typeop(var2, 62, var0, toAST(var2, FloatS)), floatValueS), new ASTS());
  86.          case 9:
  87.             return new Apply(var2, new Select(var2, new Typeop(var2, 62, var0, toAST(var2, DoubleS)), doubleValueS), new ASTS());
  88.          case 10:
  89.             return new Apply(var2, new Select(var2, new Typeop(var2, 62, var0, toAST(var2, BooleanS)), booleanValueS), new ASTS());
  90.          case 11:
  91.          case 13:
  92.             return new Typeop(var2, 62, var0, toAST(var2, var1));
  93.          case 12:
  94.             return var0;
  95.          case 14:
  96.             return new Typeop(var2, 62, var0, toAST(var2, ClosureS));
  97.       }
  98.    }
  99.  
  100.    static AST box(AST var0) {
  101.       return new Apply(var0.pos, toAST(var0.pos, boxS), new ASTS(var0));
  102.    }
  103.  
  104.    static Typ trueType(AST var0) {
  105.       Typ var1 = alternateType(var0);
  106.       return var1 == null ? var0.typ : var1;
  107.    }
  108.  
  109.    static Typ alternateType(AST var0) {
  110.       return var0.tag == 97 ? ((AnnotType)var0).alttyp : null;
  111.    }
  112.  
  113.    static AST strip(AST var0) {
  114.       return var0.tag == 97 ? ((AnnotType)var0).javatyp : var0;
  115.    }
  116.  
  117.    static AST annot(AST var0, Typ var1) {
  118.       return (AST)(isExtended(var1) ? new AnnotType(var0.pos, var0, var1) : var0);
  119.    }
  120.  
  121.    static boolean isExtended(Typ var0) {
  122.       switch (var0.tag) {
  123.          case 14:
  124.             return true;
  125.          case 13:
  126.             return isExtended(((ArrayTyp)var0).elemtyp);
  127.          default:
  128.             return false;
  129.       }
  130.    }
  131.  
  132.    static AST selectThis(int var0, Name var1) {
  133.       return new Select(var0, new Self(var0, 80), var1);
  134.    }
  135.  
  136.    static AST objectArray(int var0) {
  137.       return new Subscript(var0, objectTyp(var0), (AST)null);
  138.    }
  139.  
  140.    static AST objectTyp(int var0) {
  141.       return toAST(var0, Predef.objectTyp);
  142.    }
  143.  
  144.    static AST toAST(int var0, Typ var1) {
  145.       switch (var1.tag) {
  146.          case 0:
  147.          case 16:
  148.          case 17:
  149.             throw new CompilerError("toAST");
  150.          case 13:
  151.             return new Subscript(var0, toAST(var0, ((ArrayTyp)var1).elemtyp), (AST)null);
  152.          case 14:
  153.             return toAST(var0, ClosureS);
  154.          default:
  155.             return toAST(var0, var1.obj.fullname);
  156.       }
  157.    }
  158.  
  159.    static AST toAST(int var0, Name var1) {
  160.       int var2 = var1.lastPos((byte)46);
  161.       return (AST)(var2 >= 0 ? new Select(var0, toAST(var0, var1.subName(0, var2)), var1.subName(var2 + 1, var1.len)) : new Ident(var0, var1));
  162.    }
  163.  
  164.    public Simplify() {
  165.    }
  166. }
  167.