home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- class Code implements Constants {
- int nvars = 0;
- VarObj[] lvar = new VarObj[4];
- char[] lvar_end_pc = new char[4];
- char[] lvar_start_pc = new char[4];
- int nlines = 0;
- char[] line_number = new char[32];
- char[] line_start_pc = new char[32];
- int ncatches = 0;
- char[] exc_catch_type = new char[4];
- char[] exc_handler_pc = new char[4];
- char[] exc_end_pc = new char[4];
- char[] exc_start_pc = new char[4];
- // $FF: renamed from: cp int
- int field_0 = 0;
- byte[] code = new byte[64];
- int max_locals = 0;
- int max_stack = 0;
- boolean fatCode;
- int max_fields;
- Bits uninits;
- boolean isStatic;
- Obj owner;
-
- void setEndPc(int var1, int var2) {
- for(int var3 = var1; var3 < this.nvars; ++var3) {
- if (this.lvar_end_pc[var3] == '\uffff') {
- this.lvar_end_pc[var3] = (char)var2;
- }
- }
-
- }
-
- void addLocalVar(int var1, VarObj var2) {
- if (Switches.debugInfo) {
- if (this.nvars == this.lvar_start_pc.length) {
- char[] var3 = new char[this.nvars * 2];
- char[] var4 = new char[this.nvars * 2];
- VarObj[] var5 = new VarObj[this.nvars * 2];
-
- for(int var6 = 0; var6 < this.nvars; ++var6) {
- var3[var6] = this.lvar_start_pc[var6];
- var4[var6] = this.lvar_end_pc[var6];
- var5[var6] = this.lvar[var6];
- }
-
- this.lvar_start_pc = var3;
- this.lvar_end_pc = var4;
- this.lvar = var5;
- }
-
- this.lvar_start_pc[this.nvars] = (char)var1;
- this.lvar_end_pc[this.nvars] = '\uffff';
- this.lvar[this.nvars] = var2;
- ++this.nvars;
- }
-
- }
-
- void addLineNumber(int var1, int var2) {
- if (this.nlines > 0 && this.line_start_pc[this.nlines - 1] == var1) {
- --this.nlines;
- }
-
- if (this.nlines == this.line_start_pc.length) {
- char[] var3 = new char[this.nlines * 2];
- char[] var4 = new char[this.nlines * 2];
-
- for(int var5 = 0; var5 < this.nlines; ++var5) {
- var3[var5] = this.line_start_pc[var5];
- var4[var5] = this.line_number[var5];
- }
-
- this.line_start_pc = var3;
- this.line_number = var4;
- }
-
- this.line_start_pc[this.nlines] = (char)var1;
- this.line_number[this.nlines] = (char)var2;
- ++this.nlines;
- }
-
- void addCatch(int var1, int var2, int var3, int var4) {
- if (this.ncatches == this.exc_start_pc.length) {
- char[] var5 = new char[this.ncatches * 2];
- char[] var6 = new char[this.ncatches * 2];
- char[] var7 = new char[this.ncatches * 2];
- char[] var8 = new char[this.ncatches * 2];
-
- for(int var9 = 0; var9 < this.ncatches; ++var9) {
- var5[var9] = this.exc_start_pc[var9];
- var6[var9] = this.exc_end_pc[var9];
- var7[var9] = this.exc_handler_pc[var9];
- var8[var9] = this.exc_catch_type[var9];
- }
-
- this.exc_start_pc = var5;
- this.exc_end_pc = var6;
- this.exc_handler_pc = var7;
- this.exc_catch_type = var8;
- }
-
- this.exc_start_pc[this.ncatches] = (char)var1;
- this.exc_end_pc[this.ncatches] = (char)var2;
- this.exc_handler_pc[this.ncatches] = (char)var3;
- this.exc_catch_type[this.ncatches] = (char)var4;
- ++this.ncatches;
- }
-
- void addCode(byte var1) {
- if (this.field_0 == this.code.length) {
- byte[] var2 = new byte[this.field_0 * 2];
- System.arraycopy(this.code, 0, var2, 0, this.field_0);
- this.code = var2;
- }
-
- this.code[this.field_0++] = var1;
- }
-
- Code(Obj var1, boolean var2, boolean var3) {
- this.owner = var1;
- this.isStatic = var2;
- this.uninits = new Bits();
- this.max_fields = 0;
- this.fatCode = var3;
- }
- }
-