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

  1. package espresso;
  2.  
  3. class BasedItem extends Item {
  4.    Obj field;
  5.    Item base;
  6.    int pos;
  7.  
  8.    void invoke() {
  9.       FunTyp var1 = (FunTyp)this.field.typ;
  10.       int var2 = Gen.width(var1.argtyps);
  11.       int var3 = Gen.width(var1.restyp) - var2;
  12.       if ((this.field.modifiers & 8) != 0) {
  13.          Gen.emitop(184, var3);
  14.          Gen.emit2(Gen.mkref(this.field));
  15.       } else if ((this.field.owner.modifiers & 512) != 0) {
  16.          Gen.emitop(185, var3 - 1);
  17.          Gen.emit2(Gen.mkref(this.field));
  18.          Gen.emit1(var2 + 1);
  19.          Gen.emit1(0);
  20.       } else if (this.base.mode != 4 && (this.field.modifiers & 18) == 0 && !this.field.name.equals(Predef.initS)) {
  21.          Gen.emitop(182, var3 - 1);
  22.          Gen.emit2(Gen.mkref(this.field));
  23.       } else {
  24.          Gen.emitop(183, var3 - 1);
  25.          Gen.emit2(Gen.mkref(this.field));
  26.       }
  27.  
  28.    }
  29.  
  30.    void stash(Typ var1, int var2) {
  31.       if ((this.field.modifiers & 8) == 0) {
  32.          Item.stackItem.stash(Typ.intTyp, var2);
  33.       } else {
  34.          super.stash(Typ.intTyp, var2);
  35.       }
  36.  
  37.    }
  38.  
  39.    void drop(Typ var1) {
  40.       if ((this.field.modifiers & 8) == 0) {
  41.          Gen.emitop(87);
  42.       }
  43.  
  44.    }
  45.  
  46.    void duplicate(Typ var1) {
  47.       if ((this.field.modifiers & 8) == 0) {
  48.          Gen.emitop(89);
  49.       }
  50.  
  51.    }
  52.  
  53.    void store(Typ var1) {
  54.       if (this.field.owner == Gen.code.owner && (this.field.modifiers & 8) != 0 == Gen.code.isStatic) {
  55.          Gen.letInit(((VarObj)this.field).adr);
  56.       }
  57.  
  58.       if ((this.field.modifiers & 8) == 0) {
  59.          Gen.emitop(181, -Gen.width(var1) - 1);
  60.       } else {
  61.          Gen.emitop(179, -Gen.width(var1));
  62.       }
  63.  
  64.       Gen.emit2(Gen.mkref(this.field));
  65.    }
  66.  
  67.    void load(Typ var1) {
  68.       if (this.field.owner == Gen.code.owner && (this.field.modifiers & 8) != 0 == Gen.code.isStatic) {
  69.          Gen.checkInit(this.pos, ((VarObj)this.field).adr);
  70.       }
  71.  
  72.       if ((this.field.modifiers & 8) == 0) {
  73.          Gen.emitop(180, Gen.width(var1) - 1);
  74.       } else {
  75.          Gen.emitop(178, Gen.width(var1));
  76.       }
  77.  
  78.       Gen.emit2(Gen.mkref(this.field));
  79.    }
  80.  
  81.    BasedItem(int var1, Item var2, Obj var3) {
  82.       super(var3 instanceof VarObj ? 7 : 8);
  83.       this.pos = var1;
  84.       this.base = var2;
  85.       this.field = var3;
  86.       if ((var3.modifiers & 8) == 0) {
  87.          var2.load(var3.owner.typ);
  88.       } else if (var2 != null) {
  89.          var2.drop(var3.owner.typ);
  90.       }
  91.  
  92.    }
  93. }
  94.