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

  1. package espresso;
  2.  
  3. class NewArrayItem extends Item {
  4.    int dim;
  5.  
  6.    void stash(Typ var1, int var2) {
  7.       throw new CompilerError("stash");
  8.    }
  9.  
  10.    void drop(Typ var1) {
  11.       this.load(var1);
  12.       Item.stackItem.drop(var1);
  13.    }
  14.  
  15.    void duplicate(Typ var1) {
  16.       this.load(var1);
  17.       Item.stackItem.duplicate(var1);
  18.    }
  19.  
  20.    void load(Typ var1) {
  21.       Typ var2 = ((ArrayTyp)var1).elemtyp;
  22.       int var3 = this.tcode(var2.tag);
  23.       if (var3 != 0 && (var3 != 1 || this.dim != 1)) {
  24.          if (var3 == 1) {
  25.             Gen.emitop(197, 1 - this.dim);
  26.             Gen.emit2(Gen.mkref(var1));
  27.             Gen.emit1(this.dim);
  28.          } else {
  29.             Gen.emitop1(188, var3);
  30.          }
  31.       } else {
  32.          Gen.emitop2(189, Gen.mkref(var2));
  33.       }
  34.  
  35.    }
  36.  
  37.    private int tcode(int var1) {
  38.       switch (var1) {
  39.          case 2:
  40.             return 8;
  41.          case 3:
  42.          case 12:
  43.          default:
  44.             throw new CompilerError("tcode");
  45.          case 4:
  46.             return 5;
  47.          case 5:
  48.             return 9;
  49.          case 6:
  50.             return 10;
  51.          case 7:
  52.             return 11;
  53.          case 8:
  54.             return 6;
  55.          case 9:
  56.             return 7;
  57.          case 10:
  58.             return 4;
  59.          case 11:
  60.             return 0;
  61.          case 13:
  62.             return 1;
  63.       }
  64.    }
  65.  
  66.    NewArrayItem(int var1) {
  67.       super(10);
  68.       this.dim = var1;
  69.    }
  70. }
  71.