home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / asm / Instruction.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  11.1 KB  |  867 lines

  1. package sun.tools.asm;
  2.  
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.util.Enumeration;
  6. import sun.tools.java.ClassDeclaration;
  7. import sun.tools.java.CompilerError;
  8. import sun.tools.java.Constants;
  9. import sun.tools.java.Environment;
  10. import sun.tools.java.FieldDefinition;
  11. import sun.tools.java.RuntimeConstants;
  12.  
  13. public class Instruction implements Constants {
  14.    int where;
  15.    // $FF: renamed from: pc int
  16.    int field_0;
  17.    int opc;
  18.    Object value;
  19.    Instruction next;
  20.    boolean flagCondInverted;
  21.    boolean flagNoCovered = false;
  22.  
  23.    public Instruction(int var1, int var2, Object var3, boolean var4) {
  24.       this.where = var1;
  25.       this.opc = var2;
  26.       this.value = var3;
  27.       this.flagCondInverted = var4;
  28.    }
  29.  
  30.    public Instruction(boolean var1, int var2, int var3, Object var4) {
  31.       this.where = var2;
  32.       this.opc = var3;
  33.       this.value = var4;
  34.       this.flagNoCovered = var1;
  35.    }
  36.  
  37.    public Instruction(int var1, int var2, boolean var3) {
  38.       this.where = var1;
  39.       this.opc = var2;
  40.       this.flagNoCovered = var3;
  41.    }
  42.  
  43.    public Instruction(int var1, int var2, Object var3) {
  44.       this.where = var1;
  45.       this.opc = var2;
  46.       this.value = var3;
  47.    }
  48.  
  49.    public int getOpcode() {
  50.       return this.field_0;
  51.    }
  52.  
  53.    public Object getValue() {
  54.       return this.value;
  55.    }
  56.  
  57.    public void setValue(Object var1) {
  58.       this.value = var1;
  59.    }
  60.  
  61.    void optimize(Environment var1) {
  62.       switch (this.opc) {
  63.          case 54:
  64.          case 55:
  65.          case 56:
  66.          case 57:
  67.          case 58:
  68.             if (this.value instanceof LocalVariable && !var1.debug()) {
  69.                this.value = new Integer(((LocalVariable)this.value).slot);
  70.                return;
  71.             }
  72.             break;
  73.          case 153:
  74.          case 154:
  75.          case 155:
  76.          case 156:
  77.          case 157:
  78.          case 158:
  79.          case 198:
  80.          case 199:
  81.             this.value = ((Label)this.value).getDestination();
  82.             if (this.value == this.next) {
  83.                this.opc = 87;
  84.                return;
  85.             }
  86.  
  87.             if (this.next.opc == 167 && this.value == this.next.next) {
  88.                switch (this.opc) {
  89.                   case 153:
  90.                      this.opc = 154;
  91.                      break;
  92.                   case 154:
  93.                      this.opc = 153;
  94.                      break;
  95.                   case 155:
  96.                      this.opc = 156;
  97.                      break;
  98.                   case 156:
  99.                      this.opc = 155;
  100.                      break;
  101.                   case 157:
  102.                      this.opc = 158;
  103.                      break;
  104.                   case 158:
  105.                      this.opc = 157;
  106.                      break;
  107.                   case 198:
  108.                      this.opc = 199;
  109.                      break;
  110.                   case 199:
  111.                      this.opc = 198;
  112.                }
  113.  
  114.                this.flagCondInverted = !this.flagCondInverted;
  115.                this.value = this.next.value;
  116.                this.next.opc = -2;
  117.                return;
  118.             }
  119.             break;
  120.          case 159:
  121.          case 160:
  122.          case 161:
  123.          case 162:
  124.          case 163:
  125.          case 164:
  126.          case 165:
  127.          case 166:
  128.             this.value = ((Label)this.value).getDestination();
  129.             if (this.value == this.next) {
  130.                this.opc = 88;
  131.                return;
  132.             }
  133.  
  134.             if (this.next.opc == 167 && this.value == this.next.next) {
  135.                switch (this.opc) {
  136.                   case 159:
  137.                      this.opc = 160;
  138.                      break;
  139.                   case 160:
  140.                      this.opc = 159;
  141.                      break;
  142.                   case 161:
  143.                      this.opc = 162;
  144.                      break;
  145.                   case 162:
  146.                      this.opc = 161;
  147.                      break;
  148.                   case 163:
  149.                      this.opc = 164;
  150.                      break;
  151.                   case 164:
  152.                      this.opc = 163;
  153.                      break;
  154.                   case 165:
  155.                      this.opc = 166;
  156.                      break;
  157.                   case 166:
  158.                      this.opc = 165;
  159.                }
  160.  
  161.                this.flagCondInverted = !this.flagCondInverted;
  162.                this.value = this.next.value;
  163.                this.next.opc = -2;
  164.                return;
  165.             }
  166.             break;
  167.          case 167:
  168.             Label var10 = (Label)this.value;
  169.             Label var11;
  170.             this.value = var11 = var10.getDestination();
  171.             if (var11 == this.next) {
  172.                this.opc = -2;
  173.                return;
  174.             }
  175.  
  176.             if (var11.next != null && !var1.debug()) {
  177.                switch (var11.next.opc) {
  178.                   case 172:
  179.                   case 173:
  180.                   case 174:
  181.                   case 175:
  182.                   case 176:
  183.                   case 177:
  184.                      this.opc = var11.next.opc;
  185.                      this.value = var11.next.value;
  186.                      return;
  187.                }
  188.             }
  189.             break;
  190.          case 170:
  191.          case 171:
  192.             SwitchData var2 = (SwitchData)this.value;
  193.             var2.defaultLabel = var2.defaultLabel.getDestination();
  194.             Enumeration var3 = var2.tab.keys();
  195.  
  196.             while(var3.hasMoreElements()) {
  197.                Integer var4 = (Integer)var3.nextElement();
  198.                Label var5 = (Label)var2.tab.get(var4);
  199.                var2.tab.put(var4, var5.getDestination());
  200.             }
  201.  
  202.             long var12 = (long)(var1.optimize() ? 2 : 4);
  203.             long var6 = (long)var2.maxValue - (long)var2.minValue;
  204.             long var8 = (long)var2.tab.size();
  205.             this.opc = var6 - var8 <= var8 / var12 ? 170 : 171;
  206.             return;
  207.       }
  208.  
  209.    }
  210.  
  211.    void collect(ConstantPool var1) {
  212.       switch (this.opc) {
  213.          case -3:
  214.             Enumeration var8 = ((TryData)this.value).catches.elements();
  215.  
  216.             while(var8.hasMoreElements()) {
  217.                CatchData var3 = (CatchData)var8.nextElement();
  218.                if (var3.getType() != null) {
  219.                   var1.put(var3.getType());
  220.                }
  221.             }
  222.  
  223.             return;
  224.          case 0:
  225.             if (this.value != null && this.value instanceof ClassDeclaration) {
  226.                var1.put(this.value);
  227.             }
  228.  
  229.             return;
  230.          case 18:
  231.          case 19:
  232.             if (this.value instanceof Integer) {
  233.                int var6 = (Integer)this.value;
  234.                if (var6 >= -1 && var6 <= 5) {
  235.                   this.opc = 3 + var6;
  236.                   return;
  237.                }
  238.  
  239.                if (var6 > -128 && var6 < 128) {
  240.                   this.opc = 16;
  241.                   return;
  242.                }
  243.  
  244.                if (var6 > -32768 && var6 < 32768) {
  245.                   this.opc = 17;
  246.                   return;
  247.                }
  248.             } else if (this.value instanceof Float) {
  249.                float var7 = (Float)this.value;
  250.                if (var7 == 0.0F) {
  251.                   if (Float.floatToIntBits(var7) == 0) {
  252.                      this.opc = 11;
  253.                      return;
  254.                   }
  255.                } else {
  256.                   if (var7 == 1.0F) {
  257.                      this.opc = 12;
  258.                      return;
  259.                   }
  260.  
  261.                   if (var7 == 2.0F) {
  262.                      this.opc = 13;
  263.                      return;
  264.                   }
  265.                }
  266.             }
  267.  
  268.             var1.put(this.value);
  269.             return;
  270.          case 20:
  271.             if (this.value instanceof Long) {
  272.                long var4 = (Long)this.value;
  273.                if (var4 == 0L) {
  274.                   this.opc = 9;
  275.                   return;
  276.                }
  277.  
  278.                if (var4 == 1L) {
  279.                   this.opc = 10;
  280.                   return;
  281.                }
  282.             } else if (this.value instanceof Double) {
  283.                double var5 = (Double)this.value;
  284.                if (var5 == (double)0.0F) {
  285.                   if (Double.doubleToLongBits(var5) == 0L) {
  286.                      this.opc = 14;
  287.                      return;
  288.                   }
  289.                } else if (var5 == (double)1.0F) {
  290.                   this.opc = 15;
  291.                   return;
  292.                }
  293.             }
  294.  
  295.             var1.put(this.value);
  296.             return;
  297.          case 54:
  298.          case 55:
  299.          case 56:
  300.          case 57:
  301.          case 58:
  302.             if (this.value instanceof LocalVariable) {
  303.                FieldDefinition var2 = ((LocalVariable)this.value).field;
  304.                var1.put(var2.getName().toString());
  305.                var1.put(var2.getType().getTypeSignature());
  306.             }
  307.  
  308.             return;
  309.          case 178:
  310.          case 179:
  311.          case 180:
  312.          case 181:
  313.          case 182:
  314.          case 183:
  315.          case 184:
  316.          case 185:
  317.          case 187:
  318.          case 192:
  319.          case 193:
  320.             var1.put(this.value);
  321.             return;
  322.          case 189:
  323.             var1.put(this.value);
  324.             return;
  325.          case 197:
  326.             var1.put(((ArrayData)this.value).type);
  327.             return;
  328.          default:
  329.       }
  330.    }
  331.  
  332.    int balance() {
  333.       switch (this.opc) {
  334.          case -3:
  335.          case -2:
  336.          case -1:
  337.          case 0:
  338.          case 47:
  339.          case 49:
  340.          case 95:
  341.          case 116:
  342.          case 117:
  343.          case 118:
  344.          case 119:
  345.          case 132:
  346.          case 134:
  347.          case 138:
  348.          case 139:
  349.          case 143:
  350.          case 145:
  351.          case 146:
  352.          case 147:
  353.          case 167:
  354.          case 168:
  355.          case 169:
  356.          case 177:
  357.          case 188:
  358.          case 189:
  359.          case 190:
  360.          case 192:
  361.          case 193:
  362.          case 200:
  363.          case 201:
  364.             return 0;
  365.          case 1:
  366.          case 2:
  367.          case 3:
  368.          case 4:
  369.          case 5:
  370.          case 6:
  371.          case 7:
  372.          case 8:
  373.          case 11:
  374.          case 12:
  375.          case 13:
  376.          case 16:
  377.          case 17:
  378.          case 18:
  379.          case 19:
  380.          case 21:
  381.          case 23:
  382.          case 25:
  383.          case 89:
  384.          case 90:
  385.          case 91:
  386.          case 133:
  387.          case 135:
  388.          case 140:
  389.          case 141:
  390.          case 187:
  391.             return 1;
  392.          case 9:
  393.          case 10:
  394.          case 14:
  395.          case 15:
  396.          case 20:
  397.          case 22:
  398.          case 24:
  399.          case 92:
  400.          case 93:
  401.          case 94:
  402.             return 2;
  403.          case 46:
  404.          case 48:
  405.          case 50:
  406.          case 51:
  407.          case 52:
  408.          case 53:
  409.          case 54:
  410.          case 56:
  411.          case 58:
  412.          case 87:
  413.          case 96:
  414.          case 98:
  415.          case 100:
  416.          case 102:
  417.          case 104:
  418.          case 106:
  419.          case 108:
  420.          case 110:
  421.          case 112:
  422.          case 114:
  423.          case 120:
  424.          case 121:
  425.          case 122:
  426.          case 123:
  427.          case 124:
  428.          case 125:
  429.          case 126:
  430.          case 128:
  431.          case 130:
  432.          case 136:
  433.          case 137:
  434.          case 142:
  435.          case 144:
  436.          case 149:
  437.          case 150:
  438.          case 153:
  439.          case 154:
  440.          case 155:
  441.          case 156:
  442.          case 157:
  443.          case 158:
  444.          case 170:
  445.          case 171:
  446.          case 172:
  447.          case 174:
  448.          case 176:
  449.          case 191:
  450.          case 194:
  451.          case 195:
  452.          case 198:
  453.          case 199:
  454.             return -1;
  455.          case 55:
  456.          case 57:
  457.          case 88:
  458.          case 97:
  459.          case 99:
  460.          case 101:
  461.          case 103:
  462.          case 105:
  463.          case 107:
  464.          case 109:
  465.          case 111:
  466.          case 113:
  467.          case 115:
  468.          case 127:
  469.          case 129:
  470.          case 131:
  471.          case 159:
  472.          case 160:
  473.          case 161:
  474.          case 162:
  475.          case 163:
  476.          case 164:
  477.          case 165:
  478.          case 166:
  479.          case 173:
  480.          case 175:
  481.             return -2;
  482.          case 79:
  483.          case 81:
  484.          case 83:
  485.          case 84:
  486.          case 85:
  487.          case 86:
  488.          case 148:
  489.          case 151:
  490.          case 152:
  491.             return -3;
  492.          case 80:
  493.          case 82:
  494.             return -4;
  495.          case 178:
  496.             return ((FieldDefinition)this.value).getType().stackSize();
  497.          case 179:
  498.             return -((FieldDefinition)this.value).getType().stackSize();
  499.          case 180:
  500.             return ((FieldDefinition)this.value).getType().stackSize() - 1;
  501.          case 181:
  502.             return -1 - ((FieldDefinition)this.value).getType().stackSize();
  503.          case 182:
  504.          case 183:
  505.          case 185:
  506.             return ((FieldDefinition)this.value).getType().getReturnType().stackSize() - (((FieldDefinition)this.value).getType().stackSize() + 1);
  507.          case 184:
  508.             return ((FieldDefinition)this.value).getType().getReturnType().stackSize() - ((FieldDefinition)this.value).getType().stackSize();
  509.          case 197:
  510.             return 1 - ((ArrayData)this.value).nargs;
  511.          default:
  512.             throw new CompilerError("invalid opcode: " + this.toString());
  513.       }
  514.    }
  515.  
  516.    int size(ConstantPool var1) {
  517.       switch (this.opc) {
  518.          case -3:
  519.          case -2:
  520.          case -1:
  521.             return 0;
  522.          case 0:
  523.             if (this.value != null && !(this.value instanceof Integer)) {
  524.                return 2;
  525.             }
  526.  
  527.             return 1;
  528.          case 16:
  529.          case 188:
  530.             return 2;
  531.          case 17:
  532.          case 153:
  533.          case 154:
  534.          case 155:
  535.          case 156:
  536.          case 157:
  537.          case 158:
  538.          case 159:
  539.          case 160:
  540.          case 161:
  541.          case 162:
  542.          case 163:
  543.          case 164:
  544.          case 165:
  545.          case 166:
  546.          case 167:
  547.          case 168:
  548.          case 198:
  549.          case 199:
  550.             return 3;
  551.          case 18:
  552.          case 19:
  553.             if (var1.index(this.value) < 256) {
  554.                this.opc = 18;
  555.                return 2;
  556.             }
  557.  
  558.             this.opc = 19;
  559.             return 3;
  560.          case 20:
  561.          case 178:
  562.          case 179:
  563.          case 180:
  564.          case 181:
  565.          case 182:
  566.          case 183:
  567.          case 184:
  568.          case 187:
  569.          case 189:
  570.          case 192:
  571.          case 193:
  572.             return 3;
  573.          case 21:
  574.          case 22:
  575.          case 23:
  576.          case 24:
  577.          case 25:
  578.             int var8 = ((Number)this.value).intValue();
  579.             if (var8 < 4) {
  580.                if (var8 < 0) {
  581.                   throw new CompilerError("invalid slot: " + this.toString());
  582.                }
  583.  
  584.                this.opc = 26 + (this.opc - 21) * 4 + var8;
  585.                return 1;
  586.             } else {
  587.                if (var8 <= 255) {
  588.                   return 2;
  589.                }
  590.  
  591.                this.opc += 256;
  592.                return 4;
  593.             }
  594.          case 54:
  595.          case 55:
  596.          case 56:
  597.          case 57:
  598.          case 58:
  599.             int var7 = this.value instanceof Number ? ((Number)this.value).intValue() : ((LocalVariable)this.value).slot;
  600.             if (var7 < 4) {
  601.                if (var7 < 0) {
  602.                   throw new CompilerError("invalid slot: " + this.toString());
  603.                }
  604.  
  605.                this.opc = 59 + (this.opc - 54) * 4 + var7;
  606.                return 1;
  607.             } else {
  608.                if (var7 <= 255) {
  609.                   return 2;
  610.                }
  611.  
  612.                this.opc += 256;
  613.                return 4;
  614.             }
  615.          case 132:
  616.             int var6 = ((int[])this.value)[0];
  617.             int var10 = ((int[])this.value)[1];
  618.             if (var6 < 0) {
  619.                throw new CompilerError("invalid slot: " + this.toString());
  620.             } else {
  621.                if (var6 <= 255 && (byte)var10 == var10) {
  622.                   return 3;
  623.                }
  624.  
  625.                this.opc += 256;
  626.                return 6;
  627.             }
  628.          case 169:
  629.             int var5 = ((Number)this.value).intValue();
  630.             if (var5 <= 255) {
  631.                if (var5 < 0) {
  632.                   throw new CompilerError("invalid slot: " + this.toString());
  633.                }
  634.  
  635.                return 2;
  636.             }
  637.  
  638.             this.opc += 256;
  639.             return 4;
  640.          case 170:
  641.             SwitchData var4 = (SwitchData)this.value;
  642.  
  643.             int var9;
  644.             for(var9 = 1; (this.field_0 + var9) % 4 != 0; ++var9) {
  645.             }
  646.  
  647.             return var9 + 16 + (var4.maxValue - var4.minValue) * 4;
  648.          case 171:
  649.             SwitchData var2 = (SwitchData)this.value;
  650.  
  651.             int var3;
  652.             for(var3 = 1; (this.field_0 + var3) % 4 != 0; ++var3) {
  653.             }
  654.  
  655.             return var3 + 8 + var2.tab.size() * 8;
  656.          case 185:
  657.          case 200:
  658.          case 201:
  659.             return 5;
  660.          case 197:
  661.             return 4;
  662.          default:
  663.             return 1;
  664.       }
  665.    }
  666.  
  667.    void write(DataOutputStream var1, ConstantPool var2) throws IOException {
  668.       switch (this.opc) {
  669.          case 0:
  670.             if (this.value != null) {
  671.                if (this.value instanceof Integer) {
  672.                   var1.writeByte((Integer)this.value);
  673.                   return;
  674.                }
  675.  
  676.                var1.writeShort(var2.index(this.value));
  677.                return;
  678.             }
  679.          default:
  680.             var1.writeByte(this.opc);
  681.          case -3:
  682.          case -2:
  683.          case -1:
  684.             return;
  685.          case 16:
  686.          case 188:
  687.             var1.writeByte(this.opc);
  688.             var1.writeByte(((Number)this.value).intValue());
  689.             return;
  690.          case 17:
  691.             var1.writeByte(this.opc);
  692.             var1.writeShort(((Number)this.value).intValue());
  693.             return;
  694.          case 18:
  695.             var1.writeByte(this.opc);
  696.             var1.writeByte(var2.index(this.value));
  697.             return;
  698.          case 19:
  699.          case 20:
  700.          case 178:
  701.          case 179:
  702.          case 180:
  703.          case 181:
  704.          case 182:
  705.          case 183:
  706.          case 184:
  707.          case 187:
  708.          case 192:
  709.          case 193:
  710.             var1.writeByte(this.opc);
  711.             var1.writeShort(var2.index(this.value));
  712.             return;
  713.          case 21:
  714.          case 22:
  715.          case 23:
  716.          case 24:
  717.          case 25:
  718.          case 169:
  719.             var1.writeByte(this.opc);
  720.             var1.writeByte(((Number)this.value).intValue());
  721.             return;
  722.          case 54:
  723.          case 55:
  724.          case 56:
  725.          case 57:
  726.          case 58:
  727.             var1.writeByte(this.opc);
  728.             var1.writeByte(this.value instanceof Number ? ((Number)this.value).intValue() : ((LocalVariable)this.value).slot);
  729.             return;
  730.          case 132:
  731.             var1.writeByte(this.opc);
  732.             var1.writeByte(((int[])this.value)[0]);
  733.             var1.writeByte(((int[])this.value)[1]);
  734.             return;
  735.          case 153:
  736.          case 154:
  737.          case 155:
  738.          case 156:
  739.          case 157:
  740.          case 158:
  741.          case 159:
  742.          case 160:
  743.          case 161:
  744.          case 162:
  745.          case 163:
  746.          case 164:
  747.          case 165:
  748.          case 166:
  749.          case 167:
  750.          case 168:
  751.          case 198:
  752.          case 199:
  753.             var1.writeByte(this.opc);
  754.             var1.writeShort(((Instruction)this.value).field_0 - this.field_0);
  755.             return;
  756.          case 170:
  757.             SwitchData var8 = (SwitchData)this.value;
  758.             var1.writeByte(this.opc);
  759.  
  760.             for(int var9 = 1; (this.field_0 + var9) % 4 != 0; ++var9) {
  761.                var1.writeByte(0);
  762.             }
  763.  
  764.             var1.writeInt(var8.defaultLabel.field_0 - this.field_0);
  765.             var1.writeInt(var8.minValue);
  766.             var1.writeInt(var8.maxValue);
  767.  
  768.             for(int var10 = var8.minValue; var10 <= var8.maxValue; ++var10) {
  769.                Label var11 = var8.get(var10);
  770.                int var7 = var11 != null ? var11.field_0 : var8.defaultLabel.field_0;
  771.                var1.writeInt(var7 - this.field_0);
  772.             }
  773.  
  774.             return;
  775.          case 171:
  776.             SwitchData var3 = (SwitchData)this.value;
  777.             var1.writeByte(this.opc);
  778.  
  779.             for(int var4 = this.field_0 + 1; var4 % 4 != 0; ++var4) {
  780.                var1.writeByte(0);
  781.             }
  782.  
  783.             var1.writeInt(var3.defaultLabel.field_0 - this.field_0);
  784.             var1.writeInt(var3.tab.size());
  785.             Enumeration var5 = var3.sortedKeys();
  786.  
  787.             while(var5.hasMoreElements()) {
  788.                Integer var6 = (Integer)var5.nextElement();
  789.                var1.writeInt(var6);
  790.                var1.writeInt(var3.get(var6).field_0 - this.field_0);
  791.             }
  792.  
  793.             return;
  794.          case 185:
  795.             var1.writeByte(this.opc);
  796.             var1.writeShort(var2.index(this.value));
  797.             var1.writeByte(((FieldDefinition)this.value).getType().stackSize() + 1);
  798.             var1.writeByte(0);
  799.             return;
  800.          case 189:
  801.             var1.writeByte(this.opc);
  802.             var1.writeShort(var2.index(this.value));
  803.             return;
  804.          case 197:
  805.             var1.writeByte(this.opc);
  806.             var1.writeShort(var2.index(((ArrayData)this.value).type));
  807.             var1.writeByte(((ArrayData)this.value).nargs);
  808.             return;
  809.          case 200:
  810.          case 201:
  811.             var1.writeByte(this.opc);
  812.             var1.writeLong((long)(((Instruction)this.value).field_0 - this.field_0));
  813.             return;
  814.          case 277:
  815.          case 278:
  816.          case 279:
  817.          case 280:
  818.          case 281:
  819.          case 425:
  820.             var1.writeByte(196);
  821.             var1.writeByte(this.opc - 256);
  822.             var1.writeShort(((Number)this.value).intValue());
  823.             return;
  824.          case 310:
  825.          case 311:
  826.          case 312:
  827.          case 313:
  828.          case 314:
  829.             var1.writeByte(196);
  830.             var1.writeByte(this.opc - 256);
  831.             var1.writeShort(this.value instanceof Number ? ((Number)this.value).intValue() : ((LocalVariable)this.value).slot);
  832.             return;
  833.          case 388:
  834.             var1.writeByte(196);
  835.             var1.writeByte(this.opc - 256);
  836.             var1.writeShort(((int[])this.value)[0]);
  837.             var1.writeShort(((int[])this.value)[1]);
  838.       }
  839.    }
  840.  
  841.    public String toString() {
  842.       String var1 = (this.where >> 18) + ":\t";
  843.       switch (this.opc) {
  844.          case -3:
  845.             return var1 + "try " + ((TryData)this.value).getEndLabel().hashCode();
  846.          case -2:
  847.             return var1 + "dead";
  848.          case 132:
  849.             int var2 = ((int[])this.value)[0];
  850.             int var3 = ((int[])this.value)[1];
  851.             return var1 + RuntimeConstants.opcNames[this.opc] + " " + var2 + ", " + var3;
  852.          default:
  853.             if (this.value != null) {
  854.                if (this.value instanceof Label) {
  855.                   return var1 + RuntimeConstants.opcNames[this.opc] + " " + this.value.toString();
  856.                } else if (this.value instanceof Instruction) {
  857.                   return var1 + RuntimeConstants.opcNames[this.opc] + " " + this.value.hashCode();
  858.                } else {
  859.                   return this.value instanceof String ? var1 + RuntimeConstants.opcNames[this.opc] + " \"" + this.value + "\"" : var1 + RuntimeConstants.opcNames[this.opc] + " " + this.value;
  860.                }
  861.             } else {
  862.                return var1 + RuntimeConstants.opcNames[this.opc];
  863.             }
  864.       }
  865.    }
  866. }
  867.