JavaMethod.st
author cg
Thu, 31 Jul 1997 22:33:54 +0000
changeset 184 f65eb9c4ba6e
parent 175 68da52e100ab
child 189 babfb18fc67b
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
     1
CompiledCode subclass:#JavaMethod
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
     2
	instanceVariableNames:'numArgs numLocals returnType accessFlags name signature
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
     3
		exceptionHandlerTable exceptionTable lineNumberTable
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
     4
		localVariableTable javaClass numStack isNOOPMethod'
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
     5
	classVariableNames:'SignatureTypeCodes ForceByteCodeDisplay'
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
     6
	poolDictionaries:''
91843ac44d2f intitial checkin
cg
parents:
diff changeset
     7
	category:'Java-Classes'
91843ac44d2f intitial checkin
cg
parents:
diff changeset
     8
!
91843ac44d2f intitial checkin
cg
parents:
diff changeset
     9
91843ac44d2f intitial checkin
cg
parents:
diff changeset
    10
129
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
    11
!JavaMethod class methodsFor:'initialization'!
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    12
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    13
initialize
173
10513c48882f checkin from browser
cg
parents: 169
diff changeset
    14
    self flags:(self flags bitOr:Behavior flagJavaMethod).
10513c48882f checkin from browser
cg
parents: 169
diff changeset
    15
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    16
    SignatureTypeCodes := IdentityDictionary new.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    17
    SignatureTypeCodes at:$B put:#byte.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    18
    SignatureTypeCodes at:$C put:#char.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    19
    SignatureTypeCodes at:$D put:#double.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    20
    SignatureTypeCodes at:$F put:#float.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    21
    SignatureTypeCodes at:$I put:#int.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    22
    SignatureTypeCodes at:$J put:#long.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    23
    SignatureTypeCodes at:$S put:#'unsigned short'.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    24
    SignatureTypeCodes at:$Z put:#boolean.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    25
    SignatureTypeCodes at:$L put:#object.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    26
    SignatureTypeCodes at:$[ put:#array.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    27
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    28
    "
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    29
     JavaMethod initialize
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    30
    "
173
10513c48882f checkin from browser
cg
parents: 169
diff changeset
    31
10513c48882f checkin from browser
cg
parents: 169
diff changeset
    32
    "Modified: 30.7.1997 / 11:42:25 / cg"
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    33
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    34
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    35
!JavaMethod class methodsFor:'misc'!
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    36
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    37
forceByteCodeDisplay
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    38
    ^ ForceByteCodeDisplay
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    39
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    40
    "Created: 7.4.1997 / 20:11:39 / cg"
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    41
! !
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
    42
129
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
    43
!JavaMethod class methodsFor:'signature parsing'!
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
    44
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    45
argSigArrayFromSignature:aSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    46
    "given a signature, return a specArray for the arguments"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    47
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    48
    |s argSpec retvalSpec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    49
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    50
    s := aSignature readStream.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    51
    s next ~~ $( ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    52
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    53
    ^ self argSigArrayFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    54
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    55
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    56
     JavaMethod argSigArrayFromSignature:'(LObject;)V'
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    57
     JavaMethod argSigArrayFromSignature:'(BB)S'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    58
     JavaMethod argSigArrayFromSignature:'(LObject;LObject;II)V'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    59
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    60
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    61
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    62
argSigArrayFromStream:s
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    63
    "parse an argSpec, return an array of specs - see java doc"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    64
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    65
    |argSpec spec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    66
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    67
    spec := #().
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    68
    [s atEnd or:[s peek == $)]] whileFalse:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    69
"/        s peek == Character space ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    70
"/            s next
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    71
"/        ] ifFalse:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    72
            argSpec := self fieldTypeFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    73
            spec := spec copyWith:argSpec.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    74
"/        ]
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    75
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    76
    ^ spec
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    77
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    78
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    79
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    80
113
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    81
argSpecFromSignature:aSignature withName:name
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    82
    "given a signature, return a spec"
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    83
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    84
    |s argSpec retvalSpec|
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    85
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    86
    s := aSignature readStream.
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    87
    s next ~~ $( ifTrue:[self halt. ^ name].
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    88
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    89
    argSpec := self argSpecFromStream:s.
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    90
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    91
    s next ~~ $) ifTrue:[self halt. ^ name].
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    92
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    93
    ^ name , ' (' , argSpec , ')'
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    94
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    95
    "
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    96
     JavaMethod argSpecFromSignature:'(LObject;)V' withName:'foo' 
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    97
     JavaMethod argSpecFromSignature:'(BB)S'       withName:'foo' 
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    98
    "
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
    99
!
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   100
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   101
argSpecFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   102
    "parse an argSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   103
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   104
    |argSpec spec|
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   105
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   106
    spec := ''.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   107
    [s atEnd or:[s peek == $)]] whileFalse:[
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   108
"/        s peek == Character space ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   109
"/            s next
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   110
"/        ] ifFalse:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   111
            argSpec := self fieldTypeFromStream:s.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   112
            spec size ~~ 0 ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   113
                spec := spec , ' '
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   114
            ].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   115
            spec := spec , argSpec.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   116
"/        ]
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   117
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   118
    ^ spec
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   119
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   120
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   121
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   122
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   123
argSpecFromStream:s in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   124
    "parse an argSpec - see java doc"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   125
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   126
    |argSpec spec|
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   127
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   128
    spec := ''.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   129
    [s atEnd or:[s peek == $)]] whileFalse:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   130
"/        s peek == Character space ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   131
"/            s next
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   132
"/        ] ifFalse:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   133
            argSpec := self fieldTypeFromStream:s in:aPackage.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   134
            spec size ~~ 0 ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   135
                spec := spec , ' '
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   136
            ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   137
            spec := spec , argSpec.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   138
"/        ]
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   139
    ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   140
    ^ spec
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   141
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   142
    "Created: 18.3.1997 / 11:06:44 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   143
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   144
154
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   145
argSpecWithArgsFromStream:s in:aPackage
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   146
    "parse an argSpec - see java doc"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   147
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   148
    |argSpec spec argNr|
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   149
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   150
    argNr := 1.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   151
    spec := ''.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   152
    [s atEnd or:[s peek == $)]] whileFalse:[
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   153
        argSpec := self fieldTypeFromStream:s in:aPackage.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   154
        spec size ~~ 0 ifTrue:[
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   155
            spec := spec , ', '
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   156
        ].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   157
        spec := spec , argSpec.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   158
        spec := spec , ' arg' , argNr printString.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   159
        argNr := argNr + 1.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   160
    ].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   161
    ^ spec
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   162
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   163
    "Created: 20.3.1997 / 12:45:40 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   164
    "Modified: 20.3.1997 / 12:49:52 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   165
!
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   166
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   167
fieldTypeFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   168
    "parse a fieldTypeSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   169
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   170
    |typeChar typeSym spec elType size className|
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   171
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   172
    typeChar := s next.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   173
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   174
    typeSym := SignatureTypeCodes at:typeChar ifAbsent:#unknown.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   175
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   176
    typeSym == #unknown ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   177
        ^ typeSym
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   178
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   179
    typeSym == #object ifTrue:[
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   180
        className := s upTo:$;.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   181
        "/ strip off default
113
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   182
"/        (className startsWith:'java/lang/') ifTrue:[
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   183
"/            ^ className copyFrom:11
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   184
"/        ].
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   185
        ^ className copy replaceAll:$/ by:$.
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   186
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   187
    typeSym == #array ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   188
        s peek isDigit ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   189
            size := Integer readFrom:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   190
            elType := self fieldTypeFromStream:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   191
            ^ elType , '[' , size printString , ']'
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   192
        ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   193
        elType := self fieldTypeFromStream:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   194
        ^ elType , '[]'
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   195
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   196
    ^ typeSym
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   197
!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   198
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   199
fieldTypeFromStream:s in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   200
    "parse a fieldTypeSpec - see java doc"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   201
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   202
    |typeChar typeSym spec elType size className nm|
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   203
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   204
    typeChar := s next.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   205
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   206
    typeSym := SignatureTypeCodes at:typeChar ifAbsent:#unknown.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   207
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   208
    typeSym == #unknown ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   209
        ^ typeSym
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   210
    ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   211
    typeSym == #object ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   212
        className := s upTo:$;.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   213
        "/ strip off default
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   214
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   215
"/        (className startsWith:'java/lang/') ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   216
"/            ^ className copyFrom:11
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   217
"/        ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   218
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   219
        nm := className.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   220
        aPackage notNil ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   221
            (nm startsWith:aPackage) ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   222
                nm := nm copyFrom:(aPackage size + 2).
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   223
            ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   224
        ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   225
        
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   226
        nm := nm copy replaceAll:$/ by:$..
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   227
        ^ nm
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   228
    ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   229
    typeSym == #array ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   230
        s peek isDigit ifTrue:[
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   231
            size := Integer readFrom:s.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   232
            elType := self fieldTypeFromStream:s.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   233
            ^ elType , '[' , size printString , ']'
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   234
        ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   235
        elType := self fieldTypeFromStream:s.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   236
        ^ elType , '[]'
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   237
    ].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   238
    ^ typeSym
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   239
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   240
    "Created: 18.3.1997 / 11:07:56 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   241
    "Modified: 18.3.1997 / 11:18:09 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   242
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   243
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   244
numArgsFromSignature:aSignature
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   245
    "given a signature, return the number of args"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   246
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   247
    |s argSpec|
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   248
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   249
    s := aSignature readStream.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   250
    s next ~~ $( ifTrue:[self halt. ^ name].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   251
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   252
    ^ self numArgsFromStream:s.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   253
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   254
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   255
     JavaMethod numArgsFromSignature:'(LObject;)V'
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   256
     JavaMethod numArgsFromSignature:'(BB)S'      
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   257
     JavaMethod numArgsFromSignature:'()V'      
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   258
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   259
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   260
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   261
numArgsFromStream:s
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   262
    "parse an argSpec - see java doc"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   263
55
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   264
    |argSpec n t|
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   265
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   266
    n := 0.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   267
    [s atEnd or:[s peek == $)]] whileFalse:[
55
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   268
        t := self fieldTypeFromStream:s.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   269
        "/
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   270
        "/ some args count as 2
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   271
        "/
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   272
        t == #long ifTrue:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   273
            n := n + 2.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   274
        ] ifFalse:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   275
            t == #double ifTrue:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   276
                n := n + 2
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   277
            ] ifFalse:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   278
                n := n + 1.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   279
            ]
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   280
        ]
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   281
    ].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   282
    ^ n
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   283
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   284
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   285
retValSpecFromSignature:aSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   286
    "given a signature, return a spec"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   287
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   288
    |s argSpec retvalSpec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   289
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   290
    s := aSignature readStream.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   291
    s next ~~ $( ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   292
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   293
    argSpec := self argSpecFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   294
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   295
    s next ~~ $) ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   296
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   297
    retvalSpec := self retvalSpecFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   298
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   299
    ^ retvalSpec 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   300
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   301
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   302
     JavaMethod retValSpecFromSignature:'(LObject;)V'
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   303
     JavaMethod retValSpecFromSignature:'(BB)S'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   304
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   305
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   306
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   307
retValSpecFromSignature:aSignature in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   308
    "given a signature, return a spec"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   309
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   310
    |s argSpec retvalSpec|
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   311
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   312
    s := aSignature readStream.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   313
    s next ~~ $( ifTrue:[self halt. ^ name].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   314
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   315
    argSpec := self argSpecFromStream:s in:aPackage.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   316
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   317
    s next ~~ $) ifTrue:[self halt. ^ name].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   318
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   319
    retvalSpec := self retvalSpecFromStream:s in:aPackage.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   320
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   321
    ^ retvalSpec 
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   322
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   323
    "
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   324
     JavaMethod retValSpecFromSignature:'(LObject;)V'
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   325
     JavaMethod retValSpecFromSignature:'(BB)S'      
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   326
    "
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   327
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   328
    "Created: 18.3.1997 / 11:11:50 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   329
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   330
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   331
returnTypeFromSignature:aSignature
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   332
    "given a signature, return its type as a string"
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   333
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   334
    |s c argSpec retvalSpec|
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   335
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   336
    s := aSignature readStream.
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   337
    (c := s peek) ~~ $( ifTrue:[
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   338
        c == $' ifTrue:[
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   339
           [s peek ~= $'] whileTrue:[s next].
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   340
           s next.
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   341
           ^ (self retvalSpecFromStream:s)
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   342
        ].
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   343
        ^ (self retvalSpecFromStream:s)
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   344
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   345
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   346
    s next.
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   347
    self argSpecFromStream:s.
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   348
    s next ~~ $) ifTrue:[self halt. ^ nil].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   349
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   350
    ^ (self retvalSpecFromStream:s)
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   351
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   352
    "
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   353
     JavaMethod returnTypeFromSignature:'(LObject;)V' 
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   354
     JavaMethod returnTypeFromSignature:'(BB)S'       
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   355
     JavaMethod returnTypeFromSignature:'()J'       
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   356
     JavaMethod returnTypeFromSignature:'''first''J'       
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   357
    "
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   358
!
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   359
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   360
returnsVoidFromSignature:aSignature
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   361
    "given a signature, return true if it returns void, false if not"
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   362
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   363
    ^ (self typeFromSignature:aSignature) = 'void'
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   364
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   365
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   366
     JavaMethod returnsVoidFromSignature:'(LObject;)V' 
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   367
     JavaMethod returnsVoidFromSignature:'(BB)S'       
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   368
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   369
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   370
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   371
retvalSpecFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   372
    "parse a retvalSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   373
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   374
    |argSpec spec|
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   375
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   376
    s atEnd ifTrue:[self halt. ^ #void].
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   377
    s peek == $V ifTrue:[^ #void].
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   378
    ^ self fieldTypeFromStream:s
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   379
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   380
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   381
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   382
retvalSpecFromStream:s in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   383
    "parse a retvalSpec - see java doc"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   384
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   385
    |argSpec spec|
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   386
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   387
    s atEnd ifTrue:[self halt. ^ #void].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   388
    s peek == $V ifTrue:[^ #void].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   389
    ^ self fieldTypeFromStream:s in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   390
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   391
    "Created: 18.3.1997 / 11:12:19 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   392
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   393
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   394
specFromSignature:aSignature withName:name
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   395
    "given a signature, return a spec"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   396
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   397
    |s argSpec retvalSpec|
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   398
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   399
    s := aSignature readStream.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   400
    s next ~~ $( ifTrue:[self halt. ^ name].
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   401
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   402
    argSpec := self argSpecFromStream:s.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   403
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   404
    s next ~~ $) ifTrue:[self halt. ^ name].
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   405
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   406
    retvalSpec := self retvalSpecFromStream:s.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   407
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   408
    ^ retvalSpec , ' ' , name , ' (' , argSpec , ')'
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   409
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   410
    "
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   411
     JavaMethod specFromSignature:'(LObject;)V' withName:'foo' 
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   412
     JavaMethod specFromSignature:'(BB)S'       withName:'foo' 
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   413
    "
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   414
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   415
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   416
specFromSignature:aSignature withName:name in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   417
    "given a signature, return a spec"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   418
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   419
    |s argSpec retvalSpec|
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   420
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   421
    s := aSignature readStream.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   422
    s next ~~ $( ifTrue:[self halt. ^ name].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   423
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   424
    argSpec := self argSpecFromStream:s in:aPackage.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   425
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   426
    s next ~~ $) ifTrue:[self halt. ^ name].
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   427
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   428
    retvalSpec := self retvalSpecFromStream:s in:aPackage.
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   429
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   430
    ^ retvalSpec , ' ' , name , ' (' , argSpec , ')'
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   431
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   432
    "
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   433
     JavaMethod specFromSignature:'(LObject;)V' withName:'foo' 
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   434
     JavaMethod specFromSignature:'(BB)S'       withName:'foo' 
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   435
    "
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   436
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   437
    "Created: 18.3.1997 / 11:06:22 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   438
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   439
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   440
specTextFromSignature:aSignature withName:name
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   441
    "given a signature, return a spec as boldified text"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   442
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   443
    |s argSpec retvalSpec|
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   444
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   445
    s := aSignature readStream.
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   446
    s next ~~ $( ifTrue:[self halt. ^ name].
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   447
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   448
    argSpec := self argSpecFromStream:s.
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   449
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   450
    s next ~~ $) ifTrue:[self halt. ^ name].
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   451
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   452
    retvalSpec := self retvalSpecFromStream:s.
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   453
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   454
    ^ retvalSpec , ' ' , (name asText allBold) , ' (' , argSpec , ')'
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   455
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   456
    "
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   457
     JavaMethod specTextFromSignature:'(LObject;)V' withName:'foo' 
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   458
     JavaMethod specTextFromSignature:'(BB)S'       withName:'foo' 
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   459
    "
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   460
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   461
    "Modified: 30.7.1997 / 14:40:12 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   462
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   463
154
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   464
specWithArgsFromSignature:aSignature withName:name in:aPackage
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   465
    "given a signature, return a spec"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   466
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   467
    |s argSpec retvalSpec|
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   468
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   469
    s := aSignature readStream.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   470
    s next ~~ $( ifTrue:[self halt. ^ name].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   471
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   472
    argSpec := self argSpecWithArgsFromStream:s in:aPackage.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   473
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   474
    s next ~~ $) ifTrue:[self halt. ^ name].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   475
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   476
    retvalSpec := self retvalSpecFromStream:s in:aPackage.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   477
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   478
    ^ retvalSpec , ' ' , name , ' (' , argSpec , ')'
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   479
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   480
    "
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   481
     JavaMethod specWithArgsFromSignature:'(LObject;)V' withName:'foo' in:nil 
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   482
     JavaMethod specWithArgsFromSignature:'(BB)S'       withName:'foo' in:nil  
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   483
    "
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   484
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   485
    "Created: 18.3.1997 / 11:06:22 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   486
    "Modified: 20.3.1997 / 12:50:10 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   487
!
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   488
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   489
typeFromSignature:aSignature
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   490
    "given a signature, return its type as a string"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   491
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   492
    |s c argSpec retvalSpec|
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   493
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   494
    s := aSignature readStream.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   495
    (c := s peek) ~~ $( ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   496
        c == $' ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   497
           s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   498
           [s peek ~= $'] whileTrue:[s next].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   499
           s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   500
           ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   501
        ].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   502
        ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   503
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   504
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   505
    s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   506
    self argSpecFromStream:s.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   507
    s next ~~ $) ifTrue:[self halt. ^ nil].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   508
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   509
    ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   510
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   511
    "
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   512
     JavaMethod typeFromSignature:'(LObject;)V'  
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   513
     JavaMethod typeFromSignature:'(BB)S'        
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   514
     JavaMethod typeFromSignature:'()J'          
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   515
     JavaMethod typeFromSignature:'J'          
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   516
     JavaMethod typeFromSignature:'''first''J'       
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   517
    "
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   518
! !
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   519
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   520
!JavaMethod methodsFor:'accessing'!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   521
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   522
argSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   523
    ^ self class argSigArrayFromSignature:signature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   524
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   525
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   526
constantPool
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   527
    ^ javaClass constantPool
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   528
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   529
    "Modified: 16.4.1996 / 12:36:27 / cg"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   530
    "Created: 16.4.1996 / 15:28:50 / cg"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   531
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   532
129
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
   533
containingClass
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
   534
    ^ javaClass
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
   535
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
   536
!
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
   537
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   538
decompiledBytecode
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   539
    |s|
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   540
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   541
    s := '' writeStream.
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   542
    JavaDecompiler decompile:self to:s.
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   543
    ^ s contents
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   544
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   545
    "Created: 7.4.1997 / 20:10:37 / cg"
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   546
!
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   547
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   548
decompiledSource
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   549
    |s|
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   550
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   551
    s := '' writeStream.
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   552
    self decompileSourceTo:s.
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   553
    ^ s contents
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   554
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   555
    "Modified: 30.7.1997 / 16:27:55 / cg"
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   556
!
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   557
135
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   558
exceptionHandlerTable
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   559
    ^ exceptionHandlerTable
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   560
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   561
    "Modified: 16.4.1996 / 12:49:06 / cg"
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   562
    "Created: 7.2.1997 / 20:04:20 / cg"
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   563
!
098936234135 *** empty log message ***
cg
parents: 129
diff changeset
   564
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   565
exceptionTable
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   566
    ^ exceptionTable
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   567
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   568
    "Created: 16.4.1996 / 12:34:04 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   569
    "Modified: 16.4.1996 / 12:49:06 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   570
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   571
90
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   572
hasLineNumberInformation
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   573
    ^ lineNumberTable notNil
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   574
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   575
    "Created: 16.4.1996 / 12:34:04 / cg"
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   576
    "Modified: 16.4.1996 / 12:49:06 / cg"
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   577
!
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   578
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   579
isNOOPMethod:aBoolean
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   580
    isNOOPMethod := aBoolean
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   581
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   582
    "Created: 18.3.1997 / 13:31:16 / cg"
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   583
!
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   584
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   585
javaByteCode
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   586
"/    ^ javaByteCode
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   587
    ^ byteCode
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   588
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   589
    "Created: 16.4.1996 / 14:55:44 / cg"
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   590
    "Modified: 1.8.1997 / 00:08:45 / cg"
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   591
!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   592
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   593
javaClass
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   594
    ^ javaClass
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   595
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   596
    "Modified: 16.4.1996 / 12:36:27 / cg"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   597
    "Created: 16.4.1996 / 14:55:44 / cg"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   598
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   599
90
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   600
lineNumber
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   601
    ^ lineNumberTable at:2
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   602
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   603
    "Created: 16.4.1996 / 12:34:04 / cg"
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   604
    "Modified: 16.4.1996 / 12:49:06 / cg"
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   605
!
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   606
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   607
lineNumberTable
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   608
    ^ lineNumberTable
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   609
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   610
    "Created: 16.4.1996 / 12:34:04 / cg"
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   611
    "Modified: 16.4.1996 / 12:49:06 / cg"
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   612
!
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   613
85
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   614
localVariableTable
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   615
    ^ localVariableTable
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   616
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   617
    "
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   618
     JavaMethod allInstancesDo:[:m| m localVariableTable notNil ifTrue:[self halt]]
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   619
    "
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   620
!
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   621
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   622
methodArgAndVarNames
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   623
    ^ ((1 to:self numArgs) collect:[:i | 'arg' , i printString])
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   624
      ,
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   625
      ((1 to:self numVars) collect:[:i | 'local' , i printString])
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   626
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   627
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   628
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   629
methodArgNames
102
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   630
    localVariableTable notNil ifTrue:[
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   631
        ^ (1 to:self numArgs) collect:
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   632
            [:argIndex | |slot name|
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   633
                "/ search for an entry with that index (slot),
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   634
                "/ which has is valid at PC 0
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   635
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   636
                self isStatic ifTrue:[
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   637
                    slot := argIndex
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   638
                ] ifFalse:[
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   639
                    slot := argIndex + 1
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   640
                ].
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   641
                name := localVariableTable nameForSlot:slot atPC:0.
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   642
                name isNil ifTrue:[
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   643
                    'arg' , argIndex printString
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   644
                ] ifFalse:[
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   645
                    name
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   646
                ].
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   647
            ]
de5ab089cf47 checkin from browser
cg
parents: 90
diff changeset
   648
    ].
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   649
    ^ (1 to:self numArgs) collect:[:i | 'arg' , i printString]
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   650
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   651
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   652
name
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   653
    ^ name
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   654
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   655
    "Created: 16.4.1996 / 11:34:22 / cg"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   656
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   657
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   658
numArgs
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   659
    numArgs isNil ifTrue:[^ 0].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   660
    ^ numArgs
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   661
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   662
118
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   663
numLocals
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   664
    numLocals isNil ifTrue:[^ 0].
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   665
    ^ numLocals
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   666
!
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   667
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   668
numStack
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   669
    numStack isNil ifTrue:[^ 0].
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   670
    ^ numStack
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   671
!
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   672
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   673
numVars
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   674
    numLocals isNil ifTrue:[^ 0].
118
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   675
    numArgs isNil ifTrue:[^ numLocals].
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   676
    ^ numLocals - numArgs
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   677
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   678
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   679
numberOfArgs:n
174
a98caa062c16 checkin from browser
cg
parents: 173
diff changeset
   680
    super numberOfArgs:n.
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   681
    numArgs := n
174
a98caa062c16 checkin from browser
cg
parents: 173
diff changeset
   682
a98caa062c16 checkin from browser
cg
parents: 173
diff changeset
   683
    "Modified: 30.7.1997 / 12:43:00 / cg"
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   684
    "Created: 1.8.1997 / 00:26:24 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   685
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   686
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   687
previousVersion
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   688
    ^ nil
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   689
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   690
    "Created: 30.7.1997 / 15:56:18 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   691
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   692
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   693
retValSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   694
    ^ self class retValSpecFromSignature:signature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   695
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   696
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   697
123
4a5d4ac95782 checkin from browser
cg
parents: 118
diff changeset
   698
returnType
4a5d4ac95782 checkin from browser
cg
parents: 118
diff changeset
   699
    ^ returnType
4a5d4ac95782 checkin from browser
cg
parents: 118
diff changeset
   700
!
4a5d4ac95782 checkin from browser
cg
parents: 118
diff changeset
   701
116
7d612d4450c0 *** empty log message ***
cg
parents: 113
diff changeset
   702
returnsDouble
7d612d4450c0 *** empty log message ***
cg
parents: 113
diff changeset
   703
    ^ returnType == #double
7d612d4450c0 *** empty log message ***
cg
parents: 113
diff changeset
   704
!
7d612d4450c0 *** empty log message ***
cg
parents: 113
diff changeset
   705
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   706
returnsLong
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   707
    ^ returnType == #long
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   708
!
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   709
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   710
returnsVoid
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   711
    ^ returnType == #void
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   712
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   713
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   714
setAccessFlags:flags
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   715
    accessFlags := flags.
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   716
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   717
    "Created: 16.4.1996 / 11:34:14 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   718
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   719
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   720
setCode:codeBytes maxStack:max_stack maxLocals:max_locals u1:unknown1 u2:unknown2
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   721
"/    javaByteCode := codeBytes.
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   722
    byteCode := codeBytes.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   723
    numStack := max_stack.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   724
    numLocals := max_locals.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   725
43
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   726
"/    self displayString printNL.
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   727
"/    '   nStack: ' print. numStack print. 
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   728
"/    ' nLocal: ' print. numLocals print. 
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   729
"/    ' u1: ' print. unknown1 print.
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   730
"/    ' u2: ' print. unknown2 printNL.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   731
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   732
    "Modified: 1.8.1997 / 00:08:32 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   733
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   734
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   735
setExceptionHandlerTable:anArray
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   736
    exceptionHandlerTable := anArray.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   737
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   738
    "Created: 16.4.1996 / 12:34:04 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   739
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   740
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   741
setExceptionTable:anArray
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   742
    exceptionTable := anArray.
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   743
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   744
    "Created: 16.4.1996 / 12:34:04 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   745
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   746
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   747
setJavaClass:aJavaClass
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   748
    javaClass := aJavaClass
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   749
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   750
    "Modified: 16.4.1996 / 12:36:27 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   751
    "Created: 16.4.1996 / 15:28:15 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   752
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   753
90
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   754
setLineNumberTable:anArrayOfPCtoLineAssociations
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   755
    "since this uses up lots of memory, compress it"
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   756
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   757
    |allBytes allWords idx|
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   758
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   759
    allBytes := allWords := true.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   760
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   761
    anArrayOfPCtoLineAssociations do:[:assoc |
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   762
        assoc key > 255 ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   763
            allBytes := false.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   764
            assoc key > 16rFFFF ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   765
                allWords := false.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   766
            ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   767
        ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   768
        assoc value > 255 ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   769
            allBytes := false.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   770
            assoc value > 16rFFFF ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   771
                allWords := false
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   772
            ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   773
        ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   774
    ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   775
    allBytes ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   776
        lineNumberTable := ByteArray new:(anArrayOfPCtoLineAssociations size * 2).
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   777
    ] ifFalse:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   778
        allWords ifTrue:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   779
            lineNumberTable := WordArray new:(anArrayOfPCtoLineAssociations size * 2).
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   780
        ] ifFalse:[
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   781
            lineNumberTable := Array new:(anArrayOfPCtoLineAssociations size * 2).
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   782
        ]
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   783
    ].
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   784
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   785
    idx := 1.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   786
    anArrayOfPCtoLineAssociations do:[:assoc |
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   787
        lineNumberTable at:idx   put:assoc key.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   788
        lineNumberTable at:idx+1 put:assoc value.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   789
        idx := idx + 2.
918e2740098c resolve rewritten
cg
parents: 85
diff changeset
   790
    ].
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   791
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   792
    "Created: 16.4.1996 / 12:34:04 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   793
    "Modified: 16.4.1996 / 12:49:06 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   794
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   795
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   796
setLocalVariableTable:anArray
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   797
     localVariableTable := anArray.
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   798
!
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   799
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   800
setName:aString
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   801
    name := aString asSymbol.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   802
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   803
    "Created: 16.4.1996 / 11:34:22 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   804
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   805
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   806
setSignature:aString
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   807
    signature := aString asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   808
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   809
    self numberOfArgs:(self class numArgsFromSignature:aString).
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   810
    returnType := self class typeFromSignature:aString.
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   811
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   812
    "Created: 16.4.1996 / 11:34:29 / cg"
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   813
    "Modified: 1.8.1997 / 00:26:16 / cg"
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   814
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   815
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   816
signature
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   817
    ^ signature 
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   818
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   819
    "Created: 16.4.1996 / 11:34:29 / cg"
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   820
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   821
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   822
source
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   823
    |classSource|
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   824
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   825
    ForceByteCodeDisplay == true ifTrue:[
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   826
        ^ self decompiledBytecode
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   827
    ].
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   828
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   829
    lineNumberTable notNil ifTrue:[
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   830
        classSource := javaClass source.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   831
        classSource notNil ifTrue:[^ classSource].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   832
    ].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   833
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   834
    ^ self decompiledSource
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   835
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
   836
    "Modified: 7.4.1997 / 20:10:57 / cg"
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   837
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   838
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   839
sourceFilename
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   840
    ^ javaClass sourceFile
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   841
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   842
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   843
sourceLineNumber
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   844
    ForceByteCodeDisplay == true ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   845
        ^ 1
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   846
    ].
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   847
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   848
    lineNumberTable notNil ifTrue:[
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   849
        ^ lineNumberTable at:2
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   850
    ].
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   851
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   852
    ^ 1
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   853
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   854
    "Created: 30.7.1997 / 15:40:45 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   855
    "Modified: 30.7.1997 / 15:46:12 / cg"
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   856
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   857
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   858
!JavaMethod methodsFor:'decompiling'!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   859
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   860
decompileSourceTo:aStream
155
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   861
    self isNative ifFalse:[
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   862
        self isAbstract ifFalse:[
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   863
            aStream cr; cr.
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   864
            aStream nextPutAll:'decompiled source:'; cr; cr.
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   865
            SignalSet anySignal handle:[:ex |
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   866
                aStream nextPutAll:'error while decompiling:'.
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   867
                aStream cr; cr; spaces:4.
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   868
                aStream nextPutAll:ex errorString.
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   869
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   870
                JavaDecompiler decompile:self to:aStream.
155
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   871
                ex return
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   872
            ] do:[
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   873
                aStream nextPutAll:(JavaDeparser decompile:self).
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   874
            ].
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   875
        ].
2c5558dd2b29 checkin from browser
cg
parents: 154
diff changeset
   876
    ].
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   877
    ^ true
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   878
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   879
    "Modified: 30.7.1997 / 16:19:28 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   880
    "Created: 30.7.1997 / 16:28:09 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   881
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   882
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   883
decompiler
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   884
    ^ JavaDecompiler
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   885
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   886
    "Created: 30.7.1997 / 16:36:48 / cg"
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   887
! !
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   888
118
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   889
!JavaMethod methodsFor:'methodref interchangability'!
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   890
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   891
method
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   892
    ^ self
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   893
! !
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   894
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   895
!JavaMethod methodsFor:'misc'!
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   896
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   897
checkForNOOPMethod
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   898
    |code insn1 insn2 insn3 idx ref mthd|
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   899
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   900
    isNOOPMethod notNil ifTrue:[^ self].
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   901
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   902
    code := self javaByteCode.
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   903
    code notNil ifTrue:[
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   904
        insn1 := code at:1.
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   905
        insn1 == 177 "RETURN" ifTrue:[
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   906
            'JAVA [info]: dummy static method: ' print. self displayString printCR.
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   907
            isNOOPMethod := true.
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   908
            ^ self
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   909
        ].
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   910
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   911
        insn1 == 42 "ALOAD_0" ifTrue:[
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   912
            insn2 := code at:2.
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   913
            insn2 == 183 "INVOKENONVIRTUAL" ifTrue:[
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   914
                insn3 := code at:5.
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   915
                insn3 == 177 "RETURN" ifTrue:[
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   916
                    idx := code wordAt:3 MSB:true.
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   917
                    ref := javaClass constantPool at:idx.
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   918
                    mthd := ref method.
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   919
                    mthd isNOOPMethod ifTrue:[
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   920
                        'JAVA [info]: dummy method (calls dummy): ' print. self displayString printCR.
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   921
                        isNOOPMethod := true.
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   922
                    ] ifFalse:[
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   923
                        isNOOPMethod := false.
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   924
                    ].
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   925
                    ^ self
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   926
                ]
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   927
            ].
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   928
        ].
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   929
    ].
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
   930
    isNOOPMethod := false.
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   931
    ^ self
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   932
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   933
    "Created: 18.3.1997 / 13:31:50 / cg"
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
   934
    "Modified: 1.8.1997 / 00:09:42 / cg"
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   935
! !
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
   936
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   937
!JavaMethod methodsFor:'printing & storing'!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   938
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   939
displayString
168
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   940
    javaClass isNil ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   941
        ^ 'JavaMethod(???)'
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   942
    ].
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   943
    ^ 'JavaMethod(' , javaClass name , '::' , self signatureName , ')'
168
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   944
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   945
    "Modified: 7.4.1997 / 15:54:10 / cg"
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   946
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   947
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   948
printStringForBrowserWithSelector:selector
43
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   949
"/    self isStatic ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   950
"/        ^ 'static ' , self signatureName
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   951
"/    ].
168
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   952
"/    self isBreakpointed ifTrue:[
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   953
"/        ^ (LabelAndIcon '!! ' , self signatureName
90e39cb3fa04 *** empty log message ***
cg
parents: 166
diff changeset
   954
"/    ].
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   955
166
3bb2f7fbd489 checkin from browser
cg
parents: 164
diff changeset
   956
    name = #'<init>' ifTrue:[
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   957
        ^ self class specTextFromSignature:signature withName:(javaClass name).
166
3bb2f7fbd489 checkin from browser
cg
parents: 164
diff changeset
   958
    ].
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   959
    ^ self signatureNameText
166
3bb2f7fbd489 checkin from browser
cg
parents: 164
diff changeset
   960
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   961
    "Modified: 30.7.1997 / 14:40:42 / cg"
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   962
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   963
118
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   964
shortDisplayString
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   965
    ^ javaClass name , '::' , self signatureNameWithoutReturnType
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   966
!
c1f888534eed fixed numVar/numLocal & numStacl stuff
cg
parents: 116
diff changeset
   967
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   968
signatureName
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   969
    "return a string to be used when browsing"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   970
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   971
    ^ self class specFromSignature:signature withName:name
113
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   972
!
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
   973
164
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   974
signatureNameFor:name withArgsIn:aPackage
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   975
    "return a string to be used when decompiling"
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   976
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   977
    ^ self class specWithArgsFromSignature:signature withName:name in:aPackage
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   978
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   979
    "Created: 25.3.1997 / 18:49:45 / cg"
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   980
!
724c443e6f79 *** empty log message ***
cg
parents: 156
diff changeset
   981
142
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   982
signatureNameIn:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   983
    "return a string to be used when browsing"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   984
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   985
    ^ self class specFromSignature:signature withName:name in:aPackage
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   986
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   987
    "Created: 18.3.1997 / 11:11:01 / cg"
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   988
!
1cc00567fb75 *** empty log message ***
cg
parents: 141
diff changeset
   989
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   990
signatureNameText
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   991
    "return a text to be used when browsing"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   992
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   993
    ^ self class specTextFromSignature:signature withName:name
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   994
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   995
    "Created: 30.7.1997 / 14:40:29 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   996
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
   997
154
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   998
signatureNameWithArgsIn:aPackage
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
   999
    "return a string to be used when browsing"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1000
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1001
    ^ self class specWithArgsFromSignature:signature withName:name in:aPackage
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1002
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1003
    "Created: 20.3.1997 / 12:44:17 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1004
!
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1005
113
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
  1006
signatureNameWithoutReturnType
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
  1007
    "return a string to be used when browsing"
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
  1008
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
  1009
    ^ self class argSpecFromSignature:signature withName:name
481bf55e161e *** empty log message ***
cg
parents: 111
diff changeset
  1010
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1011
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1012
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1013
!JavaMethod methodsFor:'queries'!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1014
111
23243f9273fa *** empty log message ***
cg
parents: 102
diff changeset
  1015
handlerFor:anException at:pc
23243f9273fa *** empty log message ***
cg
parents: 102
diff changeset
  1016
    exceptionHandlerTable isNil ifTrue:[^ nil].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1017
    exceptionHandlerTable do:[:entry |
48
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
  1018
        |hpc|
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
  1019
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
  1020
        hpc := entry handlerPCFor:anException at:pc in:self.
111
23243f9273fa *** empty log message ***
cg
parents: 102
diff changeset
  1021
        hpc notNil ifTrue:[^ hpc].
48
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
  1022
    ].
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
  1023
111
23243f9273fa *** empty log message ***
cg
parents: 102
diff changeset
  1024
    ^ nil
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1025
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1026
127
96f1bf74011f *** empty log message ***
cg
parents: 123
diff changeset
  1027
hasResource
96f1bf74011f *** empty log message ***
cg
parents: 123
diff changeset
  1028
    ^ false
96f1bf74011f *** empty log message ***
cg
parents: 123
diff changeset
  1029
!
96f1bf74011f *** empty log message ***
cg
parents: 123
diff changeset
  1030
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1031
isAbstract
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1032
    ^ (accessFlags bitAnd:16r0400) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1033
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1034
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
  1035
isBreakpointed
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
  1036
    ^ false
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
  1037
!
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
  1038
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1039
isFinal
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1040
    ^ (accessFlags bitAnd:16r0010) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1041
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1042
175
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1043
isIgnored
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1044
    "not really a java attribute;
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1045
     added to allow browsing"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1046
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1047
    ^ false.
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1048
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1049
    "Created: 30.7.1997 / 15:34:33 / cg"
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1050
!
68da52e100ab *** empty log message ***
cg
parents: 174
diff changeset
  1051
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
  1052
isNOOPMethod
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
  1053
    isNOOPMethod isNil ifTrue:[
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
  1054
        self checkForNOOPMethod
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
  1055
    ].
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
  1056
    ^ isNOOPMethod
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
  1057
149
d6fe26e9af47 *** empty log message ***
cg
parents: 148
diff changeset
  1058
    "Modified: 18.3.1997 / 18:04:02 / cg"
148
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
  1059
!
db560ebab8b5 *** empty log message ***
cg
parents: 143
diff changeset
  1060
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1061
isNative
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1062
    ^ (accessFlags bitAnd:16r0100) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1063
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1064
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1065
isPrivate
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1066
    ^ (accessFlags bitAnd:16r0002) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1067
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1068
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1069
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1070
isProtected
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1071
    ^ (accessFlags bitAnd:16r0004) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1072
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1073
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1074
isPublic
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1075
    ^ (accessFlags bitAnd:16r0001) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1076
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1077
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1078
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1079
isStatic
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1080
    ^ (accessFlags bitAnd:16r0008) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1081
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1082
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1083
isSynchronized
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
  1084
    ^ (accessFlags bitAnd:16r0020) ~~ 0
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1085
!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1086
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1087
isUnloaded
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1088
    ^ false
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1089
!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1090
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1091
lineNumberForPC:pc
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
  1092
    |last num text classSource|
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1093
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1094
    num := nil.
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1095
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1096
    ForceByteCodeDisplay ifFalse:[
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1097
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1098
        lineNumberTable notNil ifTrue:[
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1099
            classSource := javaClass source.
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1100
            classSource notNil ifTrue:[
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1101
                lineNumberTable pairWiseDo:[:lPc :lNr |
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1102
                    lPc >= pc ifTrue:[
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1103
                        "/ lPc == pc ifTrue:[^ lNr].
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1104
                        last isNil ifTrue:[^ lNr].
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1105
                        ^ last.
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1106
                    ].
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1107
                    last := lNr.
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
  1108
                ].
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1109
                last notNil ifTrue:[        
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1110
                    ^ last
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1111
                ].
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1112
                ^ lineNumberTable at:2
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
  1113
            ].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
  1114
        ].
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1115
    ].
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1116
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1117
    "/ decompile and look which line the pc falls into
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
  1118
    text := self decompiledSource asCollectionOfLines.
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1119
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1120
    text keysAndValuesDo:[:lineNr :line |
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1121
        |nr|
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1122
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1123
        (line startsWith:'    ') ifFalse:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1124
            nr := Integer readFrom:line onError:0.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1125
            nr >= pc ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1126
                ^ lineNr
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
  1127
            ]
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
  1128
        ]
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1129
    ].
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1130
    ^ num
141
0baa4706b898 checkin from browser
cg
parents: 135
diff changeset
  1131
169
269f334e9f34 *** empty log message ***
cg
parents: 168
diff changeset
  1132
    "Modified: 7.4.1997 / 20:13:21 / cg"
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1133
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
  1134
156
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1135
package
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1136
    ^ 'none'
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1137
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1138
    "Created: 5.2.1997 / 11:31:26 / cg"
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1139
!
fee47d32724d *** empty log message ***
cg
parents: 155
diff changeset
  1140
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1141
who
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1142
    "return the class and selector of where I am defined in."
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1143
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
  1144
    |sel|
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
  1145
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
  1146
    sel := javaClass methodDictionary keyAtValue:self ifAbsent:nil.
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
  1147
    sel isNil ifTrue:[^ nil].
129
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
  1148
    ^ Method::MethodWhoInfo class:javaClass selector:sel.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
  1149
! !
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
  1150
154
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1151
!JavaMethod methodsFor:'signature parsing'!
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1152
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1153
specWithArgsFromSignature:aSignature withName:name in:aPackage
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1154
    "given a signature, return a spec with args"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1155
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1156
    |s argSpec retvalSpec|
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1157
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1158
    s := aSignature readStream.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1159
    s next ~~ $( ifTrue:[self halt. ^ name].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1160
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1161
    argSpec := self argSpecWithArgsFromStream:s in:aPackage.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1162
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1163
    s next ~~ $) ifTrue:[self halt. ^ name].
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1164
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1165
    retvalSpec := self retvalSpecFromStream:s in:aPackage.
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1166
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1167
    ^ retvalSpec , ' ' , name , ' (' , argSpec , ')'
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1168
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1169
    "
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1170
     JavaMethod specFromSignature:'(LObject;)V' withName:'foo' 
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1171
     JavaMethod specFromSignature:'(BB)S'       withName:'foo' 
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1172
    "
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1173
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1174
    "Created: 20.3.1997 / 12:44:36 / cg"
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1175
! !
d51e897b4b5f checkin from browser
cg
parents: 149
diff changeset
  1176
129
f40775af59a5 checkin from browser
cg
parents: 127
diff changeset
  1177
!JavaMethod class methodsFor:'documentation'!
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
  1178
91843ac44d2f intitial checkin
cg
parents:
diff changeset
  1179
version
184
f65eb9c4ba6e checkin from browser
cg
parents: 175
diff changeset
  1180
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethod.st,v 1.46 1997/07/31 22:33:54 cg Exp $'
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
  1181
! !
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
  1182
JavaMethod initialize!