JavaMethod.st
author cg
Thu, 27 Jun 1996 16:30:06 +0000
changeset 85 888c37bbe4bb
parent 83 2d61ef3579e4
child 90 918e2740098c
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
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
     2
	instanceVariableNames:'javaByteCode numArgs numLocals returnType accessFlags name
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
     3
		signature exceptionHandlerTable exceptionTable lineNumberTable
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
     4
		localVariableTable javaClass numStack'
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
     5
	classVariableNames:'SignatureTypeCodes'
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
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
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
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    14
    SignatureTypeCodes := IdentityDictionary new.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    15
    SignatureTypeCodes at:$B put:#byte.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    16
    SignatureTypeCodes at:$C put:#char.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    17
    SignatureTypeCodes at:$D put:#double.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    18
    SignatureTypeCodes at:$F put:#float.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    19
    SignatureTypeCodes at:$I put:#int.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    20
    SignatureTypeCodes at:$J put:#long.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    21
    SignatureTypeCodes at:$S put:#'unsigned short'.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    22
    SignatureTypeCodes at:$Z put:#boolean.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    23
    SignatureTypeCodes at:$L put:#object.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    24
    SignatureTypeCodes at:$[ put:#array.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    25
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    26
    "
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    27
     JavaMethod initialize
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
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    30
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
    31
!JavaMethod  class methodsFor:'signature parsing'!
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
    32
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    33
argSigArrayFromSignature:aSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    34
    "given a signature, return a specArray for the arguments"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    35
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    36
    |s argSpec retvalSpec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    37
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    38
    s := aSignature readStream.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    39
    s next ~~ $( ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    40
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    41
    ^ self argSigArrayFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    42
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    43
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    44
     JavaMethod argSigArrayFromSignature:'(LObject;)V'
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    45
     JavaMethod argSigArrayFromSignature:'(BB)S'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    46
     JavaMethod argSigArrayFromSignature:'(LObject;LObject;II)V'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    47
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    48
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    49
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    50
argSigArrayFromStream:s
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    51
    "parse an argSpec, return an array of specs - see java doc"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    52
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    53
    |argSpec spec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    54
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    55
    spec := #().
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    56
    [s atEnd or:[s peek == $)]] whileFalse:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    57
"/        s peek == Character space ifTrue:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    58
"/            s next
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    59
"/        ] ifFalse:[
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    60
            argSpec := self fieldTypeFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    61
            spec := spec copyWith:argSpec.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    62
"/        ]
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    63
    ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    64
    ^ spec
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    65
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    66
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    67
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    68
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    69
argSpecFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    70
    "parse an argSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    71
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    72
    |argSpec spec|
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    73
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    74
    spec := ''.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    75
    [s atEnd or:[s peek == $)]] whileFalse:[
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    76
"/        s peek == Character space ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    77
"/            s next
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    78
"/        ] ifFalse:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    79
            argSpec := self fieldTypeFromStream:s.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    80
            spec size ~~ 0 ifTrue:[
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    81
                spec := spec , ' '
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    82
            ].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    83
            spec := spec , argSpec.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
    84
"/        ]
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    85
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    86
    ^ spec
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    87
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
    88
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
    89
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
    90
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    91
fieldTypeFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    92
    "parse a fieldTypeSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    93
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
    94
    |typeChar typeSym spec elType size className|
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    95
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    96
    typeChar := s next.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    97
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    98
    typeSym := SignatureTypeCodes at:typeChar ifAbsent:#unknown.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
    99
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   100
    typeSym == #unknown ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   101
        ^ typeSym
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   102
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   103
    typeSym == #object ifTrue:[
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   104
        className := s upTo:$;.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   105
        "/ strip off default
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   106
        (className startsWith:'java/lang/') ifTrue:[
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   107
            ^ className copyFrom:11
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   108
        ].
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   109
        ^ className
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   110
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   111
    typeSym == #array ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   112
        s peek isDigit ifTrue:[
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   113
            size := Integer readFrom:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   114
            elType := self fieldTypeFromStream:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   115
            ^ elType , '[' , size printString , ']'
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   116
        ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   117
        elType := self fieldTypeFromStream:s.
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   118
        ^ elType , '[]'
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   119
    ].
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   120
    ^ typeSym
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   121
!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   122
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   123
numArgsFromSignature:aSignature
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   124
    "given a signature, return the number of args"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   125
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   126
    |s argSpec|
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   127
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   128
    s := aSignature readStream.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   129
    s next ~~ $( ifTrue:[self halt. ^ name].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   130
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   131
    ^ self numArgsFromStream:s.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   132
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   133
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   134
     JavaMethod numArgsFromSignature:'(LObject;)V'
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   135
     JavaMethod numArgsFromSignature:'(BB)S'      
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   136
     JavaMethod numArgsFromSignature:'()V'      
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   137
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   138
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   139
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   140
numArgsFromStream:s
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   141
    "parse an argSpec - see java doc"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   142
55
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   143
    |argSpec n t|
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   144
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   145
    n := 0.
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   146
    [s atEnd or:[s peek == $)]] whileFalse:[
55
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   147
        t := self fieldTypeFromStream:s.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   148
        "/
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   149
        "/ some args count as 2
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   150
        "/
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   151
        t == #long ifTrue:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   152
            n := n + 2.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   153
        ] ifFalse:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   154
            t == #double ifTrue:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   155
                n := n + 2
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   156
            ] ifFalse:[
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   157
                n := n + 1.
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   158
            ]
5573344a887d checkin from browser
cg
parents: 50
diff changeset
   159
        ]
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   160
    ].
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   161
    ^ n
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   162
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   163
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   164
retValSpecFromSignature:aSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   165
    "given a signature, return a spec"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   166
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   167
    |s argSpec retvalSpec|
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   168
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   169
    s := aSignature readStream.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   170
    s next ~~ $( ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   171
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   172
    argSpec := self argSpecFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   173
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   174
    s next ~~ $) ifTrue:[self halt. ^ name].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   175
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   176
    retvalSpec := self retvalSpecFromStream:s.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   177
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   178
    ^ retvalSpec 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   179
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   180
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   181
     JavaMethod retValSpecFromSignature:'(LObject;)V'
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   182
     JavaMethod retValSpecFromSignature:'(BB)S'      
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   183
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   184
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   185
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   186
returnTypeFromSignature:aSignature
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   187
    "given a signature, return its type as a string"
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   188
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   189
    |s c argSpec retvalSpec|
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   190
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   191
    s := aSignature readStream.
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   192
    (c := s peek) ~~ $( ifTrue:[
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   193
        c == $' ifTrue:[
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   194
           [s peek ~= $'] whileTrue:[s next].
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   195
           s next.
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   196
           ^ (self retvalSpecFromStream:s)
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   197
        ].
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   198
        ^ (self retvalSpecFromStream:s)
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   199
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   200
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   201
    s next.
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   202
    self argSpecFromStream:s.
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   203
    s next ~~ $) ifTrue:[self halt. ^ nil].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   204
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   205
    ^ (self retvalSpecFromStream:s)
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   206
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   207
    "
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   208
     JavaMethod returnTypeFromSignature:'(LObject;)V' 
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   209
     JavaMethod returnTypeFromSignature:'(BB)S'       
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   210
     JavaMethod returnTypeFromSignature:'()J'       
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   211
     JavaMethod returnTypeFromSignature:'''first''J'       
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   212
    "
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   213
!
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   214
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   215
returnsVoidFromSignature:aSignature
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   216
    "given a signature, return true if it returns void, false if not"
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   217
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   218
    ^ (self typeFromSignature:aSignature) = 'void'
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   219
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   220
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   221
     JavaMethod returnsVoidFromSignature:'(LObject;)V' 
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   222
     JavaMethod returnsVoidFromSignature:'(BB)S'       
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   223
    "
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   224
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   225
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   226
retvalSpecFromStream:s
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   227
    "parse a retvalSpec - see java doc"
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   228
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   229
    |argSpec spec|
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   230
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   231
    s atEnd ifTrue:[self halt. ^ #void].
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   232
    s peek == $V ifTrue:[^ #void].
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   233
    ^ self fieldTypeFromStream:s
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   234
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   235
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   236
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   237
specFromSignature:aSignature withName:name
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   238
    "given a signature, return a spec"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   239
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   240
    |s argSpec retvalSpec|
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   241
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   242
    s := aSignature readStream.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   243
    s next ~~ $( ifTrue:[self halt. ^ name].
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   244
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   245
    argSpec := self argSpecFromStream:s.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   246
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   247
    s next ~~ $) ifTrue:[self halt. ^ name].
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   248
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   249
    retvalSpec := self retvalSpecFromStream:s.
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   250
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   251
    ^ retvalSpec , ' ' , name , ' (' , argSpec , ')'
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   252
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   253
    "
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   254
     JavaMethod specFromSignature:'(LObject;)V' withName:'foo' 
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   255
     JavaMethod specFromSignature:'(BB)S'       withName:'foo' 
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   256
    "
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   257
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   258
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   259
typeFromSignature:aSignature
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   260
    "given a signature, return its type as a string"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   261
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   262
    |s c argSpec retvalSpec|
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   263
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   264
    s := aSignature readStream.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   265
    (c := s peek) ~~ $( ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   266
        c == $' ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   267
           s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   268
           [s peek ~= $'] whileTrue:[s next].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   269
           s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   270
           ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   271
        ].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   272
        ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   273
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   274
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   275
    s next.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   276
    self argSpecFromStream:s.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   277
    s next ~~ $) ifTrue:[self halt. ^ nil].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   278
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   279
    ^ (self retvalSpecFromStream:s)
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   280
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   281
    "
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   282
     JavaMethod typeFromSignature:'(LObject;)V'  
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   283
     JavaMethod typeFromSignature:'(BB)S'        
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   284
     JavaMethod typeFromSignature:'()J'          
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   285
     JavaMethod typeFromSignature:'J'          
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   286
     JavaMethod typeFromSignature:'''first''J'       
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   287
    "
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   288
! !
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   289
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   290
!JavaMethod methodsFor:'accessing'!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   291
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   292
argSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   293
    ^ self class argSigArrayFromSignature:signature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   294
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   295
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   296
constantPool
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   297
    ^ javaClass constantPool
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   298
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   299
    "Modified: 16.4.1996 / 12:36:27 / cg"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   300
    "Created: 16.4.1996 / 15:28:50 / cg"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   301
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   302
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   303
decompiledSource
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   304
    |s|
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   305
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   306
    s := '' writeStream.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   307
    self decompileTo:s.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   308
    ^ s contents
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   309
!
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   310
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   311
exceptionTable
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   312
    ^ exceptionTable
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   313
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   314
    "Created: 16.4.1996 / 12:34:04 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   315
    "Modified: 16.4.1996 / 12:49:06 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   316
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   317
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   318
javaByteCode
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   319
    ^ javaByteCode
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   320
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   321
    "Modified: 16.4.1996 / 12:36:27 / cg"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   322
    "Created: 16.4.1996 / 14:55:44 / cg"
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   323
!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   324
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   325
javaClass
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   326
    ^ javaClass
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   327
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   328
    "Modified: 16.4.1996 / 12:36:27 / cg"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   329
    "Created: 16.4.1996 / 14:55:44 / cg"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   330
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   331
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   332
lineNumberTable
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   333
    ^ lineNumberTable
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   334
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   335
    "Created: 16.4.1996 / 12:34:04 / cg"
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   336
    "Modified: 16.4.1996 / 12:49:06 / cg"
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   337
!
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   338
85
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   339
localVariableTable
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   340
    ^ localVariableTable
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   341
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   342
    "
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   343
     JavaMethod allInstancesDo:[:m| m localVariableTable notNil ifTrue:[self halt]]
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   344
    "
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   345
!
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   346
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   347
methodArgAndVarNames
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   348
    ^ ((1 to:self numArgs) collect:[:i | 'arg' , i printString])
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   349
      ,
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   350
      ((1 to:self numVars) collect:[:i | 'local' , i printString])
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   351
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   352
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   353
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   354
methodArgNames
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   355
    ^ (1 to:self numArgs) collect:[:i | 'arg' , i printString]
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   356
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   357
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   358
name
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   359
    ^ name
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   360
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   361
    "Created: 16.4.1996 / 11:34:22 / cg"
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   362
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   363
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   364
numArgs
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   365
    numArgs isNil ifTrue:[^ 0].
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   366
    ^ numArgs
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   367
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   368
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   369
numVars
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   370
    numLocals isNil ifTrue:[^ 0].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   371
    ^ numLocals
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   372
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   373
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   374
numberOfMethodArgs:n
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   375
    numArgs := n
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   376
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   377
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   378
retValSignature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   379
    ^ self class retValSpecFromSignature:signature
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   380
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   381
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   382
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   383
returnsLong
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   384
    ^ returnType == #long
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   385
!
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   386
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   387
returnsVoid
72
9427aa6a8528 *** empty log message ***
cg
parents: 64
diff changeset
   388
    ^ returnType == #void
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   389
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   390
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   391
setAccessFlags:flags
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   392
    accessFlags := flags.
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   393
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   394
    "Created: 16.4.1996 / 11:34:14 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   395
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   396
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   397
setCode:codeBytes maxStack:max_stack maxLocals:max_locals u1:unknown1 u2:unknown2
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   398
    javaByteCode := codeBytes.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   399
    numStack := max_stack.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   400
    numLocals := max_locals.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   401
43
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   402
"/    self displayString printNL.
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   403
"/    '   nStack: ' print. numStack print. 
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   404
"/    ' nLocal: ' print. numLocals print. 
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   405
"/    ' u1: ' print. unknown1 print.
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   406
"/    ' u2: ' print. unknown2 printNL.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   407
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   408
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   409
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   410
setExceptionHandlerTable:anArray
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   411
    exceptionHandlerTable := anArray.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   412
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   413
    "Created: 16.4.1996 / 12:34:04 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   414
!
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   415
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   416
setExceptionTable:anArray
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   417
    exceptionTable := anArray.
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   418
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   419
    "Created: 16.4.1996 / 12:34:04 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   420
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   421
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   422
setJavaClass:aJavaClass
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   423
    javaClass := aJavaClass
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   424
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   425
    "Modified: 16.4.1996 / 12:36:27 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   426
    "Created: 16.4.1996 / 15:28:15 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   427
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   428
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   429
setLineNumberTable:anArray
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   430
    lineNumberTable := anArray.
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   431
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   432
    "Created: 16.4.1996 / 12:34:04 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   433
    "Modified: 16.4.1996 / 12:49:06 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   434
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   435
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   436
setLocalVariableTable:anArray
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   437
     localVariableTable := anArray.
50
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   438
!
458467ce0e15 checkin from browser
cg
parents: 48
diff changeset
   439
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   440
setName:aString
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   441
    name := aString asSymbol.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   442
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   443
    "Created: 16.4.1996 / 11:34:22 / cg"
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   444
!
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   445
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   446
setSignature:aString
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   447
    signature := aString asSymbol.
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   448
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   449
    self numberOfMethodArgs:(self class numArgsFromSignature:aString).
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   450
    returnType := self class typeFromSignature:aString.
27
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   451
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   452
    "Created: 16.4.1996 / 11:34:29 / cg"
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   453
!
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   454
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   455
signature
4560bb77bb36 checkin from browser
cg
parents: 19
diff changeset
   456
    ^ signature 
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   457
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   458
    "Created: 16.4.1996 / 11:34:29 / cg"
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   459
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   460
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   461
source
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   462
    |classSource|
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   463
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   464
    lineNumberTable notNil ifTrue:[
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   465
        classSource := javaClass source.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   466
        classSource notNil ifTrue:[^ classSource].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   467
    ].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   468
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   469
    ^ self decompiledSource
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   470
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   471
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   472
sourceFilename
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   473
    ^ javaClass sourceFile
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   474
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   475
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   476
!JavaMethod methodsFor:'decompiling'!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   477
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   478
decompileTo:aStream
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   479
    JavaDecompiler decompile:self to:aStream.
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   480
    ^ true
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   481
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   482
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   483
! !
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   484
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   485
!JavaMethod methodsFor:'printing & storing'!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   486
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   487
displayString
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   488
    ^ 'JavaMethod(' , javaClass name , '::' , self signatureName , ')'
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   489
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   490
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   491
printStringForBrowserWithSelector:selector
43
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   492
"/    self isStatic ifTrue:[
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   493
"/        ^ 'static ' , self signatureName
2c4ca2eb8d07 checkin from browser
cg
parents: 31
diff changeset
   494
"/    ].
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   495
    self isBreakpointed ifTrue:[
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   496
        ^ '!! ' , self signatureName
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   497
    ].
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   498
    ^ self signatureName
10
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   499
!
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   500
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   501
signatureName
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   502
    "return a string to be used when browsing"
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   503
1f803ce6d3fc better signature code
cg
parents: 8
diff changeset
   504
    ^ self class specFromSignature:signature withName:name
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   505
! !
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   506
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   507
!JavaMethod methodsFor:'queries'!
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   508
48
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   509
hasHandlerFor:anException at:pc
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   510
    exceptionHandlerTable isNil ifTrue:[^ false].
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   511
    exceptionHandlerTable do:[:entry |
48
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   512
        |hpc|
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   513
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   514
        hpc := entry handlerPCFor:anException at:pc in:self.
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   515
        hpc notNil ifTrue:[
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   516
            self halt
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   517
        ].
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   518
    ].
1e12f315ed97 checkin from browser
cg
parents: 46
diff changeset
   519
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   520
    ^ false
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   521
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   522
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   523
isAbstract
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   524
    ^ (accessFlags bitAnd:16r0400) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   525
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   526
80
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   527
isBreakpointed
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   528
    ^ false
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   529
!
f08d2cab0b55 *** empty log message ***
cg
parents: 75
diff changeset
   530
19
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   531
isFinal
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   532
    ^ (accessFlags bitAnd:16r0010) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   533
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   534
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   535
isNative
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   536
    ^ (accessFlags bitAnd:16r0100) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   537
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   538
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   539
isPrivate
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   540
    ^ (accessFlags bitAnd:16r0002) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   541
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   542
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   543
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   544
isProtected
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   545
    ^ (accessFlags bitAnd:16r0004) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   546
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   547
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   548
isPublic
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   549
    ^ (accessFlags bitAnd:16r0001) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   550
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   551
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   552
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   553
isStatic
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   554
    ^ (accessFlags bitAnd:16r0008) ~~ 0
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   555
!
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   556
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   557
isSynchronized
512a19e2d46f checkin from browser
cg
parents: 18
diff changeset
   558
    ^ (accessFlags bitAnd:16r0020) ~~ 0
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   559
!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   560
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   561
isUnloaded
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   562
    ^ false
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   563
!
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   564
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   565
lineNumberForPC:pc
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   566
    |last num text classSource|
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   567
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   568
    num := nil.
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   569
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   570
    lineNumberTable notNil ifTrue:[
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   571
        classSource := javaClass source.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   572
        classSource notNil ifTrue:[
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   573
            lineNumberTable do:[:assoc |
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   574
                assoc key >= pc ifTrue:[
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   575
                    assoc key == pc ifTrue:[^ assoc value].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   576
                    last isNil ifTrue:[^ assoc value].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   577
                    ^ last value.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   578
                ].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   579
                last := assoc.
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   580
            ].
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   581
            ^ lineNumberTable first value
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   582
        ].
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   583
    ].
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   584
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   585
    "/ decompile and look which line the pc falls into
75
9816a04c8b21 checkin from browser
cg
parents: 72
diff changeset
   586
    text := self decompiledSource asCollectionOfLines.
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   587
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   588
    text keysAndValuesDo:[:lineNr :line |
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   589
        |nr|
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   590
83
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   591
        (line startsWith:'    ') ifFalse:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   592
            nr := Integer readFrom:line onError:0.
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   593
            nr >= pc ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   594
                ^ lineNr
2d61ef3579e4 *** empty log message ***
cg
parents: 80
diff changeset
   595
            ]
46
db9b84631d43 checkin from browser
cg
parents: 43
diff changeset
   596
        ]
31
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   597
    ].
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   598
    ^ num
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   599
!
644123641e2c java exceptions (java handlers not yet implemented)
cg
parents: 29
diff changeset
   600
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   601
who
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   602
    "return the class and selector of where I am defined in."
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   603
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
   604
    |sel|
18
6c07dc4b1118 checkin from browser
cg
parents: 10
diff changeset
   605
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
   606
    sel := javaClass methodDictionary keyAtValue:self ifAbsent:nil.
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
   607
    sel isNil ifTrue:[^ nil].
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
   608
    ^ Array with:javaClass with:sel.
5
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   609
! !
f026f5d20c15 checkin from browser
cg
parents: 2
diff changeset
   610
64
2e4b425dc40c changes for new methodDict
cg
parents: 55
diff changeset
   611
!JavaMethod  class methodsFor:'documentation'!
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
   612
91843ac44d2f intitial checkin
cg
parents:
diff changeset
   613
version
85
888c37bbe4bb checkin from browser
cg
parents: 83
diff changeset
   614
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethod.st,v 1.20 1996/06/27 16:30:06 cg Exp $'
2
91843ac44d2f intitial checkin
cg
parents:
diff changeset
   615
! !
8
4df3a66460a3 can now read (undoc) 3.45 format
cg
parents: 5
diff changeset
   616
JavaMethod initialize!