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

  1. package espresso;
  2.  
  3. class Code implements Constants {
  4.    int nvars = 0;
  5.    VarObj[] lvar = new VarObj[4];
  6.    char[] lvar_end_pc = new char[4];
  7.    char[] lvar_start_pc = new char[4];
  8.    int nlines = 0;
  9.    char[] line_number = new char[32];
  10.    char[] line_start_pc = new char[32];
  11.    int ncatches = 0;
  12.    char[] exc_catch_type = new char[4];
  13.    char[] exc_handler_pc = new char[4];
  14.    char[] exc_end_pc = new char[4];
  15.    char[] exc_start_pc = new char[4];
  16.    // $FF: renamed from: cp int
  17.    int field_0 = 0;
  18.    byte[] code = new byte[64];
  19.    int max_locals = 0;
  20.    int max_stack = 0;
  21.    boolean fatCode;
  22.    int max_fields;
  23.    Bits uninits;
  24.    boolean isStatic;
  25.    Obj owner;
  26.  
  27.    void setEndPc(int var1, int var2) {
  28.       for(int var3 = var1; var3 < this.nvars; ++var3) {
  29.          if (this.lvar_end_pc[var3] == '\uffff') {
  30.             this.lvar_end_pc[var3] = (char)var2;
  31.          }
  32.       }
  33.  
  34.    }
  35.  
  36.    void addLocalVar(int var1, VarObj var2) {
  37.       if (Switches.debugInfo) {
  38.          if (this.nvars == this.lvar_start_pc.length) {
  39.             char[] var3 = new char[this.nvars * 2];
  40.             char[] var4 = new char[this.nvars * 2];
  41.             VarObj[] var5 = new VarObj[this.nvars * 2];
  42.  
  43.             for(int var6 = 0; var6 < this.nvars; ++var6) {
  44.                var3[var6] = this.lvar_start_pc[var6];
  45.                var4[var6] = this.lvar_end_pc[var6];
  46.                var5[var6] = this.lvar[var6];
  47.             }
  48.  
  49.             this.lvar_start_pc = var3;
  50.             this.lvar_end_pc = var4;
  51.             this.lvar = var5;
  52.          }
  53.  
  54.          this.lvar_start_pc[this.nvars] = (char)var1;
  55.          this.lvar_end_pc[this.nvars] = '\uffff';
  56.          this.lvar[this.nvars] = var2;
  57.          ++this.nvars;
  58.       }
  59.  
  60.    }
  61.  
  62.    void addLineNumber(int var1, int var2) {
  63.       if (this.nlines > 0 && this.line_start_pc[this.nlines - 1] == var1) {
  64.          --this.nlines;
  65.       }
  66.  
  67.       if (this.nlines == this.line_start_pc.length) {
  68.          char[] var3 = new char[this.nlines * 2];
  69.          char[] var4 = new char[this.nlines * 2];
  70.  
  71.          for(int var5 = 0; var5 < this.nlines; ++var5) {
  72.             var3[var5] = this.line_start_pc[var5];
  73.             var4[var5] = this.line_number[var5];
  74.          }
  75.  
  76.          this.line_start_pc = var3;
  77.          this.line_number = var4;
  78.       }
  79.  
  80.       this.line_start_pc[this.nlines] = (char)var1;
  81.       this.line_number[this.nlines] = (char)var2;
  82.       ++this.nlines;
  83.    }
  84.  
  85.    void addCatch(int var1, int var2, int var3, int var4) {
  86.       if (this.ncatches == this.exc_start_pc.length) {
  87.          char[] var5 = new char[this.ncatches * 2];
  88.          char[] var6 = new char[this.ncatches * 2];
  89.          char[] var7 = new char[this.ncatches * 2];
  90.          char[] var8 = new char[this.ncatches * 2];
  91.  
  92.          for(int var9 = 0; var9 < this.ncatches; ++var9) {
  93.             var5[var9] = this.exc_start_pc[var9];
  94.             var6[var9] = this.exc_end_pc[var9];
  95.             var7[var9] = this.exc_handler_pc[var9];
  96.             var8[var9] = this.exc_catch_type[var9];
  97.          }
  98.  
  99.          this.exc_start_pc = var5;
  100.          this.exc_end_pc = var6;
  101.          this.exc_handler_pc = var7;
  102.          this.exc_catch_type = var8;
  103.       }
  104.  
  105.       this.exc_start_pc[this.ncatches] = (char)var1;
  106.       this.exc_end_pc[this.ncatches] = (char)var2;
  107.       this.exc_handler_pc[this.ncatches] = (char)var3;
  108.       this.exc_catch_type[this.ncatches] = (char)var4;
  109.       ++this.ncatches;
  110.    }
  111.  
  112.    void addCode(byte var1) {
  113.       if (this.field_0 == this.code.length) {
  114.          byte[] var2 = new byte[this.field_0 * 2];
  115.          System.arraycopy(this.code, 0, var2, 0, this.field_0);
  116.          this.code = var2;
  117.       }
  118.  
  119.       this.code[this.field_0++] = var1;
  120.    }
  121.  
  122.    Code(Obj var1, boolean var2, boolean var3) {
  123.       this.owner = var1;
  124.       this.isStatic = var2;
  125.       this.uninits = new Bits();
  126.       this.max_fields = 0;
  127.       this.fatCode = var3;
  128.    }
  129. }
  130.