home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / netscape / javascript / Label.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  975 b   |  56 lines

  1. package com.netscape.javascript;
  2.  
  3. public class Label {
  4.    private static final int FIXUPTABLE_SIZE = 8;
  5.    private static final boolean DEBUG = true;
  6.    private short itsPC = -1;
  7.    private int[] itsFixupTable;
  8.    private int itsFixupTableTop;
  9.  
  10.    public void addFixup(int var1) {
  11.       if (this.itsFixupTable == null) {
  12.          this.itsFixupTableTop = 1;
  13.          this.itsFixupTable = new int[8];
  14.          this.itsFixupTable[0] = var1;
  15.       } else {
  16.          if (this.itsFixupTableTop == this.itsFixupTable.length) {
  17.             int var2 = this.itsFixupTable.length;
  18.             int[] var3 = new int[var2 + 8];
  19.             System.arraycopy(this.itsFixupTable, 0, var3, 0, var2);
  20.             this.itsFixupTable = var3;
  21.          }
  22.  
  23.          this.itsFixupTable[this.itsFixupTableTop++] = var1;
  24.       }
  25.    }
  26.  
  27.    public void fixGotos(byte[] var1) {
  28.       if (this.itsPC == -1 && this.itsFixupTable != null) {
  29.          throw new RuntimeException("Unlocated label");
  30.       } else {
  31.          if (this.itsFixupTable != null) {
  32.             for(int var2 = 0; var2 < this.itsFixupTableTop; ++var2) {
  33.                int var3 = this.itsFixupTable[var2];
  34.                short var4 = (short)(this.itsPC - (var3 - 1));
  35.                var1[var3++] = (byte)(var4 >> 8);
  36.                var1[var3] = (byte)var4;
  37.             }
  38.          }
  39.  
  40.          this.itsFixupTable = null;
  41.       }
  42.    }
  43.  
  44.    public short getPC() {
  45.       return this.itsPC;
  46.    }
  47.  
  48.    public void setPC(short var1) {
  49.       if (this.itsPC != -1 && this.itsPC != var1) {
  50.          throw new RuntimeException("Duplicate label");
  51.       } else {
  52.          this.itsPC = var1;
  53.       }
  54.    }
  55. }
  56.