JavaDecompiler.st
author cg
Tue, 16 Apr 1996 13:34:16 +0000
changeset 6 b23a6474754f
child 18 6c07dc4b1118
permissions -rw-r--r--
intitial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#JavaDecompiler
b23a6474754f intitial checkin
cg
parents:
diff changeset
     2
	instanceVariableNames:'code pc javaMethod'
b23a6474754f intitial checkin
cg
parents:
diff changeset
     3
	classVariableNames:'DecoderTable'
b23a6474754f intitial checkin
cg
parents:
diff changeset
     4
	poolDictionaries:''
b23a6474754f intitial checkin
cg
parents:
diff changeset
     5
	category:'Java-Support'
b23a6474754f intitial checkin
cg
parents:
diff changeset
     6
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
     7
b23a6474754f intitial checkin
cg
parents:
diff changeset
     8
b23a6474754f intitial checkin
cg
parents:
diff changeset
     9
!JavaDecompiler class methodsFor:'initialization'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
    10
b23a6474754f intitial checkin
cg
parents:
diff changeset
    11
initialize
b23a6474754f intitial checkin
cg
parents:
diff changeset
    12
    DecoderTable := #(
b23a6474754f intitial checkin
cg
parents:
diff changeset
    13
        (nop)                                   "/ 0
b23a6474754f intitial checkin
cg
parents:
diff changeset
    14
        (aconst_null)                           "/ 1
b23a6474754f intitial checkin
cg
parents:
diff changeset
    15
        (iconst_m1)                             "/ 2
b23a6474754f intitial checkin
cg
parents:
diff changeset
    16
        (iconst_0)                              "/ 3
b23a6474754f intitial checkin
cg
parents:
diff changeset
    17
        (iconst_1)                              "/ 4
b23a6474754f intitial checkin
cg
parents:
diff changeset
    18
        (iconst_2)                              "/ 5
b23a6474754f intitial checkin
cg
parents:
diff changeset
    19
        (iconst_3)                              "/ 6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    20
        (iconst_4)                              "/ 7
b23a6474754f intitial checkin
cg
parents:
diff changeset
    21
        (iconst_5)                              "/ 8
b23a6474754f intitial checkin
cg
parents:
diff changeset
    22
        (lconst_0)                              "/ 9
b23a6474754f intitial checkin
cg
parents:
diff changeset
    23
        
b23a6474754f intitial checkin
cg
parents:
diff changeset
    24
        (lconst_1)                              "/ 10
b23a6474754f intitial checkin
cg
parents:
diff changeset
    25
        (fconst_0)                              "/ 11
b23a6474754f intitial checkin
cg
parents:
diff changeset
    26
        (fconst_1)                              "/ 12
b23a6474754f intitial checkin
cg
parents:
diff changeset
    27
        (fconst_2)                              "/ 13
b23a6474754f intitial checkin
cg
parents:
diff changeset
    28
        (dconst_0)                              "/ 14
b23a6474754f intitial checkin
cg
parents:
diff changeset
    29
        (dconst_1)                              "/ 15
b23a6474754f intitial checkin
cg
parents:
diff changeset
    30
        (bipush signedByte)                     "/ 16
b23a6474754f intitial checkin
cg
parents:
diff changeset
    31
        (sipush signedShort)                    "/ 17
b23a6474754f intitial checkin
cg
parents:
diff changeset
    32
        (ldc1 constIndexByte)                   "/ 18
b23a6474754f intitial checkin
cg
parents:
diff changeset
    33
        (ldc2 constIndexShort)                  "/ 19
b23a6474754f intitial checkin
cg
parents:
diff changeset
    34
b23a6474754f intitial checkin
cg
parents:
diff changeset
    35
        (ldc2w constIndexShort)                 "/ 20
b23a6474754f intitial checkin
cg
parents:
diff changeset
    36
        (iload localIndexByte)                  "/ 21
b23a6474754f intitial checkin
cg
parents:
diff changeset
    37
        (lload localIndexByte)                  "/ 22
b23a6474754f intitial checkin
cg
parents:
diff changeset
    38
        (fload localIndexByte)                  "/ 23
b23a6474754f intitial checkin
cg
parents:
diff changeset
    39
        (dload localIndexByte)                  "/ 24
b23a6474754f intitial checkin
cg
parents:
diff changeset
    40
        (aload localIndexByte)                  "/ 25
b23a6474754f intitial checkin
cg
parents:
diff changeset
    41
        nil                                     "/ 26
b23a6474754f intitial checkin
cg
parents:
diff changeset
    42
        (iload_1)                               "/ 27
b23a6474754f intitial checkin
cg
parents:
diff changeset
    43
        (iload_2)                               "/ 28
b23a6474754f intitial checkin
cg
parents:
diff changeset
    44
        (iload_3)                               "/ 29
b23a6474754f intitial checkin
cg
parents:
diff changeset
    45
b23a6474754f intitial checkin
cg
parents:
diff changeset
    46
        (lload_0)                               "/ 30
b23a6474754f intitial checkin
cg
parents:
diff changeset
    47
        (lload_1)                               "/ 31
b23a6474754f intitial checkin
cg
parents:
diff changeset
    48
        (lload_2)                               "/ 32
b23a6474754f intitial checkin
cg
parents:
diff changeset
    49
        (lload_3)                               "/ 33
b23a6474754f intitial checkin
cg
parents:
diff changeset
    50
        (fload_0)                               "/ 34
b23a6474754f intitial checkin
cg
parents:
diff changeset
    51
        (fload_1)                               "/ 35
b23a6474754f intitial checkin
cg
parents:
diff changeset
    52
        (fload_2)                               "/ 36
b23a6474754f intitial checkin
cg
parents:
diff changeset
    53
        (fload_3)                               "/ 37
b23a6474754f intitial checkin
cg
parents:
diff changeset
    54
        (dload_0)                               "/ 38
b23a6474754f intitial checkin
cg
parents:
diff changeset
    55
        (dload_1)                               "/ 39
b23a6474754f intitial checkin
cg
parents:
diff changeset
    56
b23a6474754f intitial checkin
cg
parents:
diff changeset
    57
        (dload_2)                               "/ 40
b23a6474754f intitial checkin
cg
parents:
diff changeset
    58
        (dload_3)                               "/ 41
b23a6474754f intitial checkin
cg
parents:
diff changeset
    59
        (aload_0)                               "/ 42
b23a6474754f intitial checkin
cg
parents:
diff changeset
    60
        (aload_1)                               "/ 43
b23a6474754f intitial checkin
cg
parents:
diff changeset
    61
        (aload_2)                               "/ 44
b23a6474754f intitial checkin
cg
parents:
diff changeset
    62
        (aload_3)                               "/ 45
b23a6474754f intitial checkin
cg
parents:
diff changeset
    63
        (iaload)                                "/ 46
b23a6474754f intitial checkin
cg
parents:
diff changeset
    64
        (laload)                                "/ 47
b23a6474754f intitial checkin
cg
parents:
diff changeset
    65
        (faload)                                "/ 48
b23a6474754f intitial checkin
cg
parents:
diff changeset
    66
        (daload)                                "/ 49
b23a6474754f intitial checkin
cg
parents:
diff changeset
    67
b23a6474754f intitial checkin
cg
parents:
diff changeset
    68
        (aaload)                                "/ 50
b23a6474754f intitial checkin
cg
parents:
diff changeset
    69
        (baload)                                "/ 51
b23a6474754f intitial checkin
cg
parents:
diff changeset
    70
        (caload)                                "/ 52
b23a6474754f intitial checkin
cg
parents:
diff changeset
    71
        (saload)                                "/ 53
b23a6474754f intitial checkin
cg
parents:
diff changeset
    72
        (istore localIndexByte)                 "/ 54
b23a6474754f intitial checkin
cg
parents:
diff changeset
    73
        (lstore localIndexByte)                 "/ 55
b23a6474754f intitial checkin
cg
parents:
diff changeset
    74
        (fstore localIndexByte)                 "/ 56
b23a6474754f intitial checkin
cg
parents:
diff changeset
    75
        (dstore localIndexByte)                 "/ 57
b23a6474754f intitial checkin
cg
parents:
diff changeset
    76
        (astore localIndexByte)                 "/ 58
b23a6474754f intitial checkin
cg
parents:
diff changeset
    77
        (istore_0)                              "/ 59
b23a6474754f intitial checkin
cg
parents:
diff changeset
    78
b23a6474754f intitial checkin
cg
parents:
diff changeset
    79
        (istore_1)                              "/ 60
b23a6474754f intitial checkin
cg
parents:
diff changeset
    80
        (istore_2)                              "/ 61
b23a6474754f intitial checkin
cg
parents:
diff changeset
    81
        (istore_3)                              "/ 62
b23a6474754f intitial checkin
cg
parents:
diff changeset
    82
        (lstore_0)                              "/ 63
b23a6474754f intitial checkin
cg
parents:
diff changeset
    83
        (lstore_1)                              "/ 64
b23a6474754f intitial checkin
cg
parents:
diff changeset
    84
        (lstore_2)                              "/ 65
b23a6474754f intitial checkin
cg
parents:
diff changeset
    85
        (lstore_3)                              "/ 66
b23a6474754f intitial checkin
cg
parents:
diff changeset
    86
        (fstore_0)                              "/ 67
b23a6474754f intitial checkin
cg
parents:
diff changeset
    87
        (fstore_1)                              "/ 68
b23a6474754f intitial checkin
cg
parents:
diff changeset
    88
        (fstore_2)                              "/ 69
b23a6474754f intitial checkin
cg
parents:
diff changeset
    89
b23a6474754f intitial checkin
cg
parents:
diff changeset
    90
        (fstore_3)                              "/ 70
b23a6474754f intitial checkin
cg
parents:
diff changeset
    91
        (dstore_0)                              "/ 71
b23a6474754f intitial checkin
cg
parents:
diff changeset
    92
        (dstore_1)                              "/ 72
b23a6474754f intitial checkin
cg
parents:
diff changeset
    93
        (dstore_2)                              "/ 73
b23a6474754f intitial checkin
cg
parents:
diff changeset
    94
        (dstore_3)                              "/ 74
b23a6474754f intitial checkin
cg
parents:
diff changeset
    95
        (astore_0)                              "/ 75
b23a6474754f intitial checkin
cg
parents:
diff changeset
    96
        (astore_1)                              "/ 76
b23a6474754f intitial checkin
cg
parents:
diff changeset
    97
        (astore_2)                              "/ 77
b23a6474754f intitial checkin
cg
parents:
diff changeset
    98
        (astore_3)                              "/ 78
b23a6474754f intitial checkin
cg
parents:
diff changeset
    99
        (iastore)                               "/ 79
b23a6474754f intitial checkin
cg
parents:
diff changeset
   100
b23a6474754f intitial checkin
cg
parents:
diff changeset
   101
        (lastore)                               "/ 80
b23a6474754f intitial checkin
cg
parents:
diff changeset
   102
        (fastore)                               "/ 81
b23a6474754f intitial checkin
cg
parents:
diff changeset
   103
        (dastore)                               "/ 82
b23a6474754f intitial checkin
cg
parents:
diff changeset
   104
        (aastore)                               "/ 83
b23a6474754f intitial checkin
cg
parents:
diff changeset
   105
        (bastore)                               "/ 84
b23a6474754f intitial checkin
cg
parents:
diff changeset
   106
        (castore)                               "/ 85
b23a6474754f intitial checkin
cg
parents:
diff changeset
   107
        (sastore)                               "/ 86
b23a6474754f intitial checkin
cg
parents:
diff changeset
   108
        (pop)                                   "/ 87
b23a6474754f intitial checkin
cg
parents:
diff changeset
   109
        (pop2)                                  "/ 88
b23a6474754f intitial checkin
cg
parents:
diff changeset
   110
        (dup)                                   "/ 89
b23a6474754f intitial checkin
cg
parents:
diff changeset
   111
b23a6474754f intitial checkin
cg
parents:
diff changeset
   112
        (dup_x1)                                "/ 90
b23a6474754f intitial checkin
cg
parents:
diff changeset
   113
        (dup_x2)                                "/ 91
b23a6474754f intitial checkin
cg
parents:
diff changeset
   114
        (dup2)                                  "/ 92
b23a6474754f intitial checkin
cg
parents:
diff changeset
   115
        (dup2_x1)                               "/ 93
b23a6474754f intitial checkin
cg
parents:
diff changeset
   116
        (dup2_x2)                               "/ 94
b23a6474754f intitial checkin
cg
parents:
diff changeset
   117
        (swap)                                  "/ 95
b23a6474754f intitial checkin
cg
parents:
diff changeset
   118
        (iadd)                                  "/ 96
b23a6474754f intitial checkin
cg
parents:
diff changeset
   119
        (ladd)                                  "/ 97
b23a6474754f intitial checkin
cg
parents:
diff changeset
   120
        (fadd)                                  "/ 98
b23a6474754f intitial checkin
cg
parents:
diff changeset
   121
        (dadd)                                  "/ 99
b23a6474754f intitial checkin
cg
parents:
diff changeset
   122
b23a6474754f intitial checkin
cg
parents:
diff changeset
   123
        (isub)                                  "/ 100
b23a6474754f intitial checkin
cg
parents:
diff changeset
   124
        (lsub)                                  "/ 101
b23a6474754f intitial checkin
cg
parents:
diff changeset
   125
        (fsub)                                  "/ 102
b23a6474754f intitial checkin
cg
parents:
diff changeset
   126
        (dsub)                                  "/ 103
b23a6474754f intitial checkin
cg
parents:
diff changeset
   127
        (imul)                                  "/ 104
b23a6474754f intitial checkin
cg
parents:
diff changeset
   128
        (lmul)                                  "/ 105
b23a6474754f intitial checkin
cg
parents:
diff changeset
   129
        (fmul)                                  "/ 106
b23a6474754f intitial checkin
cg
parents:
diff changeset
   130
        (dmul)                                  "/ 107
b23a6474754f intitial checkin
cg
parents:
diff changeset
   131
        (idiv)                                  "/ 108
b23a6474754f intitial checkin
cg
parents:
diff changeset
   132
        (ldiv)                                  "/ 109
b23a6474754f intitial checkin
cg
parents:
diff changeset
   133
b23a6474754f intitial checkin
cg
parents:
diff changeset
   134
        (fdiv)                                  "/ 110
b23a6474754f intitial checkin
cg
parents:
diff changeset
   135
        (ddiv)                                  "/ 111
b23a6474754f intitial checkin
cg
parents:
diff changeset
   136
        (imod)                                  "/ 112
b23a6474754f intitial checkin
cg
parents:
diff changeset
   137
        (lmod)                                  "/ 113
b23a6474754f intitial checkin
cg
parents:
diff changeset
   138
        (fmod)                                  "/ 114
b23a6474754f intitial checkin
cg
parents:
diff changeset
   139
        (dmod)                                  "/ 115
b23a6474754f intitial checkin
cg
parents:
diff changeset
   140
        (ineg)                                  "/ 116
b23a6474754f intitial checkin
cg
parents:
diff changeset
   141
        (lneg)                                  "/ 117
b23a6474754f intitial checkin
cg
parents:
diff changeset
   142
        (fneg)                                  "/ 118
b23a6474754f intitial checkin
cg
parents:
diff changeset
   143
        (dneg)                                  "/ 119
b23a6474754f intitial checkin
cg
parents:
diff changeset
   144
b23a6474754f intitial checkin
cg
parents:
diff changeset
   145
        (ishl)                                  "/ 120
b23a6474754f intitial checkin
cg
parents:
diff changeset
   146
        (lshl)                                  "/ 121
b23a6474754f intitial checkin
cg
parents:
diff changeset
   147
        (ishr)                                  "/ 122
b23a6474754f intitial checkin
cg
parents:
diff changeset
   148
        (lshr)                                  "/ 123
b23a6474754f intitial checkin
cg
parents:
diff changeset
   149
        (iushr)                                 "/ 124
b23a6474754f intitial checkin
cg
parents:
diff changeset
   150
        (lushr)                                 "/ 125
b23a6474754f intitial checkin
cg
parents:
diff changeset
   151
        (iand)                                  "/ 126
b23a6474754f intitial checkin
cg
parents:
diff changeset
   152
        (land)                                  "/ 127
b23a6474754f intitial checkin
cg
parents:
diff changeset
   153
        (ior)                                   "/ 128
b23a6474754f intitial checkin
cg
parents:
diff changeset
   154
        (lor)                                   "/ 129
b23a6474754f intitial checkin
cg
parents:
diff changeset
   155
b23a6474754f intitial checkin
cg
parents:
diff changeset
   156
        (ixor)                                  "/ 130
b23a6474754f intitial checkin
cg
parents:
diff changeset
   157
        (lxor)                                  "/ 131
b23a6474754f intitial checkin
cg
parents:
diff changeset
   158
"/        (iinc localIndexByte signedByte)        "/ 132
b23a6474754f intitial checkin
cg
parents:
diff changeset
   159
        (i2l)                                   "/ 132
b23a6474754f intitial checkin
cg
parents:
diff changeset
   160
        (i2f)                                   "/ 133
b23a6474754f intitial checkin
cg
parents:
diff changeset
   161
        (i2d)                                   "/ 134
b23a6474754f intitial checkin
cg
parents:
diff changeset
   162
        nil                                     "/ 135
b23a6474754f intitial checkin
cg
parents:
diff changeset
   163
        (l2i)                                   "/ 136
b23a6474754f intitial checkin
cg
parents:
diff changeset
   164
        (l2f)                                   "/ 137
b23a6474754f intitial checkin
cg
parents:
diff changeset
   165
        (l2d)                                   "/ 138
b23a6474754f intitial checkin
cg
parents:
diff changeset
   166
        (l2i)                                   "/ 139
b23a6474754f intitial checkin
cg
parents:
diff changeset
   167
b23a6474754f intitial checkin
cg
parents:
diff changeset
   168
        (f2l)                                   "/ 140
b23a6474754f intitial checkin
cg
parents:
diff changeset
   169
        (f2d)                                   "/ 141
b23a6474754f intitial checkin
cg
parents:
diff changeset
   170
        (d2i)                                   "/ 142
b23a6474754f intitial checkin
cg
parents:
diff changeset
   171
        (d2l)                                   "/ 143
b23a6474754f intitial checkin
cg
parents:
diff changeset
   172
        (d2f)                                   "/ 144
b23a6474754f intitial checkin
cg
parents:
diff changeset
   173
        (int2byte)                              "/ 145
b23a6474754f intitial checkin
cg
parents:
diff changeset
   174
        (int2char)                              "/ 146
b23a6474754f intitial checkin
cg
parents:
diff changeset
   175
        (int2short)                             "/ 147
b23a6474754f intitial checkin
cg
parents:
diff changeset
   176
        (lcmp)                                  "/ 148
b23a6474754f intitial checkin
cg
parents:
diff changeset
   177
        (fcmpl)                                 "/ 149
b23a6474754f intitial checkin
cg
parents:
diff changeset
   178
b23a6474754f intitial checkin
cg
parents:
diff changeset
   179
        (fcmpg)                                 "/ 150
b23a6474754f intitial checkin
cg
parents:
diff changeset
   180
        (dcmpl)                                 "/ 151
b23a6474754f intitial checkin
cg
parents:
diff changeset
   181
        (dcmpg)                                 "/ 152
b23a6474754f intitial checkin
cg
parents:
diff changeset
   182
        (ifeq signedBranchShort)                "/ 153
b23a6474754f intitial checkin
cg
parents:
diff changeset
   183
        (ifne signedBranchShort)                "/ 154
b23a6474754f intitial checkin
cg
parents:
diff changeset
   184
        (iflt signedBranchShort)                "/ 155
b23a6474754f intitial checkin
cg
parents:
diff changeset
   185
        (ifge signedBranchShort)                "/ 156
b23a6474754f intitial checkin
cg
parents:
diff changeset
   186
        (ifgt signedBranchShort)                "/ 157
b23a6474754f intitial checkin
cg
parents:
diff changeset
   187
        (ifle signedBranchShort)                "/ 158
b23a6474754f intitial checkin
cg
parents:
diff changeset
   188
        (if_icmpeq signedBranchShort)           "/ 159
b23a6474754f intitial checkin
cg
parents:
diff changeset
   189
b23a6474754f intitial checkin
cg
parents:
diff changeset
   190
        (if_icmpne signedBranchShort)           "/ 160
b23a6474754f intitial checkin
cg
parents:
diff changeset
   191
        (if_icmplt signedBranchShort)           "/ 161
b23a6474754f intitial checkin
cg
parents:
diff changeset
   192
        (if_icmpge signedBranchShort)           "/ 162
b23a6474754f intitial checkin
cg
parents:
diff changeset
   193
        (if_icmpgt signedBranchShort)           "/ 163
b23a6474754f intitial checkin
cg
parents:
diff changeset
   194
        (if_icmple signedBranchShort)           "/ 164
b23a6474754f intitial checkin
cg
parents:
diff changeset
   195
        (if_acmpeq signedBranchShort)           "/ 165
b23a6474754f intitial checkin
cg
parents:
diff changeset
   196
        (if_acmpne signedBranchShort)           "/ 166
b23a6474754f intitial checkin
cg
parents:
diff changeset
   197
        (goto signedBranchShort)                "/ 167
b23a6474754f intitial checkin
cg
parents:
diff changeset
   198
        (jsr signedBranchShort)                 "/ 168
b23a6474754f intitial checkin
cg
parents:
diff changeset
   199
        (ret localIndexByte)                    "/ 169
b23a6474754f intitial checkin
cg
parents:
diff changeset
   200
b23a6474754f intitial checkin
cg
parents:
diff changeset
   201
        (tableswitch tableSwitchBytes)          "/ 170
b23a6474754f intitial checkin
cg
parents:
diff changeset
   202
        (lookupswitch lookupSwitchBytes)        "/ 171
b23a6474754f intitial checkin
cg
parents:
diff changeset
   203
        (ireturn)                               "/ 172
b23a6474754f intitial checkin
cg
parents:
diff changeset
   204
        (lreturn)                               "/ 173
b23a6474754f intitial checkin
cg
parents:
diff changeset
   205
        (freturn)                               "/ 174
b23a6474754f intitial checkin
cg
parents:
diff changeset
   206
        (dreturn)                               "/ 175
b23a6474754f intitial checkin
cg
parents:
diff changeset
   207
        (areturn)                               "/ 176
b23a6474754f intitial checkin
cg
parents:
diff changeset
   208
        (return)                                "/ 177
b23a6474754f intitial checkin
cg
parents:
diff changeset
   209
        (getstatic constIndexShort)             "/ 178
b23a6474754f intitial checkin
cg
parents:
diff changeset
   210
        (putstatic constIndexShort)             "/ 179
b23a6474754f intitial checkin
cg
parents:
diff changeset
   211
b23a6474754f intitial checkin
cg
parents:
diff changeset
   212
        (getfield constIndexShort)              "/ 180
b23a6474754f intitial checkin
cg
parents:
diff changeset
   213
        (putfield constIndexShort)              "/ 181
b23a6474754f intitial checkin
cg
parents:
diff changeset
   214
        (invokevirtual constIndexShort)         "/ 182
b23a6474754f intitial checkin
cg
parents:
diff changeset
   215
        (invokenonvirtual constIndexShort)      "/ 183
b23a6474754f intitial checkin
cg
parents:
diff changeset
   216
        (invokestatic constIndexShort)          "/ 184
b23a6474754f intitial checkin
cg
parents:
diff changeset
   217
        (invokeinterface constIndexShort nargsByte reservedByte)          "/ 185
b23a6474754f intitial checkin
cg
parents:
diff changeset
   218
        (newfromname)                           "/ 186
b23a6474754f intitial checkin
cg
parents:
diff changeset
   219
        (new constIndexShort)                   "/ 187
b23a6474754f intitial checkin
cg
parents:
diff changeset
   220
        (newarray arrayTypeByte)                "/ 188
b23a6474754f intitial checkin
cg
parents:
diff changeset
   221
        (anewarray constIndexShort)             "/ 189
b23a6474754f intitial checkin
cg
parents:
diff changeset
   222
b23a6474754f intitial checkin
cg
parents:
diff changeset
   223
        (arraylength)                           "/ 190
b23a6474754f intitial checkin
cg
parents:
diff changeset
   224
        (athrough)                              "/ 191
b23a6474754f intitial checkin
cg
parents:
diff changeset
   225
        (checkcast)                             "/ 192
b23a6474754f intitial checkin
cg
parents:
diff changeset
   226
        (instanceof constIndexShort)            "/ 193
b23a6474754f intitial checkin
cg
parents:
diff changeset
   227
        (monitorenter)                          "/ 194
b23a6474754f intitial checkin
cg
parents:
diff changeset
   228
        (monitorexit)                           "/ 195
b23a6474754f intitial checkin
cg
parents:
diff changeset
   229
        (verifystack)                           "/ 196
b23a6474754f intitial checkin
cg
parents:
diff changeset
   230
        (breakpoint)                            "/ 197
b23a6474754f intitial checkin
cg
parents:
diff changeset
   231
        (multianewarray constIndexShort dimensionsByte)             "/ 198
b23a6474754f intitial checkin
cg
parents:
diff changeset
   232
        nil                                     "/ 199
b23a6474754f intitial checkin
cg
parents:
diff changeset
   233
b23a6474754f intitial checkin
cg
parents:
diff changeset
   234
        nil                                     "/ 200
b23a6474754f intitial checkin
cg
parents:
diff changeset
   235
        nil                                     "/ 201
b23a6474754f intitial checkin
cg
parents:
diff changeset
   236
        nil                                     "/ 202
b23a6474754f intitial checkin
cg
parents:
diff changeset
   237
        nil                                     "/ 203
b23a6474754f intitial checkin
cg
parents:
diff changeset
   238
        nil                                     "/ 204
b23a6474754f intitial checkin
cg
parents:
diff changeset
   239
        nil                                     "/ 205
b23a6474754f intitial checkin
cg
parents:
diff changeset
   240
        nil                                     "/ 206
b23a6474754f intitial checkin
cg
parents:
diff changeset
   241
        nil                                     "/ 207
b23a6474754f intitial checkin
cg
parents:
diff changeset
   242
        nil                                     "/ 208
b23a6474754f intitial checkin
cg
parents:
diff changeset
   243
        nil                                     "/ 209
b23a6474754f intitial checkin
cg
parents:
diff changeset
   244
                                         
b23a6474754f intitial checkin
cg
parents:
diff changeset
   245
        nil                                     "/ 210
b23a6474754f intitial checkin
cg
parents:
diff changeset
   246
        nil                                     "/ 211
b23a6474754f intitial checkin
cg
parents:
diff changeset
   247
        nil                                     "/ 212
b23a6474754f intitial checkin
cg
parents:
diff changeset
   248
        nil                                     "/ 213
b23a6474754f intitial checkin
cg
parents:
diff changeset
   249
        nil                                     "/ 214
b23a6474754f intitial checkin
cg
parents:
diff changeset
   250
        nil                                     "/ 215
b23a6474754f intitial checkin
cg
parents:
diff changeset
   251
        nil                                     "/ 216
b23a6474754f intitial checkin
cg
parents:
diff changeset
   252
        nil                                     "/ 217
b23a6474754f intitial checkin
cg
parents:
diff changeset
   253
        nil                                     "/ 218
b23a6474754f intitial checkin
cg
parents:
diff changeset
   254
        nil                                     "/ 219
b23a6474754f intitial checkin
cg
parents:
diff changeset
   255
b23a6474754f intitial checkin
cg
parents:
diff changeset
   256
        nil                                     "/ 220
b23a6474754f intitial checkin
cg
parents:
diff changeset
   257
        nil                                     "/ 221
b23a6474754f intitial checkin
cg
parents:
diff changeset
   258
        nil                                     "/ 222
b23a6474754f intitial checkin
cg
parents:
diff changeset
   259
        nil                                     "/ 223
b23a6474754f intitial checkin
cg
parents:
diff changeset
   260
        nil                                     "/ 224
b23a6474754f intitial checkin
cg
parents:
diff changeset
   261
        nil                                     "/ 225
b23a6474754f intitial checkin
cg
parents:
diff changeset
   262
        nil                                     "/ 226
b23a6474754f intitial checkin
cg
parents:
diff changeset
   263
        nil                                     "/ 227
b23a6474754f intitial checkin
cg
parents:
diff changeset
   264
        nil                                     "/ 228
b23a6474754f intitial checkin
cg
parents:
diff changeset
   265
        nil                                     "/ 229
b23a6474754f intitial checkin
cg
parents:
diff changeset
   266
                                    
b23a6474754f intitial checkin
cg
parents:
diff changeset
   267
        nil                                     "/ 230
b23a6474754f intitial checkin
cg
parents:
diff changeset
   268
        nil                                     "/ 231
b23a6474754f intitial checkin
cg
parents:
diff changeset
   269
        nil                                     "/ 232
b23a6474754f intitial checkin
cg
parents:
diff changeset
   270
        nil                                     "/ 233
b23a6474754f intitial checkin
cg
parents:
diff changeset
   271
        nil                                     "/ 234
b23a6474754f intitial checkin
cg
parents:
diff changeset
   272
        nil                                     "/ 235
b23a6474754f intitial checkin
cg
parents:
diff changeset
   273
        nil                                     "/ 236
b23a6474754f intitial checkin
cg
parents:
diff changeset
   274
        nil                                     "/ 237
b23a6474754f intitial checkin
cg
parents:
diff changeset
   275
        nil                                     "/ 238
b23a6474754f intitial checkin
cg
parents:
diff changeset
   276
        nil                                     "/ 239
b23a6474754f intitial checkin
cg
parents:
diff changeset
   277
b23a6474754f intitial checkin
cg
parents:
diff changeset
   278
        nil                                     "/ 240
b23a6474754f intitial checkin
cg
parents:
diff changeset
   279
        nil                                     "/ 241
b23a6474754f intitial checkin
cg
parents:
diff changeset
   280
        nil                                     "/ 242
b23a6474754f intitial checkin
cg
parents:
diff changeset
   281
        nil                                     "/ 243
b23a6474754f intitial checkin
cg
parents:
diff changeset
   282
        nil                                     "/ 244
b23a6474754f intitial checkin
cg
parents:
diff changeset
   283
        nil                                     "/ 245
b23a6474754f intitial checkin
cg
parents:
diff changeset
   284
        nil                                     "/ 246
b23a6474754f intitial checkin
cg
parents:
diff changeset
   285
        nil                                     "/ 247
b23a6474754f intitial checkin
cg
parents:
diff changeset
   286
        nil                                     "/ 248
b23a6474754f intitial checkin
cg
parents:
diff changeset
   287
        nil                                     "/ 249
b23a6474754f intitial checkin
cg
parents:
diff changeset
   288
                                              
b23a6474754f intitial checkin
cg
parents:
diff changeset
   289
        nil                                     "/ 250
b23a6474754f intitial checkin
cg
parents:
diff changeset
   290
        nil                                     "/ 251
b23a6474754f intitial checkin
cg
parents:
diff changeset
   291
        nil                                     "/ 252
b23a6474754f intitial checkin
cg
parents:
diff changeset
   292
        nil                                     "/ 253
b23a6474754f intitial checkin
cg
parents:
diff changeset
   293
        nil                                     "/ 254
b23a6474754f intitial checkin
cg
parents:
diff changeset
   294
        nil                                     "/ 255
b23a6474754f intitial checkin
cg
parents:
diff changeset
   295
    )
b23a6474754f intitial checkin
cg
parents:
diff changeset
   296
b23a6474754f intitial checkin
cg
parents:
diff changeset
   297
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   298
     JavaDecompiler initialize
b23a6474754f intitial checkin
cg
parents:
diff changeset
   299
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   300
b23a6474754f intitial checkin
cg
parents:
diff changeset
   301
    "Modified: 16.4.1996 / 14:56:13 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   302
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   303
b23a6474754f intitial checkin
cg
parents:
diff changeset
   304
!JavaDecompiler class methodsFor:'decompiling'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   305
b23a6474754f intitial checkin
cg
parents:
diff changeset
   306
decompile:aJavaMethod
b23a6474754f intitial checkin
cg
parents:
diff changeset
   307
    self new decompile:aJavaMethod
b23a6474754f intitial checkin
cg
parents:
diff changeset
   308
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   309
b23a6474754f intitial checkin
cg
parents:
diff changeset
   310
!JavaDecompiler methodsFor:'decompiling'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   311
b23a6474754f intitial checkin
cg
parents:
diff changeset
   312
decompile:aJavaMethod
b23a6474754f intitial checkin
cg
parents:
diff changeset
   313
    |endPC insn spec|
b23a6474754f intitial checkin
cg
parents:
diff changeset
   314
b23a6474754f intitial checkin
cg
parents:
diff changeset
   315
    javaMethod := aJavaMethod.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   316
    code := aJavaMethod javaByteCode.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   317
    endPC := code size.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   318
    pc := 1.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   319
    [pc <= endPC] whileTrue:[
b23a6474754f intitial checkin
cg
parents:
diff changeset
   320
        insn := code at:pc.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   321
        pc := pc + 1.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   322
        spec := DecoderTable at:(insn + 1).
b23a6474754f intitial checkin
cg
parents:
diff changeset
   323
        Transcript show:(spec at:1); show:' '.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   324
        spec from:2 to:spec size do:[:what |
b23a6474754f intitial checkin
cg
parents:
diff changeset
   325
            self perform:what
b23a6474754f intitial checkin
cg
parents:
diff changeset
   326
        ].
b23a6474754f intitial checkin
cg
parents:
diff changeset
   327
        Transcript cr.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   328
    ]
b23a6474754f intitial checkin
cg
parents:
diff changeset
   329
b23a6474754f intitial checkin
cg
parents:
diff changeset
   330
    "Created: 16.4.1996 / 14:59:29 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   331
    "Modified: 16.4.1996 / 15:27:05 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   332
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   333
b23a6474754f intitial checkin
cg
parents:
diff changeset
   334
!JavaDecompiler methodsFor:'operand decoding'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   335
b23a6474754f intitial checkin
cg
parents:
diff changeset
   336
constIndexShort
b23a6474754f intitial checkin
cg
parents:
diff changeset
   337
    |hi low index constants|
b23a6474754f intitial checkin
cg
parents:
diff changeset
   338
b23a6474754f intitial checkin
cg
parents:
diff changeset
   339
    hi := code at:pc.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   340
    low := code at:pc + 1.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   341
    pc := pc + 2.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   342
b23a6474754f intitial checkin
cg
parents:
diff changeset
   343
    index := (hi bitShift:8) + low.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   344
    "change from unsigned 0..FFFF to signed -8000..7FFF"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   345
    index >= 16r8000 ifTrue:[
b23a6474754f intitial checkin
cg
parents:
diff changeset
   346
        index := index - 16r10000 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   347
    ].
b23a6474754f intitial checkin
cg
parents:
diff changeset
   348
b23a6474754f intitial checkin
cg
parents:
diff changeset
   349
    Transcript 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   350
        show:index; 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   351
        show:' ['; 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   352
        show:(javaMethod constantPool at:index) displayString; 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   353
        show:']'
b23a6474754f intitial checkin
cg
parents:
diff changeset
   354
b23a6474754f intitial checkin
cg
parents:
diff changeset
   355
    "Created: 16.4.1996 / 15:00:04 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   356
    "Modified: 16.4.1996 / 15:30:55 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   357
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   358
b23a6474754f intitial checkin
cg
parents:
diff changeset
   359
!JavaDecompiler class methodsFor:'documentation'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   360
b23a6474754f intitial checkin
cg
parents:
diff changeset
   361
version
b23a6474754f intitial checkin
cg
parents:
diff changeset
   362
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaDecompiler.st,v 1.1 1996/04/16 13:34:16 cg Exp $'
b23a6474754f intitial checkin
cg
parents:
diff changeset
   363
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   364
JavaDecompiler initialize!