JavaDecompiler.st
author cg
Wed, 30 Jul 1997 14:41:13 +0000
changeset 175 68da52e100ab
parent 165 d524d23e045c
child 187 89fec395f511
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#JavaDecompiler
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
     2
	instanceVariableNames:'code pc javaMethod outStream classToCompileFor'
6
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
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
     9
!JavaDecompiler class methodsFor:'initialization'!
6
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
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
    41
        (iload_0)                               "/ 26
6
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
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   136
"/        (imod)                                  "/ 112     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   137
        (irem)                                  "/ 112
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   138
"/        (lmod)                                  "/ 113     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   139
        (lrem)                                  "/ 113
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   140
"/        (fmod)                                  "/ 114     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   141
        (frem)                                  "/ 114
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   142
"/        (dmod)                                  "/ 115     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   143
        (drem)                                  "/ 115
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   144
        (ineg)                                  "/ 116
b23a6474754f intitial checkin
cg
parents:
diff changeset
   145
        (lneg)                                  "/ 117
b23a6474754f intitial checkin
cg
parents:
diff changeset
   146
        (fneg)                                  "/ 118
b23a6474754f intitial checkin
cg
parents:
diff changeset
   147
        (dneg)                                  "/ 119
b23a6474754f intitial checkin
cg
parents:
diff changeset
   148
b23a6474754f intitial checkin
cg
parents:
diff changeset
   149
        (ishl)                                  "/ 120
b23a6474754f intitial checkin
cg
parents:
diff changeset
   150
        (lshl)                                  "/ 121
b23a6474754f intitial checkin
cg
parents:
diff changeset
   151
        (ishr)                                  "/ 122
b23a6474754f intitial checkin
cg
parents:
diff changeset
   152
        (lshr)                                  "/ 123
b23a6474754f intitial checkin
cg
parents:
diff changeset
   153
        (iushr)                                 "/ 124
b23a6474754f intitial checkin
cg
parents:
diff changeset
   154
        (lushr)                                 "/ 125
b23a6474754f intitial checkin
cg
parents:
diff changeset
   155
        (iand)                                  "/ 126
b23a6474754f intitial checkin
cg
parents:
diff changeset
   156
        (land)                                  "/ 127
b23a6474754f intitial checkin
cg
parents:
diff changeset
   157
        (ior)                                   "/ 128
b23a6474754f intitial checkin
cg
parents:
diff changeset
   158
        (lor)                                   "/ 129
b23a6474754f intitial checkin
cg
parents:
diff changeset
   159
b23a6474754f intitial checkin
cg
parents:
diff changeset
   160
        (ixor)                                  "/ 130
b23a6474754f intitial checkin
cg
parents:
diff changeset
   161
        (lxor)                                  "/ 131
39
20fa5af3b873 checkin from browser
cg
parents: 36
diff changeset
   162
        (iinc localIndexByte signedByte)        "/ 132
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   163
        (i2l)                                   "/ 133
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   164
        (i2f)                                   "/ 134
52
1dc41619b6f8 checkin from browser
cg
parents: 44
diff changeset
   165
        (i2d)                                   "/ 135
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   166
        (l2i)                                   "/ 136    
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   167
        (l2f)                                   "/ 137
b23a6474754f intitial checkin
cg
parents:
diff changeset
   168
        (l2d)                                   "/ 138
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   169
        (f2i)                                   "/ 139
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   170
b23a6474754f intitial checkin
cg
parents:
diff changeset
   171
        (f2l)                                   "/ 140
b23a6474754f intitial checkin
cg
parents:
diff changeset
   172
        (f2d)                                   "/ 141
b23a6474754f intitial checkin
cg
parents:
diff changeset
   173
        (d2i)                                   "/ 142
b23a6474754f intitial checkin
cg
parents:
diff changeset
   174
        (d2l)                                   "/ 143
b23a6474754f intitial checkin
cg
parents:
diff changeset
   175
        (d2f)                                   "/ 144
b23a6474754f intitial checkin
cg
parents:
diff changeset
   176
        (int2byte)                              "/ 145
b23a6474754f intitial checkin
cg
parents:
diff changeset
   177
        (int2char)                              "/ 146
b23a6474754f intitial checkin
cg
parents:
diff changeset
   178
        (int2short)                             "/ 147
b23a6474754f intitial checkin
cg
parents:
diff changeset
   179
        (lcmp)                                  "/ 148
b23a6474754f intitial checkin
cg
parents:
diff changeset
   180
        (fcmpl)                                 "/ 149
b23a6474754f intitial checkin
cg
parents:
diff changeset
   181
b23a6474754f intitial checkin
cg
parents:
diff changeset
   182
        (fcmpg)                                 "/ 150
b23a6474754f intitial checkin
cg
parents:
diff changeset
   183
        (dcmpl)                                 "/ 151
b23a6474754f intitial checkin
cg
parents:
diff changeset
   184
        (dcmpg)                                 "/ 152
b23a6474754f intitial checkin
cg
parents:
diff changeset
   185
        (ifeq signedBranchShort)                "/ 153
b23a6474754f intitial checkin
cg
parents:
diff changeset
   186
        (ifne signedBranchShort)                "/ 154
b23a6474754f intitial checkin
cg
parents:
diff changeset
   187
        (iflt signedBranchShort)                "/ 155
b23a6474754f intitial checkin
cg
parents:
diff changeset
   188
        (ifge signedBranchShort)                "/ 156
b23a6474754f intitial checkin
cg
parents:
diff changeset
   189
        (ifgt signedBranchShort)                "/ 157
b23a6474754f intitial checkin
cg
parents:
diff changeset
   190
        (ifle signedBranchShort)                "/ 158
b23a6474754f intitial checkin
cg
parents:
diff changeset
   191
        (if_icmpeq signedBranchShort)           "/ 159
b23a6474754f intitial checkin
cg
parents:
diff changeset
   192
b23a6474754f intitial checkin
cg
parents:
diff changeset
   193
        (if_icmpne signedBranchShort)           "/ 160
b23a6474754f intitial checkin
cg
parents:
diff changeset
   194
        (if_icmplt signedBranchShort)           "/ 161
b23a6474754f intitial checkin
cg
parents:
diff changeset
   195
        (if_icmpge signedBranchShort)           "/ 162
b23a6474754f intitial checkin
cg
parents:
diff changeset
   196
        (if_icmpgt signedBranchShort)           "/ 163
b23a6474754f intitial checkin
cg
parents:
diff changeset
   197
        (if_icmple signedBranchShort)           "/ 164
b23a6474754f intitial checkin
cg
parents:
diff changeset
   198
        (if_acmpeq signedBranchShort)           "/ 165
b23a6474754f intitial checkin
cg
parents:
diff changeset
   199
        (if_acmpne signedBranchShort)           "/ 166
b23a6474754f intitial checkin
cg
parents:
diff changeset
   200
        (goto signedBranchShort)                "/ 167
b23a6474754f intitial checkin
cg
parents:
diff changeset
   201
        (jsr signedBranchShort)                 "/ 168
b23a6474754f intitial checkin
cg
parents:
diff changeset
   202
        (ret localIndexByte)                    "/ 169
b23a6474754f intitial checkin
cg
parents:
diff changeset
   203
b23a6474754f intitial checkin
cg
parents:
diff changeset
   204
        (tableswitch tableSwitchBytes)          "/ 170
b23a6474754f intitial checkin
cg
parents:
diff changeset
   205
        (lookupswitch lookupSwitchBytes)        "/ 171
b23a6474754f intitial checkin
cg
parents:
diff changeset
   206
        (ireturn)                               "/ 172
b23a6474754f intitial checkin
cg
parents:
diff changeset
   207
        (lreturn)                               "/ 173
b23a6474754f intitial checkin
cg
parents:
diff changeset
   208
        (freturn)                               "/ 174
b23a6474754f intitial checkin
cg
parents:
diff changeset
   209
        (dreturn)                               "/ 175
b23a6474754f intitial checkin
cg
parents:
diff changeset
   210
        (areturn)                               "/ 176
b23a6474754f intitial checkin
cg
parents:
diff changeset
   211
        (return)                                "/ 177
b23a6474754f intitial checkin
cg
parents:
diff changeset
   212
        (getstatic constIndexShort)             "/ 178
b23a6474754f intitial checkin
cg
parents:
diff changeset
   213
        (putstatic constIndexShort)             "/ 179
b23a6474754f intitial checkin
cg
parents:
diff changeset
   214
b23a6474754f intitial checkin
cg
parents:
diff changeset
   215
        (getfield constIndexShort)              "/ 180
b23a6474754f intitial checkin
cg
parents:
diff changeset
   216
        (putfield constIndexShort)              "/ 181
b23a6474754f intitial checkin
cg
parents:
diff changeset
   217
        (invokevirtual constIndexShort)         "/ 182
b23a6474754f intitial checkin
cg
parents:
diff changeset
   218
        (invokenonvirtual constIndexShort)      "/ 183
b23a6474754f intitial checkin
cg
parents:
diff changeset
   219
        (invokestatic constIndexShort)          "/ 184
b23a6474754f intitial checkin
cg
parents:
diff changeset
   220
        (invokeinterface constIndexShort nargsByte reservedByte)          "/ 185
b23a6474754f intitial checkin
cg
parents:
diff changeset
   221
        (newfromname)                           "/ 186
b23a6474754f intitial checkin
cg
parents:
diff changeset
   222
        (new constIndexShort)                   "/ 187
b23a6474754f intitial checkin
cg
parents:
diff changeset
   223
        (newarray arrayTypeByte)                "/ 188
b23a6474754f intitial checkin
cg
parents:
diff changeset
   224
        (anewarray constIndexShort)             "/ 189
b23a6474754f intitial checkin
cg
parents:
diff changeset
   225
b23a6474754f intitial checkin
cg
parents:
diff changeset
   226
        (arraylength)                           "/ 190
32
0dbaa43a73db checkin from browser
cg
parents: 27
diff changeset
   227
        (athrow)                                "/ 191
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   228
        (checkcast constIndexShort)             "/ 192
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   229
        (instanceof constIndexShort)            "/ 193
b23a6474754f intitial checkin
cg
parents:
diff changeset
   230
        (monitorenter)                          "/ 194
b23a6474754f intitial checkin
cg
parents:
diff changeset
   231
        (monitorexit)                           "/ 195
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   232
"/        (verifystack)                           "/ 196 obsolete (Alpha release)
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   233
        (wide localIndexByte)                   "/ 196
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   234
        (multianewarray constIndexShort dimensionsByte) "/ 197
41
eb7974d88088 checkin from browser
cg
parents: 40
diff changeset
   235
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   236
        (ifnull    signedBranchShort)           "/ 198
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   237
        (ifnonnull signedBranchShort)           "/ 199
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   238
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   239
        (#'goto_w' signedBranchLong)            "/ 200
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   240
        (#'jsr_w' signedBranchShort)            "/ 201
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   241
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   242
        (breakpoint)                            "/ 202
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   243
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   244
        nil                                     "/ 203
b23a6474754f intitial checkin
cg
parents:
diff changeset
   245
        nil                                     "/ 204
b23a6474754f intitial checkin
cg
parents:
diff changeset
   246
        nil                                     "/ 205
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   247
        nil                                     "/ 206
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   248
        nil                                     "/ 207
b23a6474754f intitial checkin
cg
parents:
diff changeset
   249
        nil                                     "/ 208
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   250
        (#'ret_w' signedBranchShort)            "/ 209
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   251
                                         
b23a6474754f intitial checkin
cg
parents:
diff changeset
   252
        nil                                     "/ 210
b23a6474754f intitial checkin
cg
parents:
diff changeset
   253
        nil                                     "/ 211
b23a6474754f intitial checkin
cg
parents:
diff changeset
   254
        nil                                     "/ 212
b23a6474754f intitial checkin
cg
parents:
diff changeset
   255
        nil                                     "/ 213
b23a6474754f intitial checkin
cg
parents:
diff changeset
   256
        nil                                     "/ 214
b23a6474754f intitial checkin
cg
parents:
diff changeset
   257
        nil                                     "/ 215
b23a6474754f intitial checkin
cg
parents:
diff changeset
   258
        nil                                     "/ 216
b23a6474754f intitial checkin
cg
parents:
diff changeset
   259
        nil                                     "/ 217
b23a6474754f intitial checkin
cg
parents:
diff changeset
   260
        nil                                     "/ 218
b23a6474754f intitial checkin
cg
parents:
diff changeset
   261
        nil                                     "/ 219
b23a6474754f intitial checkin
cg
parents:
diff changeset
   262
b23a6474754f intitial checkin
cg
parents:
diff changeset
   263
        nil                                     "/ 220
b23a6474754f intitial checkin
cg
parents:
diff changeset
   264
        nil                                     "/ 221
b23a6474754f intitial checkin
cg
parents:
diff changeset
   265
        nil                                     "/ 222
b23a6474754f intitial checkin
cg
parents:
diff changeset
   266
        nil                                     "/ 223
b23a6474754f intitial checkin
cg
parents:
diff changeset
   267
        nil                                     "/ 224
b23a6474754f intitial checkin
cg
parents:
diff changeset
   268
        nil                                     "/ 225
b23a6474754f intitial checkin
cg
parents:
diff changeset
   269
        nil                                     "/ 226
b23a6474754f intitial checkin
cg
parents:
diff changeset
   270
        nil                                     "/ 227
b23a6474754f intitial checkin
cg
parents:
diff changeset
   271
        nil                                     "/ 228
b23a6474754f intitial checkin
cg
parents:
diff changeset
   272
        nil                                     "/ 229
b23a6474754f intitial checkin
cg
parents:
diff changeset
   273
                                    
b23a6474754f intitial checkin
cg
parents:
diff changeset
   274
        nil                                     "/ 230
b23a6474754f intitial checkin
cg
parents:
diff changeset
   275
        nil                                     "/ 231
b23a6474754f intitial checkin
cg
parents:
diff changeset
   276
        nil                                     "/ 232
b23a6474754f intitial checkin
cg
parents:
diff changeset
   277
        nil                                     "/ 233
b23a6474754f intitial checkin
cg
parents:
diff changeset
   278
        nil                                     "/ 234
b23a6474754f intitial checkin
cg
parents:
diff changeset
   279
        nil                                     "/ 235
b23a6474754f intitial checkin
cg
parents:
diff changeset
   280
        nil                                     "/ 236
b23a6474754f intitial checkin
cg
parents:
diff changeset
   281
        nil                                     "/ 237
b23a6474754f intitial checkin
cg
parents:
diff changeset
   282
        nil                                     "/ 238
b23a6474754f intitial checkin
cg
parents:
diff changeset
   283
        nil                                     "/ 239
b23a6474754f intitial checkin
cg
parents:
diff changeset
   284
b23a6474754f intitial checkin
cg
parents:
diff changeset
   285
        nil                                     "/ 240
b23a6474754f intitial checkin
cg
parents:
diff changeset
   286
        nil                                     "/ 241
b23a6474754f intitial checkin
cg
parents:
diff changeset
   287
        nil                                     "/ 242
b23a6474754f intitial checkin
cg
parents:
diff changeset
   288
        nil                                     "/ 243
b23a6474754f intitial checkin
cg
parents:
diff changeset
   289
        nil                                     "/ 244
b23a6474754f intitial checkin
cg
parents:
diff changeset
   290
        nil                                     "/ 245
b23a6474754f intitial checkin
cg
parents:
diff changeset
   291
        nil                                     "/ 246
b23a6474754f intitial checkin
cg
parents:
diff changeset
   292
        nil                                     "/ 247
b23a6474754f intitial checkin
cg
parents:
diff changeset
   293
        nil                                     "/ 248
b23a6474754f intitial checkin
cg
parents:
diff changeset
   294
        nil                                     "/ 249
b23a6474754f intitial checkin
cg
parents:
diff changeset
   295
                                              
b23a6474754f intitial checkin
cg
parents:
diff changeset
   296
        nil                                     "/ 250
b23a6474754f intitial checkin
cg
parents:
diff changeset
   297
        nil                                     "/ 251
b23a6474754f intitial checkin
cg
parents:
diff changeset
   298
        nil                                     "/ 252
b23a6474754f intitial checkin
cg
parents:
diff changeset
   299
        nil                                     "/ 253
b23a6474754f intitial checkin
cg
parents:
diff changeset
   300
        nil                                     "/ 254
124
e30646ab8a71 *** empty log message ***
cg
parents: 119
diff changeset
   301
        (invokenonvirtual_d constIndexShort)    "/ 255 special - dummy invokenonvirtual
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   302
    )
b23a6474754f intitial checkin
cg
parents:
diff changeset
   303
b23a6474754f intitial checkin
cg
parents:
diff changeset
   304
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   305
     JavaDecompiler initialize
b23a6474754f intitial checkin
cg
parents:
diff changeset
   306
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   307
b23a6474754f intitial checkin
cg
parents:
diff changeset
   308
    "Modified: 16.4.1996 / 14:56:13 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   309
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   310
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   311
!JavaDecompiler class methodsFor:'accessing'!
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   312
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   313
instructionTable
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   314
    ^ DecoderTable
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   315
! !
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   316
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   317
!JavaDecompiler class methodsFor:'class definition generation'!
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   318
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   319
definitionOf:aJavaClass on:s
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   320
    |pckgName needCR fields staticFields superClass
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   321
     interfaces|
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   322
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   323
    pckgName := aJavaClass package.
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   324
    pckgName ~= aJavaClass name ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   325
        s nextPutAll:'package ' , (pckgName copy replaceAll:$/ by:$.).
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   326
        s nextPutAll:';'; cr; cr.
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   327
    ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   328
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   329
    needCR := false.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   330
    aJavaClass isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   331
       s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   332
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   333
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   334
    aJavaClass isAbstract ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   335
       s nextPutAll:'abstract '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   336
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   337
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   338
    aJavaClass isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   339
       s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   340
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   341
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   342
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   343
    needCR ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   344
        s cr
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   345
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   346
    aJavaClass isInterface ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   347
       s nextPutAll:'interface '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   348
    ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   349
       s nextPutAll:'class '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   350
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   351
    s nextPutAll:aJavaClass name; space.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   352
    superClass := aJavaClass superclass.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   353
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   354
    superClass ~~ (Java at:'java.lang.Object') ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   355
        s nextPutAll:'extends '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   356
        (superClass package ~= 'java/lang' 
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   357
        and:[superClass package ~= pckgName]) ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   358
            s nextPutAll:(superClass displayString); space
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   359
        ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   360
            s nextPutAll:(superClass name); space
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   361
        ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   362
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   363
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   364
    (interfaces := aJavaClass interfaces) size > 0 ifTrue:[
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   365
        (aJavaClass isInterface
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   366
        and:[interfaces size == 1]) ifTrue:[
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   367
            s nextPutAll:'extends '.
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   368
        ] ifFalse:[
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   369
            s nextPutAll:'implements '.
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   370
        ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   371
        interfaces keysAndValuesDo:[:nr :if |
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   372
            nr ~~ 1 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   373
                s nextPutAll:', '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   374
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   375
            (if package ~= 'java/lang' 
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   376
            and:[if package ~= pckgName]) ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   377
                s nextPutAll:(if displayString)
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   378
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   379
                s nextPutAll:(if name)
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   380
            ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   381
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   382
        s space.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   383
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   384
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   385
    s nextPutAll:'{'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   386
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   387
    needCR := false.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   388
    staticFields := aJavaClass staticFields.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   389
    staticFields size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   390
        needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   391
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   392
        staticFields do:[:aField |
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   393
            |type v|
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   394
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   395
            s nextPutAll:'    '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   396
            aField isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   397
                s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   398
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   399
                s nextPutAll:'private '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   400
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   401
            s nextPutAll:'static '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   402
            aField isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   403
                s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   404
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   405
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   406
            ((type := aField type) startsWith:pckgName) ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   407
                type := type copyFrom:(pckgName size + 1 + 1).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   408
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   409
                (type startsWith:'java.lang.') ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   410
                    type := type copyFrom:(11).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   411
                ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   412
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   413
            type := type copy replaceAll:$/ with:$..
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   414
            s nextPutAll:type; space;
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   415
              nextPutAll:aField name.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   416
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   417
            (v := aField constantValue) notNil ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   418
                s nextPutAll:' = '; nextPutAll:v displayString.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   419
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   420
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   421
            s nextPutAll:';'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   422
            needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   423
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   424
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   425
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   426
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   427
    fields := aJavaClass fields.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   428
    fields size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   429
        needCR ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   430
            s cr
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   431
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   432
        needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   433
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   434
        fields do:[:aField |
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   435
            |type|
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   436
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   437
            s nextPutAll:'    '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   438
            aField isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   439
                s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   440
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   441
                s nextPutAll:'private '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   442
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   443
            aField isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   444
                s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   445
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   446
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   447
            ((type := aField type) startsWith:pckgName) ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   448
                type := type copyFrom:(pckgName size + 1 + 1).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   449
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   450
            type := type copy replaceAll:$/ with:$..
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   451
            s nextPutAll:type; space;
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   452
              nextPutAll:aField name; nextPutAll:';'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   453
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   454
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   455
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   456
    aJavaClass methodDictionary size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   457
        needCR ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   458
            s cr
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   459
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   460
        needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   461
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   462
        aJavaClass methodDictionary do:[:aMethod |
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   463
            |type nm|
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   464
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   465
            s nextPutAll:'    '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   466
            aMethod isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   467
                s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   468
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   469
                aMethod isProtected ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   470
                    s nextPutAll:'protected '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   471
                ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   472
                    s nextPutAll:'private '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   473
                ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   474
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   475
            aMethod isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   476
                s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   477
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   478
            aMethod isStatic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   479
                s nextPutAll:'static '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   480
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   481
            aMethod isNative ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   482
                s nextPutAll:'native '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   483
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   484
            aMethod isSynchronized ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   485
                s nextPutAll:'synchronized '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   486
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   487
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   488
            (nm := aMethod name) = '<init>' ifTrue:[
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   489
                nm := aMethod javaClass name.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   490
            ].
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   491
            s nextPutAll:(aMethod signatureNameFor:nm withArgsIn:aMethod javaClass package).
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   492
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   493
            aMethod exceptionTable size > 0 ifTrue:[
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   494
                s nextPutAll:' throws '.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   495
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   496
                aMethod exceptionTable keysAndValuesDo:[:index :aClassRef |
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   497
                    |nm|
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   498
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   499
                    nm := aClassRef fullName.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   500
                    (nm startsWith:pckgName) ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   501
                        nm := nm copyFrom:pckgName size + 2
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   502
                    ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   503
                        (nm startsWith:'java/lang') ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   504
                           nm := nm copyFrom:'java/lang' size + 2.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   505
                        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   506
                    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   507
                    index ~~ 1 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   508
                        s nextPutAll:', '
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   509
                    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   510
                    s nextPutAll:((nm copyFrom:1) replaceAll:$/ with:$.)
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   511
                ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   512
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   513
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   514
            s nextPutAll:';'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   515
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   516
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   517
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   518
    s nextPutAll:'}'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   519
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   520
    "Created: 22.3.1997 / 14:29:37 / cg"
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   521
    "Modified: 30.7.1997 / 15:27:53 / cg"
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   522
! !
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   523
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   524
!JavaDecompiler class methodsFor:'decompiling'!
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   525
b23a6474754f intitial checkin
cg
parents:
diff changeset
   526
decompile:aJavaMethod
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   527
    self decompile:aJavaMethod to:Transcript
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   528
!
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   529
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   530
decompile:aJavaMethod to:aStream
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   531
    self new decompile:aJavaMethod to:aStream
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   532
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   533
b23a6474754f intitial checkin
cg
parents:
diff changeset
   534
!JavaDecompiler methodsFor:'decompiling'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   535
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   536
decompile:aJavaMethod to:aStream
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   537
    |who endPC insn spec op|
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   538
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   539
    outStream := aStream.
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   540
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   541
    who := aJavaMethod who.
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   542
    who notNil ifTrue:[
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   543
        classToCompileFor := who methodClass.
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   544
        aStream cr.
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   545
"/        aStream showCR:'decompiling ' , classToCompileFor name , '>>' , (who methodSelector) , ':'.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 52
diff changeset
   546
        aStream showCR:'decompiling ' , aJavaMethod displayString , ':'.
119
440cfcb9d0c1 checkin from browser
cg
parents: 108
diff changeset
   547
        aJavaMethod isStatic ifTrue:[
440cfcb9d0c1 checkin from browser
cg
parents: 108
diff changeset
   548
            aStream show:'static method'.
440cfcb9d0c1 checkin from browser
cg
parents: 108
diff changeset
   549
        ].
440cfcb9d0c1 checkin from browser
cg
parents: 108
diff changeset
   550
        aStream cr.
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   551
        aStream cr.
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   552
    ].
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   553
b23a6474754f intitial checkin
cg
parents:
diff changeset
   554
    javaMethod := aJavaMethod.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   555
    code := aJavaMethod javaByteCode.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   556
    endPC := code size.
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   557
    endPC == 0 ifTrue:[
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   558
        javaMethod isNative ifTrue:[
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   559
            outStream nextPutAll:'// native method'; cr
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   560
        ] ifFalse:[
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   561
            outStream nextPutAll:'{}  // no bytecode'; cr
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   562
        ].
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   563
        ^ self
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   564
    ].
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   565
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   566
    pc := 1.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   567
    [pc <= endPC] whileTrue:[
b23a6474754f intitial checkin
cg
parents:
diff changeset
   568
        insn := code at:pc.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   569
        pc := pc + 1.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   570
        spec := DecoderTable at:(insn + 1).
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   571
        spec isNil ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   572
            op := '** invalid opcode: ',insn printString, ' **'
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   573
        ] ifFalse:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   574
            op := spec at:1
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   575
        ].
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   576
        outStream 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   577
            show:((pc - 1) printStringPaddedTo:4); 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   578
            show:' '; 
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   579
            show:op; 
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   580
            show:' '.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   581
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   582
        spec notNil ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   583
            spec from:2 to:spec size do:[:what |
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   584
                self perform:what
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   585
            ].
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   586
        ].
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   587
        outStream cr.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   588
    ]
b23a6474754f intitial checkin
cg
parents:
diff changeset
   589
b23a6474754f intitial checkin
cg
parents:
diff changeset
   590
    "Created: 16.4.1996 / 14:59:29 / cg"
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   591
    "Modified: 30.7.1997 / 16:13:04 / cg"
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   592
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   593
b23a6474754f intitial checkin
cg
parents:
diff changeset
   594
!JavaDecompiler methodsFor:'operand decoding'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   595
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   596
arrayTypeByte
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   597
    |hi low index type|
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   598
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   599
    index := code at:pc.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   600
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   601
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   602
    type := #('T_ARRAY' 'invalid' 'invalid'  'T_BOOLEAN'
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   603
              'T_CHAR'  'T_FLOAT' 'T_DOUBLE' 'T_BYTE' 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   604
              'T_INT'   'T_LONG' ) at:index ifAbsent:'invalid'.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   605
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   606
    outStream
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   607
        show:index; 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   608
        show:' [';
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   609
        show:type;
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   610
        show:']'
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   611
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   612
    "Created: 16.4.1996 / 15:00:04 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   613
    "Modified: 16.4.1996 / 15:30:55 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   614
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   615
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   616
constIndexByte
126
560b6f2bb615 checkin from browser
cg
parents: 124
diff changeset
   617
    |index|
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   618
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   619
    index := code at:pc.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   620
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   621
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   622
    outStream
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   623
        show:index; 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   624
        show:' ['; 
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   625
        show:(javaMethod constantPool at:index ifAbsent:['??']) displayString; 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   626
        show:'] '
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   627
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   628
    "Created: 16.4.1996 / 15:00:04 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   629
    "Modified: 16.4.1996 / 15:30:55 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   630
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   631
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   632
constIndexShort
126
560b6f2bb615 checkin from browser
cg
parents: 124
diff changeset
   633
    |index|
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   634
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   635
    index := code wordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   636
    pc := pc + 2.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   637
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   638
    outStream
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   639
        show:index; 
b23a6474754f intitial checkin
cg
parents:
diff changeset
   640
        show:' ['; 
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   641
        show:(javaMethod constantPool at:index ifAbsent:'???') displayString; 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   642
        show:'] '
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   643
b23a6474754f intitial checkin
cg
parents:
diff changeset
   644
    "Created: 16.4.1996 / 15:00:04 / cg"
b23a6474754f intitial checkin
cg
parents:
diff changeset
   645
    "Modified: 16.4.1996 / 15:30:55 / cg"
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   646
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   647
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   648
dimensionsByte
108
235be8e8bd8c *** empty log message ***
cg
parents: 91
diff changeset
   649
    outStream show:' dims= '. 
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   650
    self unsignedByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   651
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   652
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   653
localIndexByte
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   654
    |hi low index constants|
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   655
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   656
    index := code at:pc.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   657
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   658
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   659
    outStream
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   660
        show:index; 
39
20fa5af3b873 checkin from browser
cg
parents: 36
diff changeset
   661
        show:' '
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   662
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   663
    "Created: 16.4.1996 / 15:00:04 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   664
    "Modified: 16.4.1996 / 15:30:55 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   665
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   666
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   667
lookupSwitchBytes
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   668
    |defaultOffset delta nPairs match pc0|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   669
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   670
    pc0 := pc-1.  "/ i.e. the pc of the tableSwitch op
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   671
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   672
    [(pc-1) \\ 4 ~~ 0] whileTrue:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   673
        pc := pc + 1
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   674
    ].
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   675
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   676
    defaultOffset := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   677
    pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   678
    nPairs := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   679
    pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   680
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   681
    outStream show:'n='; show:nPairs; cr.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   682
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   683
    nPairs timesRepeat:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   684
        match := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   685
        pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   686
        delta := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   687
        pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   688
        outStream show:'    '; 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   689
                  show:match;
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   690
                  show:' -> ';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   691
                  show:delta;
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   692
                  show:' [';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   693
                  show:(pc0 + delta);
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   694
                  show:']';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   695
                  cr.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   696
    ].
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   697
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   698
    outStream show:'    '; 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   699
              show:'default';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   700
              show:' -> ';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   701
              show:defaultOffset;
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   702
              show:' [';
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   703
              show:(pc0 + defaultOffset);
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   704
              show:']'.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   705
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   706
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   707
nargsByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   708
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   709
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   710
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   711
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   712
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   713
    outStream
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   714
        show:byte 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   715
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   716
    "Created: 16.4.1996 / 15:00:04 / cg"
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   717
    "Modified: 16.4.1996 / 15:30:55 / cg"
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   718
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   719
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   720
reservedByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   721
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   722
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   723
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   724
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   725
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   726
    outStream
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   727
        show:byte 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   728
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   729
    "Created: 16.4.1996 / 15:00:04 / cg"
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   730
    "Modified: 16.4.1996 / 15:30:55 / cg"
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   731
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   732
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   733
signedBranchShort
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   734
    |index constants|
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   735
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   736
    index := code signedWordAt:pc MSB:true.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   737
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   738
    outStream
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   739
        show:index; 
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   740
        show:' ['; 
25
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
   741
        show:(pc + index - 1); 
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
   742
        show:']'.
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
   743
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
   744
    pc := pc + 2.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   745
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   746
    "Created: 16.4.1996 / 15:00:04 / cg"
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   747
    "Modified: 16.4.1996 / 15:30:55 / cg"
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   748
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   749
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   750
signedByte
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   751
    |byte constants|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   752
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   753
    byte := code signedByteAt:pc.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   754
    pc := pc + 1.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   755
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   756
    outStream
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   757
        show:byte 
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   758
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   759
    "Created: 16.4.1996 / 15:00:04 / cg"
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   760
    "Modified: 16.4.1996 / 15:30:55 / cg"
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   761
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   762
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   763
signedShort
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   764
    |word constants|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   765
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   766
    word := code signedWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   767
    pc := pc + 2.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   768
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   769
    outStream
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   770
        show:word 
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   771
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   772
    "Created: 16.4.1996 / 15:00:04 / cg"
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   773
    "Modified: 16.4.1996 / 15:30:55 / cg"
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   774
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   775
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   776
tableSwitchBytes
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   777
    |defaultOffset delta low high pc0|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   778
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   779
    pc0 := pc-1.  "/ i.e. the pc of the tableSwitch op
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   780
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   781
    [(pc-1) \\ 4 ~~ 0] whileTrue:[
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   782
        pc := pc + 1
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   783
    ].
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   784
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   785
    defaultOffset := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   786
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   787
    low := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   788
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   789
    high := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   790
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   791
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   792
    outStream cr.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   793
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   794
    low to:high do:[:switchValue |
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   795
        delta := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   796
        pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   797
        outStream show:'    '; 
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   798
                  show:switchValue;
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   799
                  show:' -> ';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   800
                  show:delta;
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   801
                  show:' [';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   802
                  show:(pc0 + delta);
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   803
                  show:']';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   804
                  cr.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   805
    ].
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   806
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   807
    outStream show:'    '; 
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   808
              show:'default';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   809
              show:' -> ';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   810
              show:defaultOffset;
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   811
              show:' [';
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   812
              show:(pc0 + defaultOffset);
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   813
              show:']'.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   814
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   815
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   816
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   817
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   818
unsignedByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   819
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   820
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   821
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   822
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   823
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   824
    outStream
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   825
        show:byte 
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   826
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   827
    "Created: 16.4.1996 / 15:00:04 / cg"
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   828
    "Modified: 16.4.1996 / 15:30:55 / cg"
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   829
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   830
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   831
!JavaDecompiler class methodsFor:'documentation'!
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   832
b23a6474754f intitial checkin
cg
parents:
diff changeset
   833
version
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   834
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaDecompiler.st,v 1.26 1997/07/30 14:40:09 cg Exp $'
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   835
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   836
JavaDecompiler initialize!