JavaClassReader.st
author cg
Thu, 27 Jun 1996 16:31:19 +0000
changeset 86 3090f19a5be1
parent 83 2d61ef3579e4
child 91 9b325648aa77
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     1
Object subclass:#JavaClassReader
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
     2
	instanceVariableNames:'inStream msb constants version majorVsn minorVsn constNeeds2Slots
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
     3
		constSlot'
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
     4
	classVariableNames:'Verbose ClassPath Silent'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
     5
	poolDictionaries:''
083530508d9c intitial checkin
cg
parents:
diff changeset
     6
	category:'Java-Support'
083530508d9c intitial checkin
cg
parents:
diff changeset
     7
!
083530508d9c intitial checkin
cg
parents:
diff changeset
     8
083530508d9c intitial checkin
cg
parents:
diff changeset
     9
62
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    10
!JavaClassReader  class methodsFor:'initialization'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    11
083530508d9c intitial checkin
cg
parents:
diff changeset
    12
initialize
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    13
    Verbose := false. Silent := false.
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    14
    self initializeClassPath
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    15
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    16
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    17
     JavaClassReader initialize
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    18
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    19
!
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    20
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    21
initializeClassPath
71
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    22
    self initializeClassPath:#('/home/cg/java/').
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
    23
    self initializeClassPath:#('/home/cg/java/JDK/classes/'
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
    24
                               '/home/cg/java/JWS/classes/'
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
    25
                               '/home/cg/java/' ).
71
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    26
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    27
"/    self initializeClassPath:#(
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    28
"/                        '/phys/ibm3/java/lib/'
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    29
"/                        '/phys/ibm3/hotjava/classes/'
feb1b4907dd4 *** empty log message ***
cg
parents: 67
diff changeset
    30
"/                  )
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    31
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    32
    "
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    33
     JavaClassReader initializeClassPath
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    34
    "
62
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    35
!
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    36
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    37
initializeClassPath:aCollectionOfDirectoryPathNames
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    38
    ClassPath := aCollectionOfDirectoryPathNames
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    39
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    40
    "
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    41
     JavaClassReader initializeClassPath:#(
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    42
                        '/home/cg/java/'
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    43
                  )
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    44
    "
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    45
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    46
62
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    47
!JavaClassReader  class methodsFor:'debugging'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    48
083530508d9c intitial checkin
cg
parents:
diff changeset
    49
verbose:aBoolean
083530508d9c intitial checkin
cg
parents:
diff changeset
    50
    Verbose := aBoolean
083530508d9c intitial checkin
cg
parents:
diff changeset
    51
083530508d9c intitial checkin
cg
parents:
diff changeset
    52
    "
67
a72c949d86dd *** empty log message ***
cg
parents: 62
diff changeset
    53
     Java flushClasses.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    54
     JavaClassReader verbose:true
083530508d9c intitial checkin
cg
parents:
diff changeset
    55
     JavaClassReader verbose:false
083530508d9c intitial checkin
cg
parents:
diff changeset
    56
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
    57
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
    58
62
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
    59
!JavaClassReader  class methodsFor:'file reading'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    60
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    61
loadClass:aClassName
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    62
    "reads a class, installs and returns it.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    63
     The classes string constants are resolved & <clinit> is called,
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    64
     if it implements it."
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    65
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    66
    |rslt|
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    67
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
    68
    rslt := self loadClassLazy:aClassName ignoring:Set new.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    69
    self postLoadActions.
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
    70
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
    71
    ^ rslt
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    72
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    73
    "
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    74
     JavaClassReader loadClass:'awt/Component'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    75
     JavaClassReader loadClass:'awt/Button'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    76
     JavaClassReader loadClass:'browser/AddButton'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    77
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    78
     JavaClassReader loadClass:'java/lang/Object'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    79
     JavaClassReader loadClass:'java/lang/AbstractMethodError'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    80
     JavaClassReader loadClass:'java/lang/Thread'
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    81
    "
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    82
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    83
    "Created: 15.4.1996 / 14:58:53 / cg"
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    84
!
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
    85
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
    86
loadClassLazy:aClassName ignoring:classesBeingLoaded
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
    87
    "private helper:
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
    88
      reads a class, installs and returns it.
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
    89
      The class is searched along the ClassPath.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    90
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    91
     This is a partial load (to load other classes):
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    92
     - The classes stringConstants are not fixed to be JavaStrings 
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    93
       (i.e they are still ST-Strings).
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
    94
     - The class is not initialized."
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
    95
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
    96
    |rslt clsName|
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
    97
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
    98
    (aClassName endsWith:';') ifTrue:[
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
    99
        ('oops - loading of ' , aClassName , ' attempted') printNL.
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   100
self halt.
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   101
        ^ nil
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   102
    ].
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   103
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
   104
    clsName := aClassName.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
   105
    (clsName includes:$.) ifTrue:[
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
   106
        clsName := clsName copy replaceAll:$. by:$/
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
   107
    ].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   108
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   109
    (classesBeingLoaded includes:clsName) ifTrue:[
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   110
        ('oops - recursive load of ' , clsName , ' attempted') printNL.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   111
"/ self halt.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   112
        ^ JavaUnresolvedClassConstant fullName:clsName
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   113
    ].
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   114
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   115
    classesBeingLoaded add:clsName.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   116
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   117
    ClassPath do:[:path |
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   118
        rslt := self loadFileLazy:(path , clsName , '.class')
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   119
                         ignoring:classesBeingLoaded.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   120
        rslt notNil ifTrue:[^ rslt].
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   121
    ].
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   122
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   123
    ^ rslt
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   124
!
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   125
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   126
loadFile:aFilename
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   127
    "reads a class from aFilename, installs and returns it.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   128
     The classes strings are fixed and its class-init function is called."
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   129
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   130
    self loadFileLazy:aFilename ignoring:(Set new).
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   131
    self postLoadActions
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   132
!
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   133
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   134
loadFileLazy:aFilename ignoring:classesBeingLoaded
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   135
    "reads a class from aFilename, installs and returns it.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   136
     No strings are fixed and no class-init functions are called."
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   137
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   138
    |javaClass pool|
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   139
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   140
    javaClass := self readFile:aFilename ignoring:classesBeingLoaded.
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   141
    javaClass notNil ifTrue:[
32
0dbaa43a73db checkin from browser
cg
parents: 29
diff changeset
   142
        Java at:(javaClass fullName asSymbol) put:javaClass.
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   143
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   144
"/        javaClass resolveClassRefsIgnoring:classesBeingLoaded.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   145
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   146
        classesBeingLoaded remove:javaClass fullName ifAbsent:nil.
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   147
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   148
"/        Smalltalk at:(javaClass fullName asSymbol) put:javaClass.
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   149
"/        Smalltalk changed.
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   150
    ].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   151
    ^ javaClass
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   152
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   153
    "
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   154
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   155
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   156
     '/phys/ibm3/java/lib/java/lang' asFilename
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   157
        directoryContents do:[:nm |
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   158
            (nm endsWith:'.class') ifTrue:[
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   159
                ('/phys/ibm3/java/lib/java/lang/' , nm) printNL.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   160
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/lang/' , nm
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   161
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   162
        ].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   163
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   164
     '/phys/ibm3/java/lib/java/io' asFilename
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   165
        directoryContents do:[:nm |
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   166
            (nm endsWith:'.class') ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   167
                ('/phys/ibm3/java/lib/java/io/' , nm) printNL.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   168
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/io/' , nm
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   169
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   170
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   171
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   172
     '/phys/ibm3/java/lib/java/net' asFilename
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   173
        directoryContents do:[:nm |
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   174
            (nm endsWith:'.class') ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   175
                ('/phys/ibm3/java/lib/java/net/' , nm) printNL.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   176
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/net/' , nm
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   177
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   178
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   179
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   180
     '/phys/ibm3/java/lib/java/util' asFilename
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   181
        directoryContents do:[:nm |
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   182
            (nm endsWith:'.class') ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   183
                ('/phys/ibm3/java/lib/java/util/' , nm) printNL.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   184
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/util/' , nm
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   185
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   186
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   187
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   188
     '/phys/ibm3/java/lib/java/awt' asFilename
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   189
        directoryContents do:[:nm |
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   190
            (nm endsWith:'.class') ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   191
                ('/phys/ibm3/java/lib/java/awt/' , nm) printNL.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   192
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/awt/' , nm
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   193
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   194
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   195
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   196
     '/phys/ibm3/java/lib/java/applet' asFilename
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   197
        directoryContents do:[:nm |
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   198
            (nm endsWith:'.class') ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   199
                ('/phys/ibm3/java/lib/java/applet/' , nm) printNL.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   200
                JavaClassReader loadFile:'/phys/ibm3/java/lib/java/applet/' , nm
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   201
            ]
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   202
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   203
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   204
     JavaClassReader loadFile:'/phys/ibm3/java/lib/java/lang/AbstractMethodError.class'
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   205
     JavaClassReader loadFile:'/phys/ibm3/java/lib/java/lang/Thread.class'
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   206
    "
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   207
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   208
    "Created: 15.4.1996 / 14:58:53 / cg"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   209
!
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   210
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   211
postLoadActions
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   212
    "Resolve all classes' string constants.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   213
     Perform all class initialization functions (of those which are not
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   214
     yet initialized)."
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   215
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   216
    JavaUnresolvedStringConstant patchupStringConstants.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   217
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   218
    Java allClassesDo:[:aJavaClass |
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   219
        aJavaClass resolveClassRefsIgnoring:Set new.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   220
    ].
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   221
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   222
    Java allClassesDo:[:aJavaClass |
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   223
        aJavaClass isInitialized ifFalse:[
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   224
            aJavaClass classInit
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   225
        ]
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   226
    ]
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   227
!
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   228
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   229
readFile:aFilename ignoring:classesBeingLoaded
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   230
    "reads a class from aFilename and returns it.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   231
     The JavaClass is NOT installed as global"
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   232
73
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   233
    |inStream javaClass|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   234
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   235
    Silent ifFalse:[
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   236
        'reading ' print. aFilename print. ' ...' printNL.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   237
    ].
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   238
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   239
    inStream := aFilename asFilename readStream.
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   240
    inStream isNil ifTrue:['nil' printNL. ^ nil].
73
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   241
    javaClass := self readStream:inStream ignoring:classesBeingLoaded.
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   242
    javaClass notNil ifTrue:[
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   243
        javaClass setBinaryFilePath:(inStream pathName).
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   244
    ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   245
    inStream close.
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   246
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   247
    Silent ifFalse:[
73
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   248
        '  ... loaded ' print. javaClass displayString printNL.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   249
    ].
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   250
73
a1268823f1a4 *** empty log message ***
cg
parents: 72
diff changeset
   251
    ^ javaClass
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   252
083530508d9c intitial checkin
cg
parents:
diff changeset
   253
    "Created: 15.4.1996 / 14:58:53 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   254
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   255
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   256
readStream:aStream ignoring:classesBeingLoaded
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   257
    "reads a class from aStream and returns it.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   258
     The JavaClass is not installed as global"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   259
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   260
    ^ self new readStream:aStream ignoring:classesBeingLoaded
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   261
083530508d9c intitial checkin
cg
parents:
diff changeset
   262
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   263
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   264
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   265
083530508d9c intitial checkin
cg
parents:
diff changeset
   266
    "Modified: 15.4.1996 / 15:01:30 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   267
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
   268
083530508d9c intitial checkin
cg
parents:
diff changeset
   269
!JavaClassReader methodsFor:'file reading'!
083530508d9c intitial checkin
cg
parents:
diff changeset
   270
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   271
readClassFileIgnoring:classesbeingLoaded
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   272
    "reads a class from inStream and returns it.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   273
     The JavaClass is not installed as global and its constants
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   274
     (especially strings) may not be fully resolved."
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   275
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   276
    |magic 
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   277
     access_flags this_class this_class_index super_class super_class_index
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   278
     realSuperClass this_class_ref existingSuperClass
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   279
     fields interfaces staticFields nStatic|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   280
083530508d9c intitial checkin
cg
parents:
diff changeset
   281
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   282
    "/ read magic, determine byte order
083530508d9c intitial checkin
cg
parents:
diff changeset
   283
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   284
    msb := true.
083530508d9c intitial checkin
cg
parents:
diff changeset
   285
    magic := self nextU4.
083530508d9c intitial checkin
cg
parents:
diff changeset
   286
    magic = 16rCAFEBABE ifFalse:[
083530508d9c intitial checkin
cg
parents:
diff changeset
   287
        magic = 16rBEBAFECA ifFalse:[
083530508d9c intitial checkin
cg
parents:
diff changeset
   288
            self error:'not a java class file'.
083530508d9c intitial checkin
cg
parents:
diff changeset
   289
            ^ nil
083530508d9c intitial checkin
cg
parents:
diff changeset
   290
        ].
083530508d9c intitial checkin
cg
parents:
diff changeset
   291
        msb := false.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   292
        Verbose ifTrue:[Transcript showCR:'file is lsb'].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   293
    ] ifTrue:[
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   294
        Verbose ifTrue:[Transcript showCR:'file is msb'].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   295
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
   296
083530508d9c intitial checkin
cg
parents:
diff changeset
   297
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   298
    "/ get version
083530508d9c intitial checkin
cg
parents:
diff changeset
   299
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   300
    version := self nextU4.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   301
    majorVsn := (version bitShift:-16) bitAnd:16rFFFF.
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   302
    minorVsn := version bitAnd:16rFFFF.
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   303
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   304
    Verbose ifTrue:[Transcript show:'version = '; 
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   305
                               show:(majorVsn printString); 
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   306
                               show:'.';
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   307
                               showCR:(minorVsn printString)].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   308
083530508d9c intitial checkin
cg
parents:
diff changeset
   309
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   310
    "/ get constant pool
083530508d9c intitial checkin
cg
parents:
diff changeset
   311
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   312
    self readConstantPool.
083530508d9c intitial checkin
cg
parents:
diff changeset
   313
083530508d9c intitial checkin
cg
parents:
diff changeset
   314
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   315
    "/ access flags
083530508d9c intitial checkin
cg
parents:
diff changeset
   316
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   317
    access_flags := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   318
    this_class_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   319
    super_class_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   320
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   321
"/    this_class_ref := constants at:this_class_index.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   322
"/    this_class := JavaClass fullName:(this_class_ref fullName).
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   323
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   324
    super_class_index == 0 ifTrue:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   325
        super_class := nil
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   326
    ] ifFalse:[
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   327
        super_class := constants at:super_class_index.
32
0dbaa43a73db checkin from browser
cg
parents: 29
diff changeset
   328
        existingSuperClass := Java classNamed:super_class fullName.
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   329
        existingSuperClass notNil ifTrue:[
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   330
            super_class := existingSuperClass
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   331
        ] ifFalse:[
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   332
            (super_class isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   333
                existingSuperClass := super_class resolve.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   334
                existingSuperClass isNil ifTrue:[
72
9427aa6a8528 *** empty log message ***
cg
parents: 71
diff changeset
   335
                    existingSuperClass := self class 
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   336
                                        loadClassLazy:(super_class fullName)
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   337
                                        ignoring:classesbeingLoaded.
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   338
                ].
72
9427aa6a8528 *** empty log message ***
cg
parents: 71
diff changeset
   339
                existingSuperClass isNil ifTrue:[
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   340
                    self halt:('cannot find superclass: ' , super_class fullName).
72
9427aa6a8528 *** empty log message ***
cg
parents: 71
diff changeset
   341
                ].
9427aa6a8528 *** empty log message ***
cg
parents: 71
diff changeset
   342
                super_class := existingSuperClass
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   343
            ].
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
   344
        ].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   345
    ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   346
083530508d9c intitial checkin
cg
parents:
diff changeset
   347
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   348
    "/ get interfaces
083530508d9c intitial checkin
cg
parents:
diff changeset
   349
    "/
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   350
    interfaces := self readInterfaces.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   351
083530508d9c intitial checkin
cg
parents:
diff changeset
   352
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   353
    "/ get fields
083530508d9c intitial checkin
cg
parents:
diff changeset
   354
    "/
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   355
    fields := self readFieldInfofields.
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   356
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   357
    "/
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   358
    "/ create the fields as instVars
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   359
    "/ static fields are created as class-InstVars
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   360
    "/
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   361
    staticFields := fields select:[:f | f isStatic].
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   362
    nStatic := staticFields size.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   363
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   364
    this_class_ref := constants at:this_class_index.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   365
    nStatic ~~ 0 ifTrue:[
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   366
        fields := fields select:[:f | f isStatic not].
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   367
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   368
        this_class := JavaClass fullName:(this_class_ref fullName) numStatic:nStatic.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   369
        JavaClass setInstanceVariableStringFromFields:staticFields in:this_class class.
59
38114c3e3e77 checkin from browser
cg
parents: 54
diff changeset
   370
        this_class setStaticFields:staticFields.
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
   371
        this_class initializeStaticFields.
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   372
    ] ifFalse:[
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   373
        this_class := JavaClass fullName:(this_class_ref fullName).
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   374
    ].
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   375
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   376
    this_class setAccessFlags:access_flags.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   377
    this_class setSuperclass:super_class.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   378
    this_class setConstantPool:constants.
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   379
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   380
    this_class setFields:fields.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   381
083530508d9c intitial checkin
cg
parents:
diff changeset
   382
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   383
    "/ get methods
083530508d9c intitial checkin
cg
parents:
diff changeset
   384
    "/
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   385
    self readMethodsFor:this_class.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   386
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   387
    self readAttributesFor:this_class.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   388
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   389
    ^ this_class
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   390
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   391
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   392
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   393
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   394
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   395
     JavaClassReader verbose:true.
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   396
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/ArithmeticException.class'
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   397
     JavaClassReader readFile:'/phys/ibm3/java/lib/java/lang/ArithmeticException.class'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   398
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   399
083530508d9c intitial checkin
cg
parents:
diff changeset
   400
    "Created: 15.4.1996 / 15:02:47 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   401
    "Modified: 15.4.1996 / 16:51:48 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   402
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   403
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   404
readSourceFileAttributeFor:aJavaClass
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   405
    |attribute_length sourceFile_index sourceFile|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   406
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   407
    attribute_length := self nextU4.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   408
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   409
    sourceFile_index := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   410
    sourceFile := constants at:sourceFile_index.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   411
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   412
    aJavaClass setSourceFile:sourceFile.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   413
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   414
    Verbose ifTrue:[Transcript show:'sourceFile: '; showCR:sourceFile].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   415
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   416
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   417
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   418
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   419
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   420
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   421
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   422
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   423
    "Created: 15.4.1996 / 15:40:17 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   424
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   425
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   426
readStream:aStream ignoring:classesBeingLoaded
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   427
    "reads a class from aStream and returns it.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   428
     The JavaClass is not installed as global"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   429
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   430
    inStream := aStream.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   431
    inStream binary.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   432
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   433
    ^ self readClassFileIgnoring:classesBeingLoaded
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   434
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   435
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   436
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   437
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   438
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   439
    "Created: 15.4.1996 / 15:00:55 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   440
    "Modified: 15.4.1996 / 15:06:18 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   441
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   442
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   443
!JavaClassReader methodsFor:'file reading - attributes'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   444
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   445
readAttribute:attributeName for:something
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   446
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   447
    (attributeName = 'Code') ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   448
        self readCodeAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   449
        ^ true.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   450
    ].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   451
    (attributeName = 'Exceptions') ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   452
        self readExceptionsAttributeFor:something.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   453
        ^ true.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   454
    ].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   455
    (attributeName = 'LineNumberTable') ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   456
        self readLineNumberTableAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   457
        ^ true.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   458
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   459
    (attributeName = 'LocalVariableTable') ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   460
        self readLocalVariableTableAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   461
        ^ true.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   462
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   463
    (attributeName = 'ConstantValue') ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   464
        self readConstantValueAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   465
        ^ true.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   466
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   467
    (attributeName = 'SourceFile') ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   468
        self readSourceFileAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   469
        ^ true.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   470
    ].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   471
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
   472
    ('JAVA: unrecognized attribute: ' , attributeName) infoPrintCR.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   473
    ^ false
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   474
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   475
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   476
    "Created: 15.4.1996 / 15:40:17 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   477
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   478
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   479
readAttributeFor:something
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   480
    |attribute_name_index attribute_name attribute_length attribute_info|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   481
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   482
    Verbose ifTrue:[Transcript show:'attrib at pos: '; showCR:inStream position].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   483
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   484
    attribute_name_index := self nextU2.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   485
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   486
    "/
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   487
    "/ UNDOC feature ?
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   488
    "/
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   489
    attribute_name_index > constants size ifTrue:[
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   490
        attribute_name_index == 16rb700 ifTrue:[
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   491
            self halt.
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   492
        ]
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   493
    ].
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   494
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   495
    attribute_name := constants at:attribute_name_index.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   496
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   497
    Verbose ifTrue:[Transcript show:'attrib name: '; showCR:attribute_name].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   498
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   499
    (self readAttribute:attribute_name for:something) ifFalse:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   500
        attribute_length := self nextU4.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   501
        attribute_info := ByteArray new:(attribute_length).
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   502
        inStream nextBytes:attribute_length into:attribute_info startingAt:1.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   503
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   504
        Verbose ifTrue:[Transcript show:'skipped '; show:attribute_name; showCR:'-attribute'].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   505
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   506
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   507
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   508
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   509
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   510
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   511
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   512
    "Created: 15.4.1996 / 15:40:17 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   513
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   514
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   515
readAttributesFor:something
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   516
    |attributes_count|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   517
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   518
    attributes_count := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   519
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   520
    1 to:attributes_count do:[:i |
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   521
        self readAttributeFor:something.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   522
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   523
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   524
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   525
    "Created: 15.4.1996 / 15:40:17 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   526
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   527
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   528
!JavaClassReader methodsFor:'file reading - constants'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   529
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   530
readConstant
083530508d9c intitial checkin
cg
parents:
diff changeset
   531
    |tag constReader const|
083530508d9c intitial checkin
cg
parents:
diff changeset
   532
083530508d9c intitial checkin
cg
parents:
diff changeset
   533
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   534
    constNeeds2Slots := false.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   535
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   536
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   537
    "/ get tag
083530508d9c intitial checkin
cg
parents:
diff changeset
   538
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   539
    tag := self nextU1.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   540
    Verbose ifTrue:[Transcript show:'tag = '; showCR:tag].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   541
083530508d9c intitial checkin
cg
parents:
diff changeset
   542
    constReader := #(
083530508d9c intitial checkin
cg
parents:
diff changeset
   543
                        readConstant_Asciz              "/ 1
083530508d9c intitial checkin
cg
parents:
diff changeset
   544
                        readConstant_Undef              "/ 2
083530508d9c intitial checkin
cg
parents:
diff changeset
   545
                        readConstant_Integer            "/ 3
083530508d9c intitial checkin
cg
parents:
diff changeset
   546
                        readConstant_Float              "/ 4
083530508d9c intitial checkin
cg
parents:
diff changeset
   547
                        readConstant_Long               "/ 5
083530508d9c intitial checkin
cg
parents:
diff changeset
   548
                        readConstant_Double             "/ 6
083530508d9c intitial checkin
cg
parents:
diff changeset
   549
                        readConstant_Class              "/ 7
083530508d9c intitial checkin
cg
parents:
diff changeset
   550
                        readConstant_String             "/ 8
083530508d9c intitial checkin
cg
parents:
diff changeset
   551
                        readConstant_Fieldref           "/ 9
083530508d9c intitial checkin
cg
parents:
diff changeset
   552
                        readConstant_Methodref          "/ 10
083530508d9c intitial checkin
cg
parents:
diff changeset
   553
                        readConstant_InterfaceMethodref "/ 11
083530508d9c intitial checkin
cg
parents:
diff changeset
   554
                        readConstant_NameandType        "/ 12
083530508d9c intitial checkin
cg
parents:
diff changeset
   555
                    ) at:tag ifAbsent:[#readConstant_Undef].
083530508d9c intitial checkin
cg
parents:
diff changeset
   556
083530508d9c intitial checkin
cg
parents:
diff changeset
   557
    ^ self perform:constReader.
083530508d9c intitial checkin
cg
parents:
diff changeset
   558
083530508d9c intitial checkin
cg
parents:
diff changeset
   559
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   560
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   561
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   562
083530508d9c intitial checkin
cg
parents:
diff changeset
   563
    "Created: 15.4.1996 / 15:46:32 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   564
    "Modified: 15.4.1996 / 15:47:00 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   565
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   566
083530508d9c intitial checkin
cg
parents:
diff changeset
   567
readConstantPool
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   568
    |constantPoolCount const i|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   569
083530508d9c intitial checkin
cg
parents:
diff changeset
   570
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   571
    "/ get constant pool
083530508d9c intitial checkin
cg
parents:
diff changeset
   572
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   573
    constantPoolCount := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   574
    Verbose ifTrue:[Transcript show:'constantPoolCount = '; showCR:constantPoolCount].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   575
083530508d9c intitial checkin
cg
parents:
diff changeset
   576
    constants := Array new:constantPoolCount-1.
083530508d9c intitial checkin
cg
parents:
diff changeset
   577
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   578
    constSlot := 1.
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   579
    [constSlot < constantPoolCount] whileTrue:[
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   580
        Verbose ifTrue:[Transcript show:'const: '; showCR:constSlot].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   581
        const := self readConstant.
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   582
        constants at:constSlot put:const.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   583
        constNeeds2Slots ifTrue:[
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   584
            constSlot := constSlot + 1.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   585
        ].
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   586
        constSlot := constSlot + 1.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   587
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
   588
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   589
    constSlot := -1.
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   590
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   591
    1 to:constantPoolCount-1 do:[:i |
67
a72c949d86dd *** empty log message ***
cg
parents: 62
diff changeset
   592
        |const value|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   593
083530508d9c intitial checkin
cg
parents:
diff changeset
   594
        const := constants at:i.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   595
        const notNil ifTrue:[   "/ kludge for 2-slot constants (which only take 1 slot in ST/X)
67
a72c949d86dd *** empty log message ***
cg
parents: 62
diff changeset
   596
            value := JavaUnresolvedConstant resolve:const from:constants.
a72c949d86dd *** empty log message ***
cg
parents: 62
diff changeset
   597
            constants at:i put:value.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   598
        ]
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   599
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
   600
083530508d9c intitial checkin
cg
parents:
diff changeset
   601
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   602
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   603
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   604
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   605
083530508d9c intitial checkin
cg
parents:
diff changeset
   606
    "Created: 15.4.1996 / 15:14:11 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   607
    "Modified: 15.4.1996 / 16:41:57 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   608
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   609
083530508d9c intitial checkin
cg
parents:
diff changeset
   610
readConstant_Asciz
083530508d9c intitial checkin
cg
parents:
diff changeset
   611
    |len string|
083530508d9c intitial checkin
cg
parents:
diff changeset
   612
083530508d9c intitial checkin
cg
parents:
diff changeset
   613
    len := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   614
    string := String new:len.
083530508d9c intitial checkin
cg
parents:
diff changeset
   615
    inStream nextBytes:len into:string startingAt:1.
083530508d9c intitial checkin
cg
parents:
diff changeset
   616
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   617
    Verbose ifTrue:[Transcript show:'asciz; string= ';     showCR:string].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   618
083530508d9c intitial checkin
cg
parents:
diff changeset
   619
    ^ string
083530508d9c intitial checkin
cg
parents:
diff changeset
   620
083530508d9c intitial checkin
cg
parents:
diff changeset
   621
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   622
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   623
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   624
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   625
083530508d9c intitial checkin
cg
parents:
diff changeset
   626
    "Created: 15.4.1996 / 15:15:35 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   627
    "Modified: 15.4.1996 / 16:33:45 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   628
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   629
083530508d9c intitial checkin
cg
parents:
diff changeset
   630
readConstant_Class
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   631
    |name_index name|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   632
083530508d9c intitial checkin
cg
parents:
diff changeset
   633
    name_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   634
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   635
    Verbose ifTrue:[Transcript show:'class; index= '; showCR:name_index].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   636
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   637
    name := constants at:name_index.
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   638
    name notNil ifTrue:[
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   639
        self halt
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   640
    ].
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
   641
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   642
    ^ JavaUnresolvedClassConstant 
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   643
        nameIndex:name_index
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   644
        pool:constants
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   645
        slotIndex:constSlot
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   646
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   647
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   648
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   649
083530508d9c intitial checkin
cg
parents:
diff changeset
   650
    "Created: 15.4.1996 / 15:21:13 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   651
    "Modified: 15.4.1996 / 15:49:32 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   652
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   653
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   654
readConstant_Double
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   655
    |high low aFloat|
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   656
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   657
    high := self nextU4.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   658
    low := self nextU4.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   659
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   660
    aFloat := Float new.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   661
    UninterpretedBytes isBigEndian ifTrue:[
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   662
        aFloat basicAt:1 put:((high bitShift:-24) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   663
        aFloat basicAt:2 put:((high bitShift:-16) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   664
        aFloat basicAt:3 put:((high bitShift:-8) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   665
        aFloat basicAt:4 put:(high bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   666
        aFloat basicAt:5 put:((low bitShift:-24) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   667
        aFloat basicAt:6 put:((low bitShift:-16) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   668
        aFloat basicAt:7 put:((low bitShift:-8) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   669
        aFloat basicAt:8 put:(low bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   670
    ] ifFalse:[
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   671
        aFloat basicAt:1 put:(low bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   672
        aFloat basicAt:2 put:((low bitShift:-8) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   673
        aFloat basicAt:3 put:((low bitShift:-16) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   674
        aFloat basicAt:4 put:((low bitShift:-24) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   675
        aFloat basicAt:5 put:(high bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   676
        aFloat basicAt:6 put:((high bitShift:-8) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   677
        aFloat basicAt:7 put:((high bitShift:-16) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   678
        aFloat basicAt:8 put:((high bitShift:-24) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   679
    ].
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   680
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   681
    constNeeds2Slots := true.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   682
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   683
    Verbose ifTrue:[Transcript show:'double; value= ';     showCR:aFloat].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   684
    ^ aFloat
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   685
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   686
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   687
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   688
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   689
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   690
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   691
    "Modified: 15.4.1996 / 15:42:16 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   692
    "Created: 15.4.1996 / 16:34:42 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   693
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   694
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   695
readConstant_Fieldref
083530508d9c intitial checkin
cg
parents:
diff changeset
   696
    |class_index name_and_type_index|
083530508d9c intitial checkin
cg
parents:
diff changeset
   697
083530508d9c intitial checkin
cg
parents:
diff changeset
   698
    class_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   699
    name_and_type_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   700
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   701
    Verbose ifTrue:[Transcript show:'fieldref; classindex= ';     showCR:class_index].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   702
    Verbose ifTrue:[Transcript show:'fieldref; name&typeindex= '; showCR:name_and_type_index].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   703
083530508d9c intitial checkin
cg
parents:
diff changeset
   704
    ^ JavaUnresolvedFieldrefConstant 
083530508d9c intitial checkin
cg
parents:
diff changeset
   705
                classIndex:class_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   706
                nameandTypeIndex:name_and_type_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   707
083530508d9c intitial checkin
cg
parents:
diff changeset
   708
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   709
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   710
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   711
083530508d9c intitial checkin
cg
parents:
diff changeset
   712
    "Created: 15.4.1996 / 15:22:18 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   713
    "Modified: 15.4.1996 / 16:07:01 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   714
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   715
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   716
readConstant_Float
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   717
    |high aFloat|
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   718
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   719
    high := self nextU4.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   720
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   721
    aFloat := ShortFloat basicNew.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   722
    UninterpretedBytes isBigEndian ifTrue:[
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   723
        aFloat basicAt:1 put:((high bitShift:-24) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   724
        aFloat basicAt:2 put:((high bitShift:-16) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   725
        aFloat basicAt:3 put:((high bitShift:-8) bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   726
        aFloat basicAt:4 put:(high bitAnd:16rFF).
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   727
    ] ifFalse:[
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   728
        aFloat basicAt:1 put:(high bitAnd:16rFF).
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   729
        aFloat basicAt:2 put:((high bitShift:-8) bitAnd:16rFF).
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   730
        aFloat basicAt:3 put:((high bitShift:-16) bitAnd:16rFF).
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   731
        aFloat basicAt:4 put:((high bitShift:-24) bitAnd:16rFF).
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   732
    ].
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   733
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   734
    Verbose ifTrue:[Transcript show:'float; value= ';     showCR:aFloat].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   735
    ^ aFloat
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   736
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   737
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   738
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   739
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   740
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   741
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   742
    "Modified: 15.4.1996 / 15:42:16 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   743
    "Created: 15.4.1996 / 16:34:42 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   744
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   745
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   746
readConstant_Integer
083530508d9c intitial checkin
cg
parents:
diff changeset
   747
    |value|
083530508d9c intitial checkin
cg
parents:
diff changeset
   748
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
   749
    value := self nextS4.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   750
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   751
    Verbose ifTrue:[Transcript show:'integer; value= ';     showCR:value].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   752
083530508d9c intitial checkin
cg
parents:
diff changeset
   753
    ^ value
083530508d9c intitial checkin
cg
parents:
diff changeset
   754
083530508d9c intitial checkin
cg
parents:
diff changeset
   755
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   756
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   757
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   758
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   759
083530508d9c intitial checkin
cg
parents:
diff changeset
   760
    "Modified: 15.4.1996 / 15:42:16 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   761
    "Created: 15.4.1996 / 16:34:42 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   762
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   763
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   764
readConstant_InterfaceMethodref
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   765
    |class_index name_and_type_index|
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   766
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   767
    class_index := self nextU2.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   768
    name_and_type_index := self nextU2.
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   769
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   770
    Verbose ifTrue:[Transcript show:'methodref; classindex= ';     showCR:class_index].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   771
    Verbose ifTrue:[Transcript show:'methodref; name&typeindex= '; showCR:name_and_type_index].
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   772
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   773
    ^ JavaUnresolvedInterfaceMethodrefConstant 
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   774
                classIndex:class_index
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   775
                nameandTypeIndex:name_and_type_index
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   776
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   777
    "
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   778
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   779
    "
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   780
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   781
    "Created: 15.4.1996 / 15:22:37 / cg"
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   782
    "Modified: 15.4.1996 / 16:07:19 / cg"
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   783
!
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
   784
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   785
readConstant_Long
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   786
    |high low value|
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   787
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   788
    high := self nextU4.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   789
    low := self nextU4.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   790
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   791
    value := (high bitShift:32) bitOr:low.
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
   792
    (high bitTest:16r80000000) ifTrue:[
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
   793
        value := value - 16r10000000000000000.
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
   794
    ].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   795
    constNeeds2Slots := true.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   796
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   797
    Verbose ifTrue:[Transcript show:'long; value= ';     showCR:value].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   798
    ^ value
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   799
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   800
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   801
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   802
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   803
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   804
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   805
    "Modified: 15.4.1996 / 15:42:16 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   806
    "Created: 15.4.1996 / 16:34:42 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   807
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
   808
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   809
readConstant_Methodref
083530508d9c intitial checkin
cg
parents:
diff changeset
   810
    |class_index name_and_type_index|
083530508d9c intitial checkin
cg
parents:
diff changeset
   811
083530508d9c intitial checkin
cg
parents:
diff changeset
   812
    class_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   813
    name_and_type_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   814
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   815
    Verbose ifTrue:[Transcript show:'methodref; classindex= ';     showCR:class_index].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   816
    Verbose ifTrue:[Transcript show:'methodref; name&typeindex= '; showCR:name_and_type_index].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   817
083530508d9c intitial checkin
cg
parents:
diff changeset
   818
    ^ JavaUnresolvedMethodrefConstant 
083530508d9c intitial checkin
cg
parents:
diff changeset
   819
                classIndex:class_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   820
                nameandTypeIndex:name_and_type_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   821
083530508d9c intitial checkin
cg
parents:
diff changeset
   822
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   823
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   824
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   825
083530508d9c intitial checkin
cg
parents:
diff changeset
   826
    "Created: 15.4.1996 / 15:22:37 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   827
    "Modified: 15.4.1996 / 16:07:19 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   828
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   829
083530508d9c intitial checkin
cg
parents:
diff changeset
   830
readConstant_NameandType
083530508d9c intitial checkin
cg
parents:
diff changeset
   831
    |name_index signature_index|
083530508d9c intitial checkin
cg
parents:
diff changeset
   832
083530508d9c intitial checkin
cg
parents:
diff changeset
   833
    name_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   834
    signature_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   835
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   836
    Verbose ifTrue:[Transcript show:'methodref; nameindex= ';     showCR:name_index].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   837
    Verbose ifTrue:[Transcript show:'methodref; signatureindex= '; showCR:signature_index].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   838
083530508d9c intitial checkin
cg
parents:
diff changeset
   839
    ^ JavaUnresolvedNameandTypeConstant 
083530508d9c intitial checkin
cg
parents:
diff changeset
   840
                nameIndex:name_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   841
                signatureIndex:signature_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   842
083530508d9c intitial checkin
cg
parents:
diff changeset
   843
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   844
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   845
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   846
083530508d9c intitial checkin
cg
parents:
diff changeset
   847
    "Created: 15.4.1996 / 15:23:43 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   848
    "Modified: 15.4.1996 / 16:17:16 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   849
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   850
083530508d9c intitial checkin
cg
parents:
diff changeset
   851
readConstant_String
083530508d9c intitial checkin
cg
parents:
diff changeset
   852
    |tag string_index|
083530508d9c intitial checkin
cg
parents:
diff changeset
   853
083530508d9c intitial checkin
cg
parents:
diff changeset
   854
    string_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   855
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   856
    Verbose ifTrue:[Transcript show:'string; index= '; showCR:string_index].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   857
083530508d9c intitial checkin
cg
parents:
diff changeset
   858
    ^ JavaUnresolvedStringConstant index:string_index
083530508d9c intitial checkin
cg
parents:
diff changeset
   859
083530508d9c intitial checkin
cg
parents:
diff changeset
   860
    "
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   861
     Verbose := true.
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   862
     JavaClassReader readFile:'/phys/ibm3/java/lib/java/lang/System.class'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   863
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   864
083530508d9c intitial checkin
cg
parents:
diff changeset
   865
    "Created: 15.4.1996 / 15:20:33 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   866
    "Modified: 15.4.1996 / 16:01:37 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   867
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   868
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   869
!JavaClassReader methodsFor:'file reading - fields'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   870
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   871
readConstantValueAttributeFor:aField
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   872
    |attribute_length constantvalue_index constantValue|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   873
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   874
    attribute_length := self nextU4.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   875
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   876
    constantvalue_index := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   877
    constantValue := constants at:constantvalue_index.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   878
59
38114c3e3e77 checkin from browser
cg
parents: 54
diff changeset
   879
    aField constantValue:constantValue.
38114c3e3e77 checkin from browser
cg
parents: 54
diff changeset
   880
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   881
    Verbose ifTrue:[Transcript show:'constantValue: '; showCR:constantValue].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   882
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   883
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   884
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   885
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   886
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   887
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   888
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   889
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   890
    "Created: 15.4.1996 / 15:40:17 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   891
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   892
083530508d9c intitial checkin
cg
parents:
diff changeset
   893
readFieldInfofield
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   894
    |access_flags name_index signature_index attributes_count field|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   895
083530508d9c intitial checkin
cg
parents:
diff changeset
   896
    access_flags := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   897
    name_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   898
    signature_index := self nextU2.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   899
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   900
    field := JavaField new.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   901
    field setAccessFlags:access_flags.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   902
    field setName:(constants at:name_index).
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   903
    field setSignature:(constants at:signature_index).
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   904
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   905
    attributes_count := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
   906
083530508d9c intitial checkin
cg
parents:
diff changeset
   907
    1 to:attributes_count do:[:i |
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   908
        self readAttributeFor:field.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   909
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
   910
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   911
    ^ field
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   912
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   913
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   914
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   915
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   916
083530508d9c intitial checkin
cg
parents:
diff changeset
   917
    "Modified: 15.4.1996 / 15:33:28 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   918
    "Created: 15.4.1996 / 15:38:43 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   919
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   920
083530508d9c intitial checkin
cg
parents:
diff changeset
   921
readFieldInfofields
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   922
    |nFields fields|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   923
083530508d9c intitial checkin
cg
parents:
diff changeset
   924
    "/
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   925
    "/ get fieldInfos
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   926
    "/
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   927
    nFields := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   928
    Verbose ifTrue:[Transcript show:'fieldsCount = '; showCR:nFields].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   929
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   930
    fields := Array new:nFields.
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   931
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   932
    1 to:nFields do:[:i |
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   933
        Verbose ifTrue:[Transcript show:'field: '; showCR:i].
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
   934
        fields at:i put:(self readFieldInfofield)
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   935
    ].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   936
    ^ fields
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   937
083530508d9c intitial checkin
cg
parents:
diff changeset
   938
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   939
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
   940
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   941
083530508d9c intitial checkin
cg
parents:
diff changeset
   942
    "Created: 15.4.1996 / 15:34:41 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
   943
    "Modified: 15.4.1996 / 15:35:28 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   944
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   945
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   946
!JavaClassReader methodsFor:'file reading - interfaces'!
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   947
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   948
readInterfaces
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   949
    |interfacesCount interface interfaces|
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   950
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   951
    "/
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   952
    "/ get interfaces
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   953
    "/
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   954
    interfacesCount := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   955
    Verbose ifTrue:[Transcript show:'interfacesCount = '; showCR:interfacesCount].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   956
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   957
    interfaces := Array new:interfacesCount.
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   958
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   959
    1 to:interfacesCount do:[:i |
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   960
        Verbose ifTrue:[Transcript show:'interface: '; showCR:i].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   961
        interface = self nextU2.
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   962
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   963
        interfaces at:i put:interface.
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   964
    ].
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   965
    ^ interfaces
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   966
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   967
    "
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   968
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   969
    "
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   970
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   971
    "Created: 15.4.1996 / 15:31:59 / cg"
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   972
    "Modified: 15.4.1996 / 15:33:28 / cg"
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   973
! !
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   974
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   975
!JavaClassReader methodsFor:'file reading - methods'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   976
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   977
readCodeAttributeFor:aJavaMethod
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   978
    |attribute_length max_stack max_locals code_length code
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   979
     exception_table_length exception_table unknown1 unknown2|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   980
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   981
    attribute_length := self nextU4.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   982
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   983
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   984
    Verbose ifTrue:[Transcript show:'attribute_length: 0x'; showCR:(attribute_length printStringRadix:16)].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   985
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   986
    majorVsn > 2 ifTrue:[
39
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   987
        unknown1 := self nextU1.
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   988
        max_stack := self nextU1.
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   989
        max_locals := self nextU2.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   990
        unknown2 := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   991
        Verbose ifTrue:[Transcript show:'?1: '; showCR:unknown1].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   992
        Verbose ifTrue:[Transcript show:'?2: '; showCR:unknown2].
39
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   993
    ] ifFalse:[
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   994
        max_stack := self nextU1.
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
   995
        max_locals := self nextU1.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   996
    ].
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   997
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   998
    code_length := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   999
    Verbose ifTrue:[Transcript show:'code_length: '; showCR:(code_length printStringRadix:16)].
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1000
    Verbose ifTrue:[Transcript show:'code at pos: '; showCR:inStream position].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1001
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1002
    code := ByteArray new:code_length.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1003
    inStream nextBytes:code_length into:code startingAt:1.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1004
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1005
    Verbose ifTrue:[Transcript show:'method code:'; showCR:code.].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1006
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1007
    exception_table_length := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1008
    Verbose ifTrue:[Transcript show:'exception_table_length: '; showCR:(exception_table_length printStringRadix:16)].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1009
    exception_table_length ~~ 0 ifTrue:[
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1010
        Verbose ifTrue:[Transcript show:'exceptionTable length:'; showCR:exception_table_length.].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1011
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1012
        exception_table := Array new:exception_table_length.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1013
        1 to:exception_table_length do:[:i |
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1014
            |start_pc end_pc handler_pc catch_type|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1015
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1016
            start_pc := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1017
            end_pc := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1018
            handler_pc := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1019
            catch_type := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1020
            exception_table at:i put:(JavaExceptionTableEntry
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1021
                                            startPC:start_pc
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1022
                                            endPC:end_pc
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1023
                                            handlerPC:handler_pc
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1024
                                            catchType:catch_type).
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1025
        ].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1026
        aJavaMethod setExceptionHandlerTable:exception_table.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1027
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
  1028
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1029
    aJavaMethod 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1030
        setCode:code 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1031
        maxStack:max_stack 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1032
        maxLocals:max_locals 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1033
        u1:unknown1 
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  1034
        u2:unknown2.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1035
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1036
    self readAttributesFor:aJavaMethod.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1037
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1038
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1039
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1040
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1041
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1042
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1043
083530508d9c intitial checkin
cg
parents:
diff changeset
  1044
    "Modified: 15.4.1996 / 15:33:28 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1045
    "Created: 15.4.1996 / 15:40:17 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1046
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1047
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1048
readExceptionsAttributeFor:aJavaMethod
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1049
    |attribute_length exception_table_length exception_table|
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1050
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1051
    attribute_length := self nextU4.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1052
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1053
    exception_table_length := self nextU2.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1054
    exception_table_length ~~ 0 ifTrue:[
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1055
        exception_table := Array new:exception_table_length.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1056
        1 to:exception_table_length do:[:i |
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1057
            |idx ex|
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1058
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1059
            idx := self nextU2.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1060
            ex := constants at:idx.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1061
            exception_table at:i put:ex.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1062
        ].
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1063
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1064
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1065
    Verbose ifTrue:[Transcript showCR:'method has an exceptionTable'].
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1066
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1067
    aJavaMethod setExceptionTable:exception_table.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1068
    ^ true
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1069
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1070
    "Modified: 15.4.1996 / 15:33:28 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1071
    "Created: 15.4.1996 / 15:40:17 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1072
!
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  1073
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1074
readLineNumberTableAttributeFor:aJavaMethod
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1075
    |attribute_length line_number_table_length line_number_table|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1076
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1077
    attribute_length := self nextU4.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1078
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1079
    line_number_table_length := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1080
    line_number_table_length ~~ 0 ifTrue:[
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1081
        line_number_table := Array new:line_number_table_length.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1082
        1 to:line_number_table_length do:[:i |
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1083
            |start_pc line_number|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1084
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1085
            start_pc := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1086
            line_number := self nextU2.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1087
            line_number_table at:i put:(start_pc -> line_number).
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1088
        ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1089
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1090
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1091
    Verbose ifTrue:[Transcript showCR:'method has a lineNumberTable'].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1092
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1093
    aJavaMethod setLineNumberTable:line_number_table.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1094
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1095
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1096
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1097
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1098
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/Boolean.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1099
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1100
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1101
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1102
    "Created: 15.4.1996 / 15:40:17 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1103
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1104
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1105
readLocalVariableTableAttributeFor:aJavaMethod
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1106
    |attribute_length local_variable_table_length local_variable_table|
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1107
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1108
    attribute_length := self nextU4.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1109
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1110
    local_variable_table_length := self nextU2.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1111
    local_variable_table_length ~~ 0 ifTrue:[
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1112
        local_variable_table := Array new:local_variable_table_length.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1113
        1 to:local_variable_table_length do:[:i |
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1114
            |start_pc length name_index sig_index slot name signature|
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1115
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1116
            start_pc := self nextU2.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1117
            length := self nextU2.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1118
            name_index := self nextU2.
86
3090f19a5be1 *** empty log message ***
cg
parents: 83
diff changeset
  1119
            name := constants at:name_index.
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1120
            sig_index := self nextU2.
86
3090f19a5be1 *** empty log message ***
cg
parents: 83
diff changeset
  1121
            signature := constants at:sig_index.
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1122
            slot := self nextU2.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1123
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1124
            local_variable_table at:i put:(JavaLocalVariableTableEntry new 
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1125
                                                startPC:start_pc 
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1126
                                                length:length
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1127
                                                name:name
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1128
                                                signature:signature
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1129
                                                slot:slot)
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1130
        ].
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1131
    ].
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1132
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1133
    Verbose ifTrue:[Transcript showCR:'method has a localvariableTable'].
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1134
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1135
    aJavaMethod setLocalVariableTable:local_variable_table.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1136
    ^ true
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1137
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1138
    "
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1139
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1140
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/Boolean.class'
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1141
    "
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1142
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1143
    "Modified: 15.4.1996 / 15:33:28 / cg"
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1144
    "Created: 15.4.1996 / 15:40:17 / cg"
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1145
!
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  1146
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1147
readMethodFor:aJavaClass
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1148
    |m access_flags name_index name signature_index signature|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1149
083530508d9c intitial checkin
cg
parents:
diff changeset
  1150
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1151
    "/ get a method
083530508d9c intitial checkin
cg
parents:
diff changeset
  1152
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1153
    access_flags := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
  1154
    name_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
  1155
    signature_index := self nextU2.
083530508d9c intitial checkin
cg
parents:
diff changeset
  1156
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1157
    name := constants at:name_index.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1158
    signature := constants at:signature_index.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1159
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1160
    Verbose ifTrue:[Transcript show:'method name:'; showCR:name.
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1161
                    Transcript show:'signature:'; showCR:signature.].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1162
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1163
    m := JavaMethod new.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1164
    m setAccessFlags:access_flags.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1165
    m setSignature:signature.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1166
    m setName:name.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1167
    m setJavaClass:aJavaClass.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1168
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1169
    self readAttributesFor:m.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1170
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1171
    aJavaClass addMethod:m name:name signature:signature.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1172
083530508d9c intitial checkin
cg
parents:
diff changeset
  1173
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1174
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1175
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1176
083530508d9c intitial checkin
cg
parents:
diff changeset
  1177
    "Modified: 15.4.1996 / 15:33:28 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1178
    "Created: 15.4.1996 / 16:48:49 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1179
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1180
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1181
readMethodsFor:aJavaClass
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1182
    |methodsCount method|
083530508d9c intitial checkin
cg
parents:
diff changeset
  1183
083530508d9c intitial checkin
cg
parents:
diff changeset
  1184
083530508d9c intitial checkin
cg
parents:
diff changeset
  1185
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1186
    "/ get methods
083530508d9c intitial checkin
cg
parents:
diff changeset
  1187
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1188
    methodsCount := self nextU2.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1189
    Verbose ifTrue:[Transcript show:'methodsCount = '; showCR:methodsCount].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1190
083530508d9c intitial checkin
cg
parents:
diff changeset
  1191
    1 to:methodsCount do:[:i |
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1192
        Verbose ifTrue:[Transcript show:'method: '; showCR:i].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1193
        method := self readMethodFor:aJavaClass
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1194
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
  1195
083530508d9c intitial checkin
cg
parents:
diff changeset
  1196
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1197
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1198
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1199
083530508d9c intitial checkin
cg
parents:
diff changeset
  1200
    "Modified: 15.4.1996 / 15:33:28 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1201
    "Created: 15.4.1996 / 16:46:30 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1202
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
  1203
083530508d9c intitial checkin
cg
parents:
diff changeset
  1204
!JavaClassReader methodsFor:'low level reading'!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1205
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1206
nextS4
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1207
    ^ inStream nextLongMSB:msb
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1208
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1209
    "Created: 15.4.1996 / 15:04:28 / cg"
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1210
!
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1211
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1212
nextU1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1213
    ^ inStream nextByte
083530508d9c intitial checkin
cg
parents:
diff changeset
  1214
083530508d9c intitial checkin
cg
parents:
diff changeset
  1215
    "Created: 15.4.1996 / 15:15:43 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1216
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1217
083530508d9c intitial checkin
cg
parents:
diff changeset
  1218
nextU2
083530508d9c intitial checkin
cg
parents:
diff changeset
  1219
    ^ inStream nextUnsignedShortMSB:msb
083530508d9c intitial checkin
cg
parents:
diff changeset
  1220
083530508d9c intitial checkin
cg
parents:
diff changeset
  1221
    "Created: 15.4.1996 / 15:12:25 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1222
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1223
083530508d9c intitial checkin
cg
parents:
diff changeset
  1224
nextU4
083530508d9c intitial checkin
cg
parents:
diff changeset
  1225
    ^ inStream nextUnsignedLongMSB:msb
083530508d9c intitial checkin
cg
parents:
diff changeset
  1226
083530508d9c intitial checkin
cg
parents:
diff changeset
  1227
    "Created: 15.4.1996 / 15:04:28 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1228
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
  1229
62
64723aa4c315 checkin from browser
cg
parents: 61
diff changeset
  1230
!JavaClassReader  class methodsFor:'documentation'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1231
083530508d9c intitial checkin
cg
parents:
diff changeset
  1232
version
86
3090f19a5be1 *** empty log message ***
cg
parents: 83
diff changeset
  1233
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.28 1996/06/27 16:31:19 cg Exp $'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1234
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
  1235
JavaClassReader initialize!