JavaDecompiler.st
author Claus Gittinger <cg@exept.de>
Thu, 24 Nov 2011 12:00:57 +0100
changeset 2197 6c7576efbf16
parent 2166 52ef126d6b5f
child 2256 ee48f7dd70a9
permissions -rw-r--r--
changed: #copyright
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     1
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     3
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     4
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     5
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     6
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     7
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     8
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
     9
 hereby transferred.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
    10
"
701
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
    11
"{ Package: 'stx:libjava' }"
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
    12
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    13
Object subclass:#JavaDecompiler
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    14
	instanceVariableNames:'code pc javaMethod outStream classToCompileFor isStaticMethod
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    15
		lastConstIndex lastConstant accessedInstvars modifiedInstvars
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    16
		accessedStaticVars modifiedStaticVars sentMessages'
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    17
	classVariableNames:'DecoderTable'
b23a6474754f intitial checkin
cg
parents:
diff changeset
    18
	poolDictionaries:''
2108
ca8c4e7db2e8 category change
Claus Gittinger <cg@exept.de>
parents: 2095
diff changeset
    19
	category:'Languages-Java-Support-Decompiling'
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    20
!
b23a6474754f intitial checkin
cg
parents:
diff changeset
    21
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    22
!JavaDecompiler class methodsFor:'documentation'!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    23
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    24
copyright
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    25
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
    26
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    27
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    28
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    29
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    31
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    32
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    33
 hereby transferred.
2095
6773680aeb85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 749
diff changeset
    34
"
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    35
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    36
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    37
examples
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    38
"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    39
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    40
                                                                        [exBegin]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    41
    |m|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    42
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    43
    m := JAVA::java::lang::Object compiledMethodAt:#'toString()Ljava/lang/String;'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    44
    JavaDecompiler decompile:m to:Transcript.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    45
                                                                        [exEnd]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    46
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    47
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    48
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    49
                                                                        [exBegin]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    50
    |m|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    51
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    52
    m := JAVA::java::lang::Object compiledMethodAt:#'toString()Ljava/lang/String;'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    53
    JavaDecompiler decompile:m to:nil.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    54
                                                                        [exEnd]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    55
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    56
"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    57
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    58
! !
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    59
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
    60
!JavaDecompiler class methodsFor:'initialization'!
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    61
b23a6474754f intitial checkin
cg
parents:
diff changeset
    62
initialize
b23a6474754f intitial checkin
cg
parents:
diff changeset
    63
    DecoderTable := #(
b23a6474754f intitial checkin
cg
parents:
diff changeset
    64
        (nop)                                   "/ 0
b23a6474754f intitial checkin
cg
parents:
diff changeset
    65
        (aconst_null)                           "/ 1
b23a6474754f intitial checkin
cg
parents:
diff changeset
    66
        (iconst_m1)                             "/ 2
b23a6474754f intitial checkin
cg
parents:
diff changeset
    67
        (iconst_0)                              "/ 3
b23a6474754f intitial checkin
cg
parents:
diff changeset
    68
        (iconst_1)                              "/ 4
b23a6474754f intitial checkin
cg
parents:
diff changeset
    69
        (iconst_2)                              "/ 5
b23a6474754f intitial checkin
cg
parents:
diff changeset
    70
        (iconst_3)                              "/ 6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    71
        (iconst_4)                              "/ 7
b23a6474754f intitial checkin
cg
parents:
diff changeset
    72
        (iconst_5)                              "/ 8
b23a6474754f intitial checkin
cg
parents:
diff changeset
    73
        (lconst_0)                              "/ 9
b23a6474754f intitial checkin
cg
parents:
diff changeset
    74
        
b23a6474754f intitial checkin
cg
parents:
diff changeset
    75
        (lconst_1)                              "/ 10
b23a6474754f intitial checkin
cg
parents:
diff changeset
    76
        (fconst_0)                              "/ 11
b23a6474754f intitial checkin
cg
parents:
diff changeset
    77
        (fconst_1)                              "/ 12
b23a6474754f intitial checkin
cg
parents:
diff changeset
    78
        (fconst_2)                              "/ 13
b23a6474754f intitial checkin
cg
parents:
diff changeset
    79
        (dconst_0)                              "/ 14
b23a6474754f intitial checkin
cg
parents:
diff changeset
    80
        (dconst_1)                              "/ 15
b23a6474754f intitial checkin
cg
parents:
diff changeset
    81
        (bipush signedByte)                     "/ 16
b23a6474754f intitial checkin
cg
parents:
diff changeset
    82
        (sipush signedShort)                    "/ 17
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    83
        (ldc1 constIndexByte remember_ldc1)              "/ 18
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    84
        (ldc2 constIndexShort remember_ldc2)             "/ 19
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    85
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
    86
        (ldc2w constIndexShort remember_ldc2w)            "/ 20
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    87
        (iload localIndexByte)                  "/ 21
b23a6474754f intitial checkin
cg
parents:
diff changeset
    88
        (lload localIndexByte)                  "/ 22
b23a6474754f intitial checkin
cg
parents:
diff changeset
    89
        (fload localIndexByte)                  "/ 23
b23a6474754f intitial checkin
cg
parents:
diff changeset
    90
        (dload localIndexByte)                  "/ 24
b23a6474754f intitial checkin
cg
parents:
diff changeset
    91
        (aload localIndexByte)                  "/ 25
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
    92
        (iload_0)                               "/ 26
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
    93
        (iload_1)                               "/ 27
b23a6474754f intitial checkin
cg
parents:
diff changeset
    94
        (iload_2)                               "/ 28
b23a6474754f intitial checkin
cg
parents:
diff changeset
    95
        (iload_3)                               "/ 29
b23a6474754f intitial checkin
cg
parents:
diff changeset
    96
b23a6474754f intitial checkin
cg
parents:
diff changeset
    97
        (lload_0)                               "/ 30
b23a6474754f intitial checkin
cg
parents:
diff changeset
    98
        (lload_1)                               "/ 31
b23a6474754f intitial checkin
cg
parents:
diff changeset
    99
        (lload_2)                               "/ 32
b23a6474754f intitial checkin
cg
parents:
diff changeset
   100
        (lload_3)                               "/ 33
b23a6474754f intitial checkin
cg
parents:
diff changeset
   101
        (fload_0)                               "/ 34
b23a6474754f intitial checkin
cg
parents:
diff changeset
   102
        (fload_1)                               "/ 35
b23a6474754f intitial checkin
cg
parents:
diff changeset
   103
        (fload_2)                               "/ 36
b23a6474754f intitial checkin
cg
parents:
diff changeset
   104
        (fload_3)                               "/ 37
b23a6474754f intitial checkin
cg
parents:
diff changeset
   105
        (dload_0)                               "/ 38
b23a6474754f intitial checkin
cg
parents:
diff changeset
   106
        (dload_1)                               "/ 39
b23a6474754f intitial checkin
cg
parents:
diff changeset
   107
b23a6474754f intitial checkin
cg
parents:
diff changeset
   108
        (dload_2)                               "/ 40
b23a6474754f intitial checkin
cg
parents:
diff changeset
   109
        (dload_3)                               "/ 41
b23a6474754f intitial checkin
cg
parents:
diff changeset
   110
        (aload_0)                               "/ 42
b23a6474754f intitial checkin
cg
parents:
diff changeset
   111
        (aload_1)                               "/ 43
b23a6474754f intitial checkin
cg
parents:
diff changeset
   112
        (aload_2)                               "/ 44
b23a6474754f intitial checkin
cg
parents:
diff changeset
   113
        (aload_3)                               "/ 45
b23a6474754f intitial checkin
cg
parents:
diff changeset
   114
        (iaload)                                "/ 46
b23a6474754f intitial checkin
cg
parents:
diff changeset
   115
        (laload)                                "/ 47
b23a6474754f intitial checkin
cg
parents:
diff changeset
   116
        (faload)                                "/ 48
b23a6474754f intitial checkin
cg
parents:
diff changeset
   117
        (daload)                                "/ 49
b23a6474754f intitial checkin
cg
parents:
diff changeset
   118
b23a6474754f intitial checkin
cg
parents:
diff changeset
   119
        (aaload)                                "/ 50
b23a6474754f intitial checkin
cg
parents:
diff changeset
   120
        (baload)                                "/ 51
b23a6474754f intitial checkin
cg
parents:
diff changeset
   121
        (caload)                                "/ 52
b23a6474754f intitial checkin
cg
parents:
diff changeset
   122
        (saload)                                "/ 53
b23a6474754f intitial checkin
cg
parents:
diff changeset
   123
        (istore localIndexByte)                 "/ 54
b23a6474754f intitial checkin
cg
parents:
diff changeset
   124
        (lstore localIndexByte)                 "/ 55
b23a6474754f intitial checkin
cg
parents:
diff changeset
   125
        (fstore localIndexByte)                 "/ 56
b23a6474754f intitial checkin
cg
parents:
diff changeset
   126
        (dstore localIndexByte)                 "/ 57
b23a6474754f intitial checkin
cg
parents:
diff changeset
   127
        (astore localIndexByte)                 "/ 58
b23a6474754f intitial checkin
cg
parents:
diff changeset
   128
        (istore_0)                              "/ 59
b23a6474754f intitial checkin
cg
parents:
diff changeset
   129
b23a6474754f intitial checkin
cg
parents:
diff changeset
   130
        (istore_1)                              "/ 60
b23a6474754f intitial checkin
cg
parents:
diff changeset
   131
        (istore_2)                              "/ 61
b23a6474754f intitial checkin
cg
parents:
diff changeset
   132
        (istore_3)                              "/ 62
b23a6474754f intitial checkin
cg
parents:
diff changeset
   133
        (lstore_0)                              "/ 63
b23a6474754f intitial checkin
cg
parents:
diff changeset
   134
        (lstore_1)                              "/ 64
b23a6474754f intitial checkin
cg
parents:
diff changeset
   135
        (lstore_2)                              "/ 65
b23a6474754f intitial checkin
cg
parents:
diff changeset
   136
        (lstore_3)                              "/ 66
b23a6474754f intitial checkin
cg
parents:
diff changeset
   137
        (fstore_0)                              "/ 67
b23a6474754f intitial checkin
cg
parents:
diff changeset
   138
        (fstore_1)                              "/ 68
b23a6474754f intitial checkin
cg
parents:
diff changeset
   139
        (fstore_2)                              "/ 69
b23a6474754f intitial checkin
cg
parents:
diff changeset
   140
b23a6474754f intitial checkin
cg
parents:
diff changeset
   141
        (fstore_3)                              "/ 70
b23a6474754f intitial checkin
cg
parents:
diff changeset
   142
        (dstore_0)                              "/ 71
b23a6474754f intitial checkin
cg
parents:
diff changeset
   143
        (dstore_1)                              "/ 72
b23a6474754f intitial checkin
cg
parents:
diff changeset
   144
        (dstore_2)                              "/ 73
b23a6474754f intitial checkin
cg
parents:
diff changeset
   145
        (dstore_3)                              "/ 74
b23a6474754f intitial checkin
cg
parents:
diff changeset
   146
        (astore_0)                              "/ 75
b23a6474754f intitial checkin
cg
parents:
diff changeset
   147
        (astore_1)                              "/ 76
b23a6474754f intitial checkin
cg
parents:
diff changeset
   148
        (astore_2)                              "/ 77
b23a6474754f intitial checkin
cg
parents:
diff changeset
   149
        (astore_3)                              "/ 78
b23a6474754f intitial checkin
cg
parents:
diff changeset
   150
        (iastore)                               "/ 79
b23a6474754f intitial checkin
cg
parents:
diff changeset
   151
b23a6474754f intitial checkin
cg
parents:
diff changeset
   152
        (lastore)                               "/ 80
b23a6474754f intitial checkin
cg
parents:
diff changeset
   153
        (fastore)                               "/ 81
b23a6474754f intitial checkin
cg
parents:
diff changeset
   154
        (dastore)                               "/ 82
b23a6474754f intitial checkin
cg
parents:
diff changeset
   155
        (aastore)                               "/ 83
b23a6474754f intitial checkin
cg
parents:
diff changeset
   156
        (bastore)                               "/ 84
b23a6474754f intitial checkin
cg
parents:
diff changeset
   157
        (castore)                               "/ 85
b23a6474754f intitial checkin
cg
parents:
diff changeset
   158
        (sastore)                               "/ 86
b23a6474754f intitial checkin
cg
parents:
diff changeset
   159
        (pop)                                   "/ 87
b23a6474754f intitial checkin
cg
parents:
diff changeset
   160
        (pop2)                                  "/ 88
b23a6474754f intitial checkin
cg
parents:
diff changeset
   161
        (dup)                                   "/ 89
b23a6474754f intitial checkin
cg
parents:
diff changeset
   162
b23a6474754f intitial checkin
cg
parents:
diff changeset
   163
        (dup_x1)                                "/ 90
b23a6474754f intitial checkin
cg
parents:
diff changeset
   164
        (dup_x2)                                "/ 91
b23a6474754f intitial checkin
cg
parents:
diff changeset
   165
        (dup2)                                  "/ 92
b23a6474754f intitial checkin
cg
parents:
diff changeset
   166
        (dup2_x1)                               "/ 93
b23a6474754f intitial checkin
cg
parents:
diff changeset
   167
        (dup2_x2)                               "/ 94
b23a6474754f intitial checkin
cg
parents:
diff changeset
   168
        (swap)                                  "/ 95
b23a6474754f intitial checkin
cg
parents:
diff changeset
   169
        (iadd)                                  "/ 96
b23a6474754f intitial checkin
cg
parents:
diff changeset
   170
        (ladd)                                  "/ 97
b23a6474754f intitial checkin
cg
parents:
diff changeset
   171
        (fadd)                                  "/ 98
b23a6474754f intitial checkin
cg
parents:
diff changeset
   172
        (dadd)                                  "/ 99
b23a6474754f intitial checkin
cg
parents:
diff changeset
   173
b23a6474754f intitial checkin
cg
parents:
diff changeset
   174
        (isub)                                  "/ 100
b23a6474754f intitial checkin
cg
parents:
diff changeset
   175
        (lsub)                                  "/ 101
b23a6474754f intitial checkin
cg
parents:
diff changeset
   176
        (fsub)                                  "/ 102
b23a6474754f intitial checkin
cg
parents:
diff changeset
   177
        (dsub)                                  "/ 103
b23a6474754f intitial checkin
cg
parents:
diff changeset
   178
        (imul)                                  "/ 104
b23a6474754f intitial checkin
cg
parents:
diff changeset
   179
        (lmul)                                  "/ 105
b23a6474754f intitial checkin
cg
parents:
diff changeset
   180
        (fmul)                                  "/ 106
b23a6474754f intitial checkin
cg
parents:
diff changeset
   181
        (dmul)                                  "/ 107
b23a6474754f intitial checkin
cg
parents:
diff changeset
   182
        (idiv)                                  "/ 108
b23a6474754f intitial checkin
cg
parents:
diff changeset
   183
        (ldiv)                                  "/ 109
b23a6474754f intitial checkin
cg
parents:
diff changeset
   184
b23a6474754f intitial checkin
cg
parents:
diff changeset
   185
        (fdiv)                                  "/ 110
b23a6474754f intitial checkin
cg
parents:
diff changeset
   186
        (ddiv)                                  "/ 111
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   187
"/        (imod)                                  "/ 112     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   188
        (irem)                                  "/ 112
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   189
"/        (lmod)                                  "/ 113     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   190
        (lrem)                                  "/ 113
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   191
"/        (fmod)                                  "/ 114     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   192
        (frem)                                  "/ 114
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   193
"/        (dmod)                                  "/ 115     "/ obsolete
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 68
diff changeset
   194
        (drem)                                  "/ 115
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   195
        (ineg)                                  "/ 116
b23a6474754f intitial checkin
cg
parents:
diff changeset
   196
        (lneg)                                  "/ 117
b23a6474754f intitial checkin
cg
parents:
diff changeset
   197
        (fneg)                                  "/ 118
b23a6474754f intitial checkin
cg
parents:
diff changeset
   198
        (dneg)                                  "/ 119
b23a6474754f intitial checkin
cg
parents:
diff changeset
   199
b23a6474754f intitial checkin
cg
parents:
diff changeset
   200
        (ishl)                                  "/ 120
b23a6474754f intitial checkin
cg
parents:
diff changeset
   201
        (lshl)                                  "/ 121
b23a6474754f intitial checkin
cg
parents:
diff changeset
   202
        (ishr)                                  "/ 122
b23a6474754f intitial checkin
cg
parents:
diff changeset
   203
        (lshr)                                  "/ 123
b23a6474754f intitial checkin
cg
parents:
diff changeset
   204
        (iushr)                                 "/ 124
b23a6474754f intitial checkin
cg
parents:
diff changeset
   205
        (lushr)                                 "/ 125
b23a6474754f intitial checkin
cg
parents:
diff changeset
   206
        (iand)                                  "/ 126
b23a6474754f intitial checkin
cg
parents:
diff changeset
   207
        (land)                                  "/ 127
b23a6474754f intitial checkin
cg
parents:
diff changeset
   208
        (ior)                                   "/ 128
b23a6474754f intitial checkin
cg
parents:
diff changeset
   209
        (lor)                                   "/ 129
b23a6474754f intitial checkin
cg
parents:
diff changeset
   210
b23a6474754f intitial checkin
cg
parents:
diff changeset
   211
        (ixor)                                  "/ 130
b23a6474754f intitial checkin
cg
parents:
diff changeset
   212
        (lxor)                                  "/ 131
39
20fa5af3b873 checkin from browser
cg
parents: 36
diff changeset
   213
        (iinc localIndexByte signedByte)        "/ 132
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   214
        (i2l)                                   "/ 133
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   215
        (i2f)                                   "/ 134
52
1dc41619b6f8 checkin from browser
cg
parents: 44
diff changeset
   216
        (i2d)                                   "/ 135
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   217
        (l2i)                                   "/ 136    
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   218
        (l2f)                                   "/ 137
b23a6474754f intitial checkin
cg
parents:
diff changeset
   219
        (l2d)                                   "/ 138
44
331e16746ad6 checkin from browser
cg
parents: 41
diff changeset
   220
        (f2i)                                   "/ 139
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   221
b23a6474754f intitial checkin
cg
parents:
diff changeset
   222
        (f2l)                                   "/ 140
b23a6474754f intitial checkin
cg
parents:
diff changeset
   223
        (f2d)                                   "/ 141
b23a6474754f intitial checkin
cg
parents:
diff changeset
   224
        (d2i)                                   "/ 142
b23a6474754f intitial checkin
cg
parents:
diff changeset
   225
        (d2l)                                   "/ 143
b23a6474754f intitial checkin
cg
parents:
diff changeset
   226
        (d2f)                                   "/ 144
b23a6474754f intitial checkin
cg
parents:
diff changeset
   227
        (int2byte)                              "/ 145
b23a6474754f intitial checkin
cg
parents:
diff changeset
   228
        (int2char)                              "/ 146
b23a6474754f intitial checkin
cg
parents:
diff changeset
   229
        (int2short)                             "/ 147
b23a6474754f intitial checkin
cg
parents:
diff changeset
   230
        (lcmp)                                  "/ 148
b23a6474754f intitial checkin
cg
parents:
diff changeset
   231
        (fcmpl)                                 "/ 149
b23a6474754f intitial checkin
cg
parents:
diff changeset
   232
b23a6474754f intitial checkin
cg
parents:
diff changeset
   233
        (fcmpg)                                 "/ 150
b23a6474754f intitial checkin
cg
parents:
diff changeset
   234
        (dcmpl)                                 "/ 151
b23a6474754f intitial checkin
cg
parents:
diff changeset
   235
        (dcmpg)                                 "/ 152
b23a6474754f intitial checkin
cg
parents:
diff changeset
   236
        (ifeq signedBranchShort)                "/ 153
b23a6474754f intitial checkin
cg
parents:
diff changeset
   237
        (ifne signedBranchShort)                "/ 154
b23a6474754f intitial checkin
cg
parents:
diff changeset
   238
        (iflt signedBranchShort)                "/ 155
b23a6474754f intitial checkin
cg
parents:
diff changeset
   239
        (ifge signedBranchShort)                "/ 156
b23a6474754f intitial checkin
cg
parents:
diff changeset
   240
        (ifgt signedBranchShort)                "/ 157
b23a6474754f intitial checkin
cg
parents:
diff changeset
   241
        (ifle signedBranchShort)                "/ 158
b23a6474754f intitial checkin
cg
parents:
diff changeset
   242
        (if_icmpeq signedBranchShort)           "/ 159
b23a6474754f intitial checkin
cg
parents:
diff changeset
   243
b23a6474754f intitial checkin
cg
parents:
diff changeset
   244
        (if_icmpne signedBranchShort)           "/ 160
b23a6474754f intitial checkin
cg
parents:
diff changeset
   245
        (if_icmplt signedBranchShort)           "/ 161
b23a6474754f intitial checkin
cg
parents:
diff changeset
   246
        (if_icmpge signedBranchShort)           "/ 162
b23a6474754f intitial checkin
cg
parents:
diff changeset
   247
        (if_icmpgt signedBranchShort)           "/ 163
b23a6474754f intitial checkin
cg
parents:
diff changeset
   248
        (if_icmple signedBranchShort)           "/ 164
b23a6474754f intitial checkin
cg
parents:
diff changeset
   249
        (if_acmpeq signedBranchShort)           "/ 165
b23a6474754f intitial checkin
cg
parents:
diff changeset
   250
        (if_acmpne signedBranchShort)           "/ 166
b23a6474754f intitial checkin
cg
parents:
diff changeset
   251
        (goto signedBranchShort)                "/ 167
b23a6474754f intitial checkin
cg
parents:
diff changeset
   252
        (jsr signedBranchShort)                 "/ 168
b23a6474754f intitial checkin
cg
parents:
diff changeset
   253
        (ret localIndexByte)                    "/ 169
b23a6474754f intitial checkin
cg
parents:
diff changeset
   254
b23a6474754f intitial checkin
cg
parents:
diff changeset
   255
        (tableswitch tableSwitchBytes)          "/ 170
b23a6474754f intitial checkin
cg
parents:
diff changeset
   256
        (lookupswitch lookupSwitchBytes)        "/ 171
b23a6474754f intitial checkin
cg
parents:
diff changeset
   257
        (ireturn)                               "/ 172
b23a6474754f intitial checkin
cg
parents:
diff changeset
   258
        (lreturn)                               "/ 173
b23a6474754f intitial checkin
cg
parents:
diff changeset
   259
        (freturn)                               "/ 174
b23a6474754f intitial checkin
cg
parents:
diff changeset
   260
        (dreturn)                               "/ 175
b23a6474754f intitial checkin
cg
parents:
diff changeset
   261
        (areturn)                               "/ 176
b23a6474754f intitial checkin
cg
parents:
diff changeset
   262
        (return)                                "/ 177
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   263
        (getstatic constIndexShort remember_getstatic)               "/ 178
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   264
        (putstatic constIndexShort remember_putstatic)               "/ 179
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   265
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   266
        (getfield constIndexShort remember_getfield)                 "/ 180
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   267
        (putfield constIndexShort remember_putfield)                 "/ 181
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   268
        (invokevirtual constIndexShort remember_invokevirtual)       "/ 182
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   269
        (invokenonvirtual constIndexShort remember_invokenonvirtual) "/ 183
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   270
        (invokestatic constIndexShort remember_invokestatic)         "/ 184
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   271
        (invokeinterface constIndexShort nargsByte reservedByte remember_invokeinterface)          "/ 185
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   272
        (newfromname)                           "/ 186
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   273
        (new constIndexShort remember_new)      "/ 187
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   274
        (newarray arrayTypeByte)                "/ 188
b23a6474754f intitial checkin
cg
parents:
diff changeset
   275
        (anewarray constIndexShort)             "/ 189
b23a6474754f intitial checkin
cg
parents:
diff changeset
   276
b23a6474754f intitial checkin
cg
parents:
diff changeset
   277
        (arraylength)                           "/ 190
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   278
        (athrow remember_athrow)                "/ 191
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   279
        (checkcast constIndexShort)             "/ 192
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   280
        (instanceof constIndexShort)            "/ 193
b23a6474754f intitial checkin
cg
parents:
diff changeset
   281
        (monitorenter)                          "/ 194
b23a6474754f intitial checkin
cg
parents:
diff changeset
   282
        (monitorexit)                           "/ 195
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   283
"/        (verifystack)                           "/ 196 obsolete (Alpha release)
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   284
        (wide)                                  "/ 196
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   285
        (multianewarray constIndexShort dimensionsByte) "/ 197
41
eb7974d88088 checkin from browser
cg
parents: 40
diff changeset
   286
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   287
        (ifnull    signedBranchShort)           "/ 198
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   288
        (ifnonnull signedBranchShort)           "/ 199
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   289
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   290
        (#'goto_w' signedBranchLong)            "/ 200
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   291
        (#'jsr_w' signedBranchShort)            "/ 201
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   292
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   293
        (breakpoint)                            "/ 202
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   294
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   295
        nil                                     "/ 203
b23a6474754f intitial checkin
cg
parents:
diff changeset
   296
        nil                                     "/ 204
b23a6474754f intitial checkin
cg
parents:
diff changeset
   297
        nil                                     "/ 205
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   298
        nil                                     "/ 206
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   299
        nil                                     "/ 207
b23a6474754f intitial checkin
cg
parents:
diff changeset
   300
        nil                                     "/ 208
68
ae0e5262ad38 Beta changes (some insns changed opcodes)
cg
parents: 61
diff changeset
   301
        (#'ret_w' signedBranchShort)            "/ 209
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   302
                                         
b23a6474754f intitial checkin
cg
parents:
diff changeset
   303
        nil                                     "/ 210
b23a6474754f intitial checkin
cg
parents:
diff changeset
   304
        nil                                     "/ 211
b23a6474754f intitial checkin
cg
parents:
diff changeset
   305
        nil                                     "/ 212
b23a6474754f intitial checkin
cg
parents:
diff changeset
   306
        nil                                     "/ 213
b23a6474754f intitial checkin
cg
parents:
diff changeset
   307
        nil                                     "/ 214
b23a6474754f intitial checkin
cg
parents:
diff changeset
   308
        nil                                     "/ 215
b23a6474754f intitial checkin
cg
parents:
diff changeset
   309
        nil                                     "/ 216
b23a6474754f intitial checkin
cg
parents:
diff changeset
   310
        nil                                     "/ 217
b23a6474754f intitial checkin
cg
parents:
diff changeset
   311
        nil                                     "/ 218
b23a6474754f intitial checkin
cg
parents:
diff changeset
   312
        nil                                     "/ 219
b23a6474754f intitial checkin
cg
parents:
diff changeset
   313
b23a6474754f intitial checkin
cg
parents:
diff changeset
   314
        nil                                     "/ 220
b23a6474754f intitial checkin
cg
parents:
diff changeset
   315
        nil                                     "/ 221
b23a6474754f intitial checkin
cg
parents:
diff changeset
   316
        nil                                     "/ 222
b23a6474754f intitial checkin
cg
parents:
diff changeset
   317
        nil                                     "/ 223
b23a6474754f intitial checkin
cg
parents:
diff changeset
   318
        nil                                     "/ 224
b23a6474754f intitial checkin
cg
parents:
diff changeset
   319
        nil                                     "/ 225
b23a6474754f intitial checkin
cg
parents:
diff changeset
   320
        nil                                     "/ 226
b23a6474754f intitial checkin
cg
parents:
diff changeset
   321
        nil                                     "/ 227
b23a6474754f intitial checkin
cg
parents:
diff changeset
   322
        nil                                     "/ 228
b23a6474754f intitial checkin
cg
parents:
diff changeset
   323
        nil                                     "/ 229
b23a6474754f intitial checkin
cg
parents:
diff changeset
   324
                                    
b23a6474754f intitial checkin
cg
parents:
diff changeset
   325
        nil                                     "/ 230
b23a6474754f intitial checkin
cg
parents:
diff changeset
   326
        nil                                     "/ 231
b23a6474754f intitial checkin
cg
parents:
diff changeset
   327
        nil                                     "/ 232
b23a6474754f intitial checkin
cg
parents:
diff changeset
   328
        nil                                     "/ 233
b23a6474754f intitial checkin
cg
parents:
diff changeset
   329
        nil                                     "/ 234
b23a6474754f intitial checkin
cg
parents:
diff changeset
   330
        nil                                     "/ 235
b23a6474754f intitial checkin
cg
parents:
diff changeset
   331
        nil                                     "/ 236
b23a6474754f intitial checkin
cg
parents:
diff changeset
   332
        nil                                     "/ 237
b23a6474754f intitial checkin
cg
parents:
diff changeset
   333
        nil                                     "/ 238
b23a6474754f intitial checkin
cg
parents:
diff changeset
   334
        nil                                     "/ 239
b23a6474754f intitial checkin
cg
parents:
diff changeset
   335
b23a6474754f intitial checkin
cg
parents:
diff changeset
   336
        nil                                     "/ 240
b23a6474754f intitial checkin
cg
parents:
diff changeset
   337
        nil                                     "/ 241
b23a6474754f intitial checkin
cg
parents:
diff changeset
   338
        nil                                     "/ 242
b23a6474754f intitial checkin
cg
parents:
diff changeset
   339
        nil                                     "/ 243
b23a6474754f intitial checkin
cg
parents:
diff changeset
   340
        nil                                     "/ 244
b23a6474754f intitial checkin
cg
parents:
diff changeset
   341
        nil                                     "/ 245
b23a6474754f intitial checkin
cg
parents:
diff changeset
   342
        nil                                     "/ 246
b23a6474754f intitial checkin
cg
parents:
diff changeset
   343
        nil                                     "/ 247
b23a6474754f intitial checkin
cg
parents:
diff changeset
   344
        nil                                     "/ 248
b23a6474754f intitial checkin
cg
parents:
diff changeset
   345
        nil                                     "/ 249
b23a6474754f intitial checkin
cg
parents:
diff changeset
   346
                                              
b23a6474754f intitial checkin
cg
parents:
diff changeset
   347
        nil                                     "/ 250
b23a6474754f intitial checkin
cg
parents:
diff changeset
   348
        nil                                     "/ 251
b23a6474754f intitial checkin
cg
parents:
diff changeset
   349
        nil                                     "/ 252
b23a6474754f intitial checkin
cg
parents:
diff changeset
   350
        nil                                     "/ 253
b23a6474754f intitial checkin
cg
parents:
diff changeset
   351
        nil                                     "/ 254
124
e30646ab8a71 *** empty log message ***
cg
parents: 119
diff changeset
   352
        (invokenonvirtual_d constIndexShort)    "/ 255 special - dummy invokenonvirtual
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   353
    )
b23a6474754f intitial checkin
cg
parents:
diff changeset
   354
b23a6474754f intitial checkin
cg
parents:
diff changeset
   355
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   356
     JavaDecompiler initialize
b23a6474754f intitial checkin
cg
parents:
diff changeset
   357
    "
b23a6474754f intitial checkin
cg
parents:
diff changeset
   358
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   359
    "Modified: / 16.11.1998 / 15:55:49 / cg"
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   360
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   361
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   362
!JavaDecompiler class methodsFor:'accessing'!
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   363
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   364
instructionTable
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   365
    ^ DecoderTable
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   366
! !
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   367
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   368
!JavaDecompiler class methodsFor:'class definition generation'!
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   369
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   370
definitionOf:aJavaClass on:s
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   371
    |pckgName needCR fields staticFields superClass
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   372
     interfaces methodList staticMethods nonStaticMethods
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   373
     accessAttributeStyle codeStyle classNameStyle methodNameStyle|
89fec395f511 color printing
cg
parents: 175
diff changeset
   374
89fec395f511 color printing
cg
parents: 175
diff changeset
   375
    accessAttributeStyle := Java prettyPrintStyle at:#accessAttribute.
89fec395f511 color printing
cg
parents: 175
diff changeset
   376
    codeStyle := Java prettyPrintStyle at:#code.
89fec395f511 color printing
cg
parents: 175
diff changeset
   377
    classNameStyle := Java prettyPrintStyle at:#className.
89fec395f511 color printing
cg
parents: 175
diff changeset
   378
    methodNameStyle := Java prettyPrintStyle at:#className.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   379
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   380
    pckgName := aJavaClass package.
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   381
    pckgName ~= aJavaClass name ifTrue:[
360
e3df9401df00 use #copyReplaceAll:with:
cg
parents: 264
diff changeset
   382
        s nextPutAll:'package ' , (pckgName copyReplaceAll:$/ with:$.).
175
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   383
        s nextPutAll:';'; cr; cr.
68da52e100ab *** empty log message ***
cg
parents: 165
diff changeset
   384
    ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   385
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   386
    needCR := false.
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   387
    s emphasis:accessAttributeStyle.
89fec395f511 color printing
cg
parents: 175
diff changeset
   388
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   389
    aJavaClass isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   390
       s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   391
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   392
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   393
    aJavaClass isAbstract ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   394
       s nextPutAll:'abstract '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   395
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   396
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   397
    aJavaClass isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   398
       s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   399
       needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   400
    ].
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   401
    s emphasis:codeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   402
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   403
    needCR ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   404
        s cr
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   405
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   406
    aJavaClass isInterface ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   407
       s nextPutAll:'interface '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   408
    ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   409
       s nextPutAll:'class '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   410
    ].
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   411
    s emphasis:classNameStyle; 
423
08af061c56a8 javaClass now uses its fullName in name
cg
parents: 360
diff changeset
   412
      nextPutAll:aJavaClass lastName; 
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   413
      emphasis:codeStyle; 
89fec395f511 color printing
cg
parents: 175
diff changeset
   414
      space.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   415
    superClass := aJavaClass superclass.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   416
591
0a52b3e7c77f checkin from browser
cg
parents: 488
diff changeset
   417
    (superClass ~~ (Java at:'java.lang.Object')
0a52b3e7c77f checkin from browser
cg
parents: 488
diff changeset
   418
    and:[superClass isJavaClass]) ifTrue:[
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   419
        s nextPutAll:'extends '.
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   420
        s emphasis:classNameStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   421
        (superClass package ~= 'java/lang' 
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   422
        and:[superClass package ~= pckgName]) ifTrue:[
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   423
            s nextPutAll:(superClass displayString). 
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   424
        ] ifFalse:[
423
08af061c56a8 javaClass now uses its fullName in name
cg
parents: 360
diff changeset
   425
            s nextPutAll:(superClass lastName).
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   426
        ].
89fec395f511 color printing
cg
parents: 175
diff changeset
   427
        s emphasis:codeStyle.
89fec395f511 color printing
cg
parents: 175
diff changeset
   428
        s space.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   429
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   430
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   431
    (interfaces := aJavaClass interfaces) size > 0 ifTrue:[
165
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   432
        (aJavaClass isInterface
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   433
        and:[interfaces size == 1]) ifTrue:[
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   434
            s nextPutAll:'extends '.
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   435
        ] ifFalse:[
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   436
            s nextPutAll:'implements '.
d524d23e045c checkin from browser
cg
parents: 161
diff changeset
   437
        ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   438
        interfaces keysAndValuesDo:[:nr :if |
443
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   439
            |nameString|
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   440
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   441
            nr ~~ 1 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   442
                s nextPutAll:', '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   443
            ].
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   444
            s emphasis:classNameStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   445
            (if package ~= 'java/lang' 
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   446
            and:[if package ~= pckgName]) ifTrue:[
443
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   447
                if isJavaClass ifFalse:[
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   448
                    "/ ought to be an unresolved class ...
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   449
                    nameString := if fullName copyReplaceAll:$/ with:$.
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   450
                ] ifTrue:[
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   451
                    nameString := if displayString
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   452
                ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   453
            ] ifFalse:[
443
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   454
                nameString := if lastName
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   455
            ].
443
f5c1f55d8bdb *** empty log message ***
cg
parents: 429
diff changeset
   456
            s nextPutAll:nameString.
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   457
            s emphasis:codeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   458
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   459
        s space.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   460
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   461
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   462
    s nextPutAll:'{'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   463
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   464
    needCR := false.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   465
    staticFields := aJavaClass staticFields.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   466
    staticFields size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   467
        needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   468
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   469
        staticFields do:[:aField |
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   470
            |type v|
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   471
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   472
            s nextPutAll:'    '.
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   473
            s emphasis:accessAttributeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   474
            aField isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   475
                s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   476
            ] ifFalse:[
487
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   477
                aField isPrivate ifTrue:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   478
                    s nextPutAll:'private '.
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   479
                ] ifFalse:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   480
                    aField isProtected ifTrue:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   481
                        s nextPutAll:'protected '.
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   482
                    ]
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   483
                ]
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   484
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   485
            s nextPutAll:'static '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   486
            aField isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   487
                s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   488
            ].
488
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   489
            aField isVolatile ifTrue:[
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   490
                s nextPutAll:'volatile '.
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   491
            ].
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   492
            s emphasis:codeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   493
594
0d5fea9542d3 checkin from browser
cg
parents: 593
diff changeset
   494
            (((type := aField type) startsWith:pckgName) 
0d5fea9542d3 checkin from browser
cg
parents: 593
diff changeset
   495
            or:[type startsWith:(pckgName copyReplaceAll:$/ with:$.)]) ifTrue:[
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   496
                type := type copyFrom:(pckgName size + 1 + 1).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   497
            ] ifFalse:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   498
                (type startsWith:'java.lang.') ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   499
                    type := type copyFrom:(11).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   500
                ]
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   501
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   502
            type := type copy replaceAll:$/ with:$..
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   503
            s nextPutAll:type; space;
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   504
              nextPutAll:aField name.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   505
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   506
            (v := aField constantValue) notNil ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   507
                s nextPutAll:' = '; nextPutAll:v displayString.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   508
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   509
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   510
            s nextPutAll:';'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   511
            needCR := true.
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
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   515
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   516
    fields := aJavaClass fields.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   517
    fields size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   518
        needCR ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   519
            s cr
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   520
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   521
        needCR := true.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   522
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   523
        fields do:[:aField |
593
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   524
            |type v|
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   525
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   526
            s nextPutAll:'    '.
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   527
            s emphasis:accessAttributeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   528
            aField isPublic ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   529
                s nextPutAll:'public '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   530
            ] ifFalse:[
487
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   531
                aField isPrivate ifTrue:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   532
                    s nextPutAll:'private '.
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   533
                ] ifFalse:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   534
                    aField isProtected ifTrue:[
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   535
                        s nextPutAll:'protected '.
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   536
                    ]
572b51e5f02c checkin from browser
cg
parents: 456
diff changeset
   537
                ]
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   538
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   539
            aField isFinal ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   540
                s nextPutAll:'final '.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   541
            ].
488
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   542
            aField isTransient ifTrue:[
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   543
                s nextPutAll:'transient '.
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   544
            ].
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   545
            aField isVolatile ifTrue:[
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   546
                s nextPutAll:'volatile '.
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   547
            ].
187
89fec395f511 color printing
cg
parents: 175
diff changeset
   548
            s emphasis:codeStyle.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   549
594
0d5fea9542d3 checkin from browser
cg
parents: 593
diff changeset
   550
            (((type := aField type) startsWith:pckgName) 
0d5fea9542d3 checkin from browser
cg
parents: 593
diff changeset
   551
            or:[type startsWith:(pckgName copyReplaceAll:$/ with:$.)]) ifTrue:[
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   552
                type := type copyFrom:(pckgName size + 1 + 1).
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   553
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   554
            type := type copy replaceAll:$/ with:$..
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   555
            s nextPutAll:type; space;
593
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   556
              nextPutAll:aField name.
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   557
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   558
            (v := aField constantValue) notNil ifTrue:[
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   559
                s nextPutAll:' = '; nextPutAll:v displayString.
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   560
            ].
8e713803c6e6 checkin from browser
cg
parents: 591
diff changeset
   561
            s nextPutAll:';'; cr.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   562
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   563
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   564
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   565
    aJavaClass methodDictionary size > 0 ifTrue:[
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   566
        needCR ifTrue:[
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   567
            s cr.
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   568
            needCR := false.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   569
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   570
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   571
        staticMethods := OrderedCollection new.
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   572
        nonStaticMethods := OrderedCollection new.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   573
        "/
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   574
        "/ static methods first ...
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   575
        "/
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   576
        aJavaClass methodDictionary do:[:aMethod |
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   577
            |m|
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   578
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   579
            m := aMethod.
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   580
            m isWrapped ifTrue:[
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   581
                m := m originalMethod
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   582
            ].
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   583
            m isStatic ifTrue:[
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   584
                staticMethods add:m.
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   585
            ] ifFalse:[
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   586
                nonStaticMethods add:m.
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   587
            ]
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   588
        ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   589
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   590
        staticMethods notEmpty ifTrue:[
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   591
            staticMethods sort:[:a :b | a name < b name].
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   592
            staticMethods do:[:aMethod |
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   593
                self methodDefinitionOf:aMethod inPackage:pckgName on:s.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   594
            ].
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   595
            s cr.
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   596
        ].
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   597
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   598
        "/
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   599
        "/ instance methods ...
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   600
        "/
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   601
        nonStaticMethods notEmpty ifTrue:[
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   602
            nonStaticMethods sort:[:a :b | a name < b name].
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   603
            nonStaticMethods do:[:aMethod |
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   604
                self methodDefinitionOf:aMethod inPackage:pckgName on:s.
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   605
            ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   606
        ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   607
    ].
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   608
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   609
    s nextPutAll:'}'; cr.
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   610
360
e3df9401df00 use #copyReplaceAll:with:
cg
parents: 264
diff changeset
   611
    "Created: / 22.3.1997 / 14:29:37 / cg"
488
a010f99aa6f6 *** empty log message ***
cg
parents: 487
diff changeset
   612
    "Modified: / 5.12.1998 / 15:58:37 / cg"
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   613
!
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   614
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   615
methodDefinitionOf: m inPackage: pckgName on: s 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   616
    | aMethod nm  specComponents  accessAttributeStyle  codeStyle  methodNameStyle |
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   617
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   618
    aMethod := m.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   619
    m isWrapped ifTrue: [
450
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   620
        aMethod := m originalMethod
4f6899814521 checkin from browser
cg
parents: 445
diff changeset
   621
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   622
    accessAttributeStyle := Java prettyPrintStyle at: #accessAttribute.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   623
    codeStyle := Java prettyPrintStyle at: #code.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   624
    methodNameStyle := Java prettyPrintStyle at: #methodName.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   625
    s nextPutAll: '    '.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   626
    s emphasis: accessAttributeStyle.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   627
    aMethod isPublic ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   628
        s nextPutAll: 'public '.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   629
    ] ifFalse: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   630
        aMethod isProtected ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   631
            s nextPutAll: 'protected '.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   632
        ] ifFalse: [ s nextPutAll: 'private '. ]
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   633
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   634
    aMethod isFinal ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   635
        s nextPutAll: 'final '.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   636
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   637
    aMethod isStatic ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   638
        s nextPutAll: 'static '.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   639
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   640
    aMethod isNative ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   641
        s nextPutAll: 'native '.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   642
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   643
    aMethod isSynchronized ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   644
        s nextPutAll: 'synchronized '.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   645
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   646
    s emphasis: codeStyle.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   647
    (nm := aMethod name) = '<init>' ifTrue: [
423
08af061c56a8 javaClass now uses its fullName in name
cg
parents: 360
diff changeset
   648
        nm := aMethod javaClass lastName.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   649
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   650
    specComponents := JavaMethod 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   651
                specComponentsWithArgsFromSignature: (aMethod instVarNamed:#descriptor)
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   652
                withName: nm
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   653
                in: (aMethod javaClass package).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   654
    s nextPutAll: (specComponents at: 1).
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   655
    s space.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   656
    s emphasis: methodNameStyle.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   657
    s nextPutAll: (specComponents at: 2).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   658
    s emphasis: codeStyle.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   659
    s nextPutAll: ' ('.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   660
    s nextPutAll: (specComponents at: 3).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   661
    s nextPutAll: ')'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   662
    aMethod exceptionTable size > 0 ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   663
        s nextPutAll: ' throws '.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   664
        aMethod exceptionTable 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   665
            keysAndValuesDo: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   666
                :index :aClassRef | 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   667
                | nm |
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   668
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   669
                nm := aClassRef name.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   670
                (nm startsWith: pckgName) ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   671
                    nm := nm copyFrom: pckgName size + 2
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   672
                ] ifFalse: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   673
                    (nm startsWith: 'java/lang') ifTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   674
                        nm := nm copyFrom: 'java/lang' size + 2.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   675
                    ].
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   676
                ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   677
                index ~~ 1 ifTrue: [ s nextPutAll: ', ' ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   678
                s nextPutAll: (nm copyReplaceAll: $/ with: $.)
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   679
            ]
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   680
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   681
    s
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   682
        nextPutAll: ';';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   683
        cr.
190
9558f26c7a97 checkin from browser
cg
parents: 187
diff changeset
   684
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   685
    "Created: / 01-08-1997 / 12:24:11 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   686
    "Modified: / 14-11-1998 / 00:03:09 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   687
    "Modified: / 04-06-2011 / 17:18:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
   688
    "Modified: / 15-08-2011 / 08:52:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
161
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   689
! !
fe93b8ee561e classDef generator
cg
parents: 156
diff changeset
   690
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   691
!JavaDecompiler class methodsFor:'decompiling'!
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   692
b23a6474754f intitial checkin
cg
parents:
diff changeset
   693
decompile:aJavaMethod
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   694
    self decompile:aJavaMethod to:Transcript
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   695
!
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   696
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   697
decompile:aJavaMethod to:aStream
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   698
    self new decompile:aJavaMethod to:aStream
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   699
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   700
b23a6474754f intitial checkin
cg
parents:
diff changeset
   701
!JavaDecompiler methodsFor:'decompiling'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   702
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   703
decompile:aJavaMethod to:aStream
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   704
    |who endPC|
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   705
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   706
    outStream := aStream.
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   707
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   708
    isStaticMethod := aJavaMethod isStatic.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   709
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   710
    who := aJavaMethod who.
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   711
    who notNil ifTrue:[
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
   712
        classToCompileFor := who methodClass.
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   713
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   714
            outStream cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   715
"/            outStream showCR:'decompiling ' , classToCompileFor name , '>>' , (who methodSelector) , ':'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   716
            outStream showCR:'decompiling ' , aJavaMethod displayString , ':'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   717
            isStaticMethod ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   718
                outStream show:'static method'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   719
            ].
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   720
            outStream cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   721
            outStream cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   722
        ]
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   723
    ].
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   724
b23a6474754f intitial checkin
cg
parents:
diff changeset
   725
    javaMethod := aJavaMethod.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   726
    code := aJavaMethod javaByteCode.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   727
    endPC := code size.
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   728
    endPC == 0 ifTrue:[
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   729
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   730
            javaMethod isNative ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   731
                outStream nextPutAll:'// native method'; cr
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   732
            ] ifFalse:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   733
                outStream nextPutAll:'{}  // no bytecode'; cr
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   734
            ].
18
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   735
        ].
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   736
        ^ self
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   737
    ].
6c07dc4b1118 checkin from browser
cg
parents: 6
diff changeset
   738
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   739
    self enumerateInstructions.
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   740
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   741
    "Modified: / 9.11.1999 / 15:33:20 / cg"
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   742
!
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   743
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   744
enumerateInstructions
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   745
    |who endPC insn spec op wide|
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   746
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   747
    wide := false.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   748
    pc := 1.
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   749
    endPC := code size.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   750
    [pc <= endPC] whileTrue:[
b23a6474754f intitial checkin
cg
parents:
diff changeset
   751
        insn := code at:pc.
b23a6474754f intitial checkin
cg
parents:
diff changeset
   752
        pc := pc + 1.
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   753
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   754
        spec := DecoderTable at:(insn + 1).
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   755
        spec isNil ifTrue:[
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   756
            op := '** invalid opcode: ', insn printString, ' **'
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   757
        ] ifFalse:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   758
            op := spec at:1
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   759
        ].
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   760
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   761
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   762
            outStream 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   763
                show:((pc - 1 - 1) printStringPaddedTo:4); 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   764
                show:' '.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   765
            outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   766
                show:(wide ifTrue:[op , '(w)'] ifFalse:[op]).
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   767
            outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   768
                show:' '.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   769
        ].
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   770
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   771
        op == #wide ifTrue:[
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   772
            wide := true.
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   773
        ] ifFalse:[
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   774
            self instructionHookPC:(pc-1) op:op spec:spec.
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   775
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   776
            spec notNil ifTrue:[
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   777
                spec from:2 to:spec size do:[:what |
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   778
                    wide ifTrue:[
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   779
                        self perform:(what , '_wide') asSymbol.
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   780
                    ] ifFalse:[
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   781
                        self perform:what
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   782
                    ]
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   783
                ].
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   784
            ].
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   785
            wide := false.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   786
        ].
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   787
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   788
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   789
            outStream cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   790
        ]
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   791
    ]
b23a6474754f intitial checkin
cg
parents:
diff changeset
   792
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   793
    "Created: / 9.11.1999 / 15:32:49 / cg"
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   794
    "Modified: / 9.11.1999 / 15:36:22 / cg"
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   795
!
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   796
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   797
instructionHookPC:pc op:op spec:spec
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   798
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   799
    "Created: / 9.11.1999 / 15:35:19 / cg"
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   800
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
   801
b23a6474754f intitial checkin
cg
parents:
diff changeset
   802
!JavaDecompiler methodsFor:'operand decoding'!
b23a6474754f intitial checkin
cg
parents:
diff changeset
   803
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   804
arrayTypeByte
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   805
    |hi low index type|
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   806
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   807
    index := code at:pc.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   808
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   809
445
215b2b128be5 checkin from browser
cg
parents: 443
diff changeset
   810
    type := #('T_ARRAY' 'invalid2' 'invalid3' 'T_BOOLEAN'
215b2b128be5 checkin from browser
cg
parents: 443
diff changeset
   811
              'T_CHAR'  'T_FLOAT'  'T_DOUBLE'  'T_BYTE' 
215b2b128be5 checkin from browser
cg
parents: 443
diff changeset
   812
              'T_SHORT' 'T_INT'    'T_LONG' ) at:index ifAbsent:['invalid' , index printString].
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   813
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   814
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   815
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   816
            show:index; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   817
            show:' [';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   818
            show:type;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   819
            show:']'
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   820
    ]
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   821
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   822
    "Created: / 16.11.1998 / 15:41:47 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   823
    "Modified: / 16.11.1998 / 15:43:27 / cg"
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   824
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   825
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   826
constIndexByte
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   827
    lastConstIndex := code at:pc.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   828
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   829
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   830
    lastConstant := javaMethod constantPool at:lastConstIndex ifAbsent:nil.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   831
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   832
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   833
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   834
            show:lastConstIndex; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   835
            show:' ['; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   836
            show:(lastConstant ? '??') displayString; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   837
            show:'] '
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   838
    ]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   839
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   840
    "Created: / 16.11.1998 / 15:42:56 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   841
    "Modified: / 16.11.1998 / 15:58:52 / cg"
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   842
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   843
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   844
constIndexShort
701
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   845
    |s|
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   846
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   847
    lastConstIndex := code wordAt:pc MSB:true.
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   848
    pc := pc + 2.
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
   849
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   850
    lastConstant := javaMethod constantPool at:lastConstIndex ifAbsent:nil.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   851
    outStream notNil ifTrue:[
701
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   852
        s := (lastConstant ? '??') displayString.
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   853
        s isString ifTrue:[
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   854
            s bitsPerCharacter > 8 ifTrue:[
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   855
                s := '...a 2-byte string...'
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   856
            ]
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   857
        ].
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   858
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   859
            show:lastConstIndex; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   860
            show:' ['; 
701
4d62047c1358 *** empty log message ***
cg
parents: 620
diff changeset
   861
            show:s; 
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   862
            show:'] '
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   863
    ]
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   864
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   865
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   866
    "Modified: / 16.11.1998 / 15:59:23 / cg"
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   867
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   868
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   869
dimensionsByte
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   870
    outStream notNil ifTrue:[
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   871
        outStream show:' dims= '. 
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   872
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   873
    self unsignedByte
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   874
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   875
    "Modified: / 9.11.1999 / 15:46:06 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   876
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   877
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   878
localIndexByte
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   879
    |index|
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   880
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   881
    index := code at:pc.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   882
    pc := pc + 1.
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   883
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   884
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   885
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   886
            show:index; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   887
            show:' '
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   888
    ]
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   889
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   890
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   891
    "Modified: / 16.11.1998 / 15:43:55 / cg"
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   892
!
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   893
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   894
localIndexByte_wide
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   895
    |index|
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   896
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   897
    index := code wordAt:pc MSB:true.
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   898
    pc := pc + 2.
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   899
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   900
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   901
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   902
            show:index; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   903
            show:' '
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   904
    ]
198
5543d1079a4a *** empty log message ***
cg
parents: 190
diff changeset
   905
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   906
    "Created: / 4.8.1997 / 19:02:09 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   907
    "Modified: / 16.11.1998 / 15:44:02 / cg"
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   908
!
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   909
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   910
lookupSwitchBytes
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   911
    |defaultOffset delta nPairs match pc0|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   912
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   913
    pc0 := pc-1.  "/ i.e. the pc of the tableSwitch op
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   914
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   915
    [(pc-1) \\ 4 ~~ 0] whileTrue:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   916
        pc := pc + 1
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   917
    ].
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   918
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   919
    defaultOffset := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   920
    pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   921
    nPairs := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   922
    pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   923
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   924
    outStream notNil ifTrue:[
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   925
        outStream show:'n='; show:nPairs; cr.
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   926
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   927
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   928
    nPairs timesRepeat:[
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   929
        match := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   930
        pc := pc + 4.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   931
        delta := code signedDoubleWordAt:pc MSB:true.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   932
        pc := pc + 4.
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   933
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   934
            outStream show:'    '; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   935
                      show:match;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   936
                      show:' -> ';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   937
                      show:delta;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   938
                      show:' [';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   939
                      show:(pc0 - 1 + delta);
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   940
                      show:']';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   941
                      cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   942
        ]
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   943
    ].
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   944
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   945
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   946
        outStream show:'    '; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   947
                  show:'default';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   948
                  show:' -> ';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   949
                  show:defaultOffset;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   950
                  show:' [';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   951
                  show:(pc0 - 1 + defaultOffset);
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   952
                  show:']'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   953
    ]
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
   954
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
   955
    "Modified: / 9.11.1999 / 15:45:50 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   956
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   957
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   958
nargsByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   959
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   960
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   961
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   962
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   963
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   964
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   965
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   966
            show:byte 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   967
    ]
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   968
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   969
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   970
    "Modified: / 16.11.1998 / 15:44:34 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   971
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   972
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   973
reservedByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   974
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   975
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   976
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   977
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   978
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   979
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   980
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   981
            show:byte 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   982
    ]
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   983
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   984
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   985
    "Modified: / 16.11.1998 / 15:44:42 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   986
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
   987
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   988
signedBranchShort
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   989
    |index constants|
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   990
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
   991
    index := code signedWordAt:pc MSB:true.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
   992
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   993
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   994
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   995
            show:index; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   996
            show:' ['; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   997
            show:(pc - 1 + index - 1); 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   998
            show:']'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
   999
    ].
25
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
  1000
735dde512f03 Fix signedBranchShort
stefan
parents: 24
diff changeset
  1001
    pc := pc + 2.
23
3e20532cd5bc checkin from browser
cg
parents: 19
diff changeset
  1002
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  1003
    "Created: / 16.4.1996 / 15:00:04 / cg"
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1004
    "Modified: / 16.11.1998 / 15:44:51 / cg"
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1005
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1006
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1007
signedByte
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1008
    |byte constants|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1009
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1010
    byte := code signedByteAt:pc.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1011
    pc := pc + 1.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1012
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1013
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1014
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1015
            show:byte 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1016
    ]
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1017
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1018
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1019
    "Modified: / 16.11.1998 / 15:44:58 / cg"
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1020
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1021
261
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1022
signedByte_wide
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1023
    self signedShort
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1024
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1025
    "Created: / 13.1.1998 / 23:56:36 / cg"
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1026
!
d95d5a3cc475 lots of new stuff
cg
parents: 252
diff changeset
  1027
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1028
signedShort
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1029
    |word constants|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1030
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1031
    word := code signedWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1032
    pc := pc + 2.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1033
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1034
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1035
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1036
            show:word 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1037
    ]
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1038
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1039
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1040
    "Modified: / 16.11.1998 / 15:45:06 / cg"
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1041
!
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1042
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1043
tableSwitchBytes
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1044
    |defaultOffset delta low high pc0|
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1045
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1046
    pc0 := pc-1.  "/ i.e. the pc of the tableSwitch op
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1047
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1048
    [(pc-1) \\ 4 ~~ 0] whileTrue:[
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1049
        pc := pc + 1
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1050
    ].
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1051
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1052
    defaultOffset := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1053
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1054
    low := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1055
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1056
    high := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1057
    pc := pc + 4.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1058
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
  1059
    outStream notNil ifTrue:[
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
  1060
        outStream cr.
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
  1061
    ].
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1062
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1063
    low to:high do:[:switchValue |
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1064
        delta := code signedDoubleWordAt:pc MSB:true.
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1065
        pc := pc + 4.
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1066
        outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1067
            outStream show:'    '; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1068
                      show:switchValue;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1069
                      show:' -> ';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1070
                      show:delta;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1071
                      show:' [';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1072
                      show:(pc0 - 1 + delta);
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1073
                      show:']';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1074
                      cr.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1075
        ].
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1076
    ].
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1077
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1078
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1079
        outStream show:'    '; 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1080
                  show:'default';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1081
                  show:' -> ';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1082
                  show:defaultOffset;
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1083
                  show:' [';
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1084
                  show:(pc0 - 1 + defaultOffset);
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1085
                  show:']'.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1086
    ]
24
4a9822b95fc0 checkin from browser
cg
parents: 23
diff changeset
  1087
620
c19348d8e671 refactored for subclassability
cg
parents: 594
diff changeset
  1088
    "Modified: / 9.11.1999 / 15:44:36 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1089
!
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1090
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1091
unsignedByte
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1092
    |byte constants|
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1093
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1094
    byte := code byteAt:pc.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1095
    pc := pc + 1.
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1096
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1097
    outStream notNil ifTrue:[
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1098
        outStream
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1099
            show:byte 
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1100
    ]
27
4560bb77bb36 checkin from browser
cg
parents: 25
diff changeset
  1101
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1102
    "Created: / 16.4.1996 / 15:00:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1103
    "Modified: / 16.11.1998 / 15:45:33 / cg"
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
  1104
! !
b23a6474754f intitial checkin
cg
parents:
diff changeset
  1105
229
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1106
!JavaDecompiler methodsFor:'private'!
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1107
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1108
popType:type
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1109
    (type == #long) ifTrue:[
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1110
        ^ self popLong
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1111
    ].
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1112
    type == #double ifTrue:[
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1113
        ^ self popDouble
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1114
    ].
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1115
    ^ self popStack
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1116
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1117
    "Created: 16.8.1997 / 03:14:11 / cg"
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1118
! !
b91c9462ac83 *** empty log message ***
cg
parents: 198
diff changeset
  1119
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1120
!JavaDecompiler methodsFor:'statistics'!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1121
456
bbed0c5ce05f checkin from browser
cg
parents: 454
diff changeset
  1122
remember_athrow
bbed0c5ce05f checkin from browser
cg
parents: 454
diff changeset
  1123
bbed0c5ce05f checkin from browser
cg
parents: 454
diff changeset
  1124
    "Created: / 16.11.1998 / 19:37:32 / cg"
bbed0c5ce05f checkin from browser
cg
parents: 454
diff changeset
  1125
!
bbed0c5ce05f checkin from browser
cg
parents: 454
diff changeset
  1126
454
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1127
remember_getfield
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1128
    |fieldRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1129
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1130
    fieldRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1131
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1132
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1133
    "Created: / 16.11.1998 / 16:07:58 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1134
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1135
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1136
remember_getstatic
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1137
    |fieldRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1138
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1139
    fieldRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1140
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1141
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1142
    "Created: / 16.11.1998 / 16:08:06 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1143
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1144
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1145
remember_invokeinterface
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1146
    |mthdRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1147
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1148
    mthdRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1149
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1150
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1151
    "Created: / 16.11.1998 / 16:07:29 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1152
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1153
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1154
remember_invokenonvirtual
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1155
    |mthdRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1156
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1157
    mthdRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1158
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1159
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1160
    "Created: / 16.11.1998 / 16:06:49 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1161
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1162
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1163
remember_invokestatic
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1164
    |mthdRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1165
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1166
    mthdRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1167
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1168
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1169
    "Created: / 16.11.1998 / 16:06:40 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1170
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1171
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1172
remember_invokevirtual
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1173
    |mthdRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1174
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1175
    mthdRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1176
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1177
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1178
    "Created: / 16.11.1998 / 16:06:32 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1179
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1180
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1181
remember_ldc1
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1182
    |what|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1183
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1184
    what := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1185
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1186
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1187
    "Created: / 16.11.1998 / 16:07:12 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1188
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1189
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1190
remember_ldc2
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1191
    |what|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1192
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1193
    what := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1194
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1195
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1196
    "Created: / 16.11.1998 / 16:07:19 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1197
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1198
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1199
remember_ldc2w
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1200
    |what|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1201
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1202
    what := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1203
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1204
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1205
    "Created: / 16.11.1998 / 16:07:20 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1206
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1207
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1208
remember_new
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1209
    |class|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1210
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1211
    class := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1212
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1213
    "Created: / 16.11.1998 / 15:59:43 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1214
    "Modified: / 16.11.1998 / 16:12:27 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1215
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1216
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1217
remember_putfield
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1218
    |fieldRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1219
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1220
    fieldRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1221
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1222
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1223
    "Created: / 16.11.1998 / 16:08:00 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1224
!
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1225
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1226
remember_putstatic
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1227
    |fieldRef|
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1228
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1229
    fieldRef := lastConstant.
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1230
    "/ ....
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1231
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1232
    "Created: / 16.11.1998 / 16:08:04 / cg"
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1233
! !
38f590639d65 *** empty log message ***
cg
parents: 450
diff changeset
  1234
129
f40775af59a5 checkin from browser
cg
parents: 126
diff changeset
  1235
!JavaDecompiler class methodsFor:'documentation'!
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
  1236
b23a6474754f intitial checkin
cg
parents:
diff changeset
  1237
version
2166
52ef126d6b5f copyright fixed
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1238
    ^ '$Header: /cvs/stx/stx/libjava/JavaDecompiler.st,v 1.51 2011-11-24 10:29:22 cg Exp $'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
  1239
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
  1240
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2108
diff changeset
  1241
version_SVN
2166
52ef126d6b5f copyright fixed
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1242
    ^ '§Id: JavaDecompiler.st,v 1.50 2011/08/18 18:42:48 vrany Exp §'
6
b23a6474754f intitial checkin
cg
parents:
diff changeset
  1243
! !
2108
ca8c4e7db2e8 category change
Claus Gittinger <cg@exept.de>
parents: 2095
diff changeset
  1244
2095
6773680aeb85 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 749
diff changeset
  1245
JavaDecompiler initialize!