JavaClassReader.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 28 Aug 2013 09:16:36 +0100
branchdevelopment
changeset 2674 8b3736c87626
parent 2591 17d9c39d3ab4
child 2602 7af1671fc73f
child 2711 a00302fe5083
child 2729 ac412f6ea6d4
permissions -rw-r--r--
Added InetAddressTests to cover different layouts in different OpenJDK 6. There seems to be at least two different clas layouts for Inet4Address and Inet6Address. This testcase should test whether native methods handle both layouts correctly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
     1
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
     3
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
     5
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
     8
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
     9
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    10
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    12
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    13
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    14
 hereby transferred.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    15
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    18
     see the differences between this version and version stx:libjava
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    19
     as of 1.9.2010
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    20
"
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
    21
"{ Package: 'stx:libjava' }"
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
    22
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    23
Object subclass:#JavaClassReader
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
    24
	instanceVariableNames:'inStream msb constants majorVsn minorVsn constNeeds2Slots
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
    25
		constSlot classBeingLoaded classLoader'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    26
	classVariableNames:'Verbose AnnotationsVerbose Silent AbsolutelySilent
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    27
		LazyClassLoading InvalidClassFormatSignal ClassLoaderQuerySignal
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    28
		JavaArchiveCache LastJavaArchive MaxContextSize
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    29
		MaxContextSizeLimit'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    30
	poolDictionaries:'JavaConstants'
2108
ca8c4e7db2e8 category change
Claus Gittinger <cg@exept.de>
parents: 2089
diff changeset
    31
	category:'Languages-Java-Support'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    32
!
083530508d9c intitial checkin
cg
parents:
diff changeset
    33
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    34
!JavaClassReader class methodsFor:'documentation'!
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    35
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    36
copyright
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    37
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    38
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    39
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    40
 New code and modifications done at SWING Research Group [1]:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    41
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    42
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    43
                            SWING Research Group, Czech Technical University in Prague
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    44
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    45
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    46
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    47
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    48
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    49
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    50
 hereby transferred.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    51
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    52
 [1] Code written at SWING Research Group contains a signature
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    53
     of one of the above copright owners. For exact set of such code,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    54
     see the differences between this version and version stx:libjava
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    55
     as of 1.9.2010
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    56
454
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    57
"
38f590639d65 *** empty log message ***
cg
parents: 443
diff changeset
    58
! !
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    59
135
098936234135 *** empty log message ***
cg
parents: 128
diff changeset
    60
!JavaClassReader class methodsFor:'initialization'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
    61
083530508d9c intitial checkin
cg
parents:
diff changeset
    62
initialize
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    63
    InvalidClassFormatSignal := Signal new mayProceed: true.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    64
    InvalidClassFormatSignal notifierString: 'class load failure'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    65
    InvalidClassFormatSignal nameClass: self message: #invalidClassFormatSignal.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    66
    Verbose := false.
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
    67
    Silent := true.
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
    68
    AbsolutelySilent := false.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    69
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    70
    "/LazyClassLoading := false.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    71
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    72
    LazyClassLoading := true.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    73
    ClassLoaderQuerySignal := QuerySignal new.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    74
    OperatingSystem isMSWINDOWSlike ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    75
        JavaArchiveCache := CacheDictionary new: 32.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    76
    ] ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    77
        JavaArchiveCache := CacheDictionary new: 8.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    78
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    79
    AnnotationsVerbose := false.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    80
    MaxContextSize := 0.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    81
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    82
    "Maximum stack depth supported by the VM.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    83
     if you change it, make sure it is equal (or lower)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    84
     to CONSIZE in jinterpret.c (line 111 or so)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    85
     Otherwise, VM may crash!!!!!!"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    86
    MaxContextSizeLimit := 100.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    87
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    88
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
    89
    "
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    90
     JavaClassReader initialize"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    91
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    92
    "Modified: / 27-01-1998 / 17:54:23 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    93
    "Modified: / 17-12-2010 / 17:37:45 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
    94
    "Modified: / 10-05-2011 / 23:59:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    95
    "Modified: / 14-08-2012 / 02:01:37 / jv"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
    96
    "Modified: / 04-09-2012 / 11:55:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
198
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
    97
! !
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
    98
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
    99
!JavaClassReader class methodsFor:'Signal constants'!
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   100
223
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   101
classLoaderQuerySignal
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   102
    ^ ClassLoaderQuerySignal
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   103
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   104
    "Created: 14.8.1997 / 19:56:03 / cg"
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   105
!
4dd38bd4f6b2 allow trampoulining back into java for sub-loads
cg
parents: 219
diff changeset
   106
198
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   107
invalidClassFormatSignal
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   108
    ^ InvalidClassFormatSignal
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   109
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   110
    "Created: 3.8.1997 / 18:17:21 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   111
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
   112
2460
f89d54b4673c class: JavaClassReader
Claus Gittinger <cg@exept.de>
parents: 2428
diff changeset
   113
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   114
!JavaClassReader class methodsFor:'constants'!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   115
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   116
fileMajorVersions
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   117
    ^#( 
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   118
        45  "Java 1.0.2"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   119
        46  "Java 1.2"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   120
        47  "???"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   121
        48  "???"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   122
        49  "Java 5"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   123
        50  "Java 6"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   124
      ).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   125
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   126
    "
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   127
     JSR 202:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   128
     The Java virtual machine implementation of Sun's JDK release 1.0.2 supports
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   129
     class file format versions 45.0 through 45.3 inclusive. Sun's JDK releases
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   130
     1.1.X can support class file formats of versions in the range 45.0 through
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   131
     45.65535 inclusive. For k > 1 implementations of version 1.k of the Java 2
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   132
     platform can support class file formats of versions in the range 45.0 through
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   133
     44+k.0 inclusive.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   134
"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   135
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   136
    "Created: / 19-10-2010 / 21:40:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   137
    "Modified: / 02-06-2011 / 22:50:17 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   138
    "Modified: / 18-08-2011 / 19:32:37 / jv"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   139
    "Modified (comment): / 16-08-2012 / 15:34:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   140
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   141
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   142
fileMinorVersions
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   143
    ^ #(
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   144
        3 "Java 1.0.2 , Java 1.2"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   145
        0 "Java 6"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   146
    )
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   147
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   148
    "Created: / 19-10-2010 / 21:41:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   149
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   150
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   151
magic_LSB
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   152
    ^ 16rBEBAFECA
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   153
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   154
    "Modified: / 7.5.1998 / 13:14:27 / cg"
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   155
    "Created: / 7.5.1998 / 13:15:05 / cg"
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   156
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   157
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   158
magic_MSB
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   159
    ^ 16rCAFEBABE
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   160
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   161
    "Modified: / 7.5.1998 / 13:14:27 / cg"
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   162
! !
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
   163
135
098936234135 *** empty log message ***
cg
parents: 128
diff changeset
   164
!JavaClassReader class methodsFor:'debugging'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   165
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   166
annotationsVerbose:aBoolean 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   167
    AnnotationsVerbose := aBoolean
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   168
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   169
    "
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   170
     Java flushClasses.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   171
     JavaClassReader verbose:true
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   172
     JavaClassReader verbose:false"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   173
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   174
    "Created: / 25-02-2011 / 12:25:23 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   175
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   176
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   177
verbose:aBoolean
083530508d9c intitial checkin
cg
parents:
diff changeset
   178
    Verbose := aBoolean
083530508d9c intitial checkin
cg
parents:
diff changeset
   179
083530508d9c intitial checkin
cg
parents:
diff changeset
   180
    "
67
a72c949d86dd *** empty log message ***
cg
parents: 62
diff changeset
   181
     Java flushClasses.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   182
     JavaClassReader verbose:true
083530508d9c intitial checkin
cg
parents:
diff changeset
   183
     JavaClassReader verbose:false
083530508d9c intitial checkin
cg
parents:
diff changeset
   184
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
   185
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
   186
135
098936234135 *** empty log message ***
cg
parents: 128
diff changeset
   187
!JavaClassReader class methodsFor:'file reading'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   188
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   189
readClass: aClassName 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   190
    "reads a class, and returns it.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   191
     <clinit> is NOT called, class is NOT installed"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   192
    
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   193
    ^ self readClass: aClassName ignoring: Set new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   194
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   195
    "Created: / 15-04-1996 / 14:58:53 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   196
    "Modified: / 20-10-1998 / 17:24:54 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   197
    "Modified: / 08-09-2011 / 08:10:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   198
    "Modified (comment): / 07-02-2013 / 14:21:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   199
!
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   200
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   201
readClass: aClassName classPath: classPath  
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   202
    "reads a class, and returns it.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   203
     <clinit> is NOT called, class is NOT installed"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   204
    
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   205
    ^ self readClass: aClassName ignoring: Set new classPath: classPath
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   206
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   207
    "Created: / 15-04-1996 / 14:58:53 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   208
    "Modified: / 20-10-1998 / 17:24:54 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   209
    "Modified: / 08-09-2011 / 08:10:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   210
    "Created: / 30-10-2011 / 12:27:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   211
    "Modified (comment): / 07-02-2013 / 14:21:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   212
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   213
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   214
readClass: className ignoring: classesBeingLoadedOrNil 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   215
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   216
    "This method is bit hacky, as it tries to supply 'correct'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   217
     classloader. 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   218
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   219
    If the class is loaded from Java release classPath (containing
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   220
    base java classes shipped with JDK/JRE), then set the classloader
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   221
    to null. Otherwise set class's loader to system class loader
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   222
    (as returned by ClassLoader#getSystemClassLoader())
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   223
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   224
    This is required to run groovy and other SW that uses resources
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   225
    or other classloader dependent stuff. When changing, make sure
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   226
    Groovy is running afterwards!!!!!!
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   227
    "
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   228
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   229
    | class |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   230
    class := self 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   231
                readClass: className ignoring: classesBeingLoadedOrNil 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   232
                classPath: Java release classPath.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   233
    class notNil ifTrue:[ ^ class ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   234
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   235
    class isNil ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   236
        JavaVM booted ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   237
            ^nil
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
   238
        ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   239
        JavaClassReader classLoaderQuerySignal answer: JavaVM systemClassLoader do:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   240
            class := self
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   241
                readClass: className ignoring: classesBeingLoadedOrNil 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   242
                classPath: Java classPath.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   243
        ].
327
990c71581df3 support reading from zip-archives
cg
parents: 318
diff changeset
   244
    ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   245
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   246
    ^class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   247
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   248
    "Created: / 15-04-1996 / 14:58:53 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   249
    "Modified: / 20-10-1998 / 17:24:54 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   250
    "Modified: / 21-10-2011 / 13:39:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   251
    "Modified: / 30-10-2011 / 16:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   252
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   253
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   254
readClass: className ignoring: ignoring classPath: classPath
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   255
    | cls |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   256
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   257
    cls := self new readClass: className ignoring: ignoring classPath: classPath.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   258
    cls notNil ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   259
        Logger 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   260
            log: 'loaded class ' , cls displayString
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   261
            severity: #info
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   262
            facility: 'JVM'.
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   263
    ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   264
    ^cls.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   265
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   266
    "Created: / 07-02-2013 / 14:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   267
    "Modified: / 08-02-2013 / 01:20:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   268
!
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   269
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   270
readFile:aFilename ignoring:classesBeingLoaded 
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   271
    "reads a class from aFilename and returns it.
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
   272
     The JavaClass is NOT installed as global and unresolved
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
   273
     refs are NOT patched."
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   274
    
2476
d24ce8174195 JavaClass can now keep it's classfile bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2431
diff changeset
   275
    | inStream |
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   276
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   277
    [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   278
        JavaVM commonOpenStreamUsing:[ inStream := aFilename asFilename readStream ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   279
    ] on:StreamError do:[:ex | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   280
        Logger 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   281
            log:('cannot read .class file: ' , ex description) severity:#error facility:'JVM'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   282
        self breakPoint: #jv.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   283
        ^ nil
43
2c4ca2eb8d07 checkin from browser
cg
parents: 40
diff changeset
   284
    ].
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
   285
2476
d24ce8174195 JavaClass can now keep it's classfile bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2431
diff changeset
   286
    ^[
d24ce8174195 JavaClass can now keep it's classfile bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2431
diff changeset
   287
        self readStream:inStream ignoring:classesBeingLoaded.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   288
    ] ensure:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   289
        inStream close.
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
   290
    ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   291
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   292
    "Created: / 15-04-1996 / 14:58:53 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   293
    "Modified: / 09-05-1998 / 01:44:24 / cg"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   294
    "Modified: / 14-08-2012 / 02:17:26 / jv"
2476
d24ce8174195 JavaClass can now keep it's classfile bytes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2431
diff changeset
   295
    "Modified: / 29-03-2013 / 23:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   296
!
083530508d9c intitial checkin
cg
parents:
diff changeset
   297
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   298
readStream: aStream 
198
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   299
    "reads a class from aStream and returns it.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   300
     The JavaClass is not installed as global"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   301
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   302
    ^self readStream: aStream ignoring: Set new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   303
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   304
    "Created: / 24-10-2011 / 00:12:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
198
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   305
!
5543d1079a4a *** empty log message ***
cg
parents: 193
diff changeset
   306
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   307
readStream: stream ignoring: classesBeingLoaded 
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   308
    "reads a class from aStream and returns it.
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   309
     The JavaClass is not installed as global"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   310
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   311
    ^self readStream: stream loader: self classLoaderQuerySignal query ignoring: classesBeingLoaded
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   312
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   313
    "Modified: / 30-03-1998 / 18:14:40 / cg"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   314
    "Modified: / 09-05-2011 / 23:15:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   315
    "Modified: / 02-05-2013 / 09:51:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   316
!
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   317
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   318
readStream: stream loader: classloader
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   319
    "reads a class from aStream and returns it.
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   320
     The JavaClass is not installed as global"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   321
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   322
    ^self readStream: stream loader: classloader ignoring: Set new.
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   323
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   324
    "Created: / 02-05-2013 / 09:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   325
!
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   326
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   327
readStream: stream loader: classloader ignoring: classesBeingLoaded  
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   328
    "reads a class from aStream and returns it.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   329
     The JavaClass is not installed as global"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   330
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   331
    | javaClass |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   332
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   333
    javaClass := JavaClassReader new readStream: stream loader: classloader ignoring: classesBeingLoaded.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   334
    Logger 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   335
        log: 'loaded class ' , javaClass displayString
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   336
        severity: #info
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   337
        facility: 'JVM'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   338
    ^ javaClass.
327
990c71581df3 support reading from zip-archives
cg
parents: 318
diff changeset
   339
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   340
    "Created: / 02-05-2013 / 09:50:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   341
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   342
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   343
!JavaClassReader class methodsFor:'obsolete'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   344
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   345
resolveClass: aJavaClass 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   346
    "Resolve a particular classes' constants.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   347
     Perform all class initialization functions
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   348
     (of those which are not yet initialized)."
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   349
    
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   350
    | loader  classToLoad |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   351
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   352
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   353
     "new resolving does not need this - shouldn't be called at all"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   354
    LazyClassLoading ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   355
        loader := (aJavaClass classLoader).
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   356
        [
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   357
            classToLoad := nil.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   358
            aJavaClass constantPool do: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   359
                :item | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   360
                | itemClass |
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   361
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   362
                itemClass := item class.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   363
                itemClass == JavaUnresolvedClassConstant ifTrue: [
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   364
                    classToLoad := item className.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   365
                    
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   366
"/                ] ifFalse:[
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   367
"/                    itemClass == JavaUnresolvedMethodrefConstant ifTrue:[
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   368
"/self halt.
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   369
"/                    ] ifFalse:[
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   370
"/                        itemClass == JavaUnresolvedInterfaceMethodrefConstant ifTrue:[
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   371
"/self halt.
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   372
"/                        ]
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   373
"/                    ]
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   374
                ].
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   375
            ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   376
            classToLoad notNil ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   377
                loader isNil ifTrue: [ JavaVM classForName: classToLoad. ] ifFalse: [
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   378
                    "/
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   379
                    "/ the aquired loader is a javaClassLoader
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   380
                    "/ which expects an URL as arg.
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   381
                    "/
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   382
                    "/ classURL := Java as_URL:('file:' , nextUnresolved asString , '.class').
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   383
                    "/ loader loadClass:classURL
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   384
                    loader perform: #'loadClass(Ljava/lang/String;)Ljava/lang/Class;'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   385
                        with: (Java as_String: (classToLoad asString)).
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   386
                ]
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   387
            ].
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   388
            classToLoad notNil.
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   389
        ] whileTrue.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   390
        aJavaClass isInitialized ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   391
            Silent ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   392
                'performing class initialization of ' print.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   393
                aJavaClass fullName printCR.
399
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   394
            ].
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   395
            aJavaClass classInit
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   396
        ].
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   397
    ]
94d37f2032a1 classloader fixes.
cg
parents: 386
diff changeset
   398
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   399
    "Created: / 20-10-1998 / 17:53:22 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   400
    "Modified: / 16-11-2011 / 14:39:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   401
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   402
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   403
!JavaClassReader class methodsFor:'others'!
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   404
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   405
version_HG
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   406
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   407
    ^ '$Changeset: <not expanded> $'
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   408
! !
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   409
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   410
!JavaClassReader methodsFor:'accessing'!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   411
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   412
constants   
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   413
^ constants.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   414
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   415
    "Created: / 10-05-2011 / 13:48:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   416
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   417
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   418
constants: aJavaConstantPool
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   419
    constants := aJavaConstantPool.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   420
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   421
    "Created: / 10-05-2011 / 13:48:46 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   422
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   423
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   424
stream
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   425
^ inStream.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   426
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   427
    "Created: / 09-05-2011 / 23:22:38 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   428
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   429
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   430
stream:aReadStream
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   431
    inStream := aReadStream.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   432
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   433
    "Created: / 09-05-2011 / 23:23:11 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   434
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   435
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   436
!JavaClassReader methodsFor:'file reading'!
083530508d9c intitial checkin
cg
parents:
diff changeset
   437
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   438
readClass: clsName from: path ignoring: classesBeingLoaded
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   439
    "load class named clsName from directory or .jar archive path.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   440
     <clinit> is NOT called, class is NOT installed as global"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   441
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   442
    | nm  p  zar  entry  zipFile  read rslt |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   443
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   444
    p := path asString.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   445
    p asFilename isDirectory ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   446
        | f |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   447
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   448
        (p endsWith: Filename separator) ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   449
            p := p , (Filename separator asString)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   450
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   451
        nm := p , clsName , '.class'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   452
        (f := nm asFilename) exists ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   453
            (Java isExcludedFromClassPath: nm) ifFalse: [             
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   454
                "means we are successfully going to read something :)"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   455
                f readingFileDo:[:s|rslt := self readStream: s ignoring: classesBeingLoaded].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   456
                rslt notNil ifTrue: [ ^ rslt. ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   457
            ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   458
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   459
    ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   460
        ((zipFile := p asFilename withSuffix: 'jar') exists 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   461
            or: [ (zipFile := p asFilename withSuffix: 'zip') exists ]) 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   462
                ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   463
                    "/ Do not use at:ifAbsentPut: here, JavaArchiveCache is a CacheDictionary!!!!!!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   464
                    zar := JavaArchiveCache at: zipFile ifAbsent: nil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   465
                    zar isNil ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   466
                        JavaVM commonOpenStreamUsing:[ zar := ZipArchive oldFileNamed: zipFile ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   467
                        JavaArchiveCache at: zipFile put: zar
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   468
                    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   469
                    read := [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   470
                            nm := clsName , '.class'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   471
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   472
                            (zar isValidPath: nm) ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   473
                                (Java isExcludedFromClassPath: nm) ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   474
                                    JavaVM commonOpenStreamUsing:[ zar := zar reopenForReading ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   475
                                    entry := zar extract: nm.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   476
                                    rslt := self readStream: (entry readStream) ignoring: classesBeingLoaded.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   477
                                    rslt notNil ifTrue: [ ^ rslt ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   478
                                ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   479
                            ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   480
                            zar closeFile.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   481
                        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   482
                    JavaClassReader invalidClassFormatSignal 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   483
                        handle: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   484
                            "Kludge, sometimes zar gets corrupted"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   485
                            zar := JavaArchiveCache at: zipFile put: (JavaVM commonOpenStreamUsing: [ZipArchive oldFileNamed: zipFile]).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   486
                            read value
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   487
                        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   488
                        do: [ read value ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   489
                ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   490
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   491
    ^nil
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   492
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   493
    "Created: / 03-12-2012 / 22:47:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   494
    "Modified: / 11-02-2013 / 16:25:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   495
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   496
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   497
readClass: className ignoring: classesBeingLoadedOrNil classPath: classPath 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   498
    "searches classspath for a class, loads it and returns.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   499
     <clinit> is not called, class is not installed as global"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   500
    
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   501
    | rslt  clsName  classesBeingLoaded |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   502
    clsName := className asSlashedJavaClassName.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   503
    classesBeingLoaded := classesBeingLoadedOrNil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   504
    classesBeingLoaded isNil ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   505
        classesBeingLoaded := Set new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   506
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   507
    classesBeingLoaded add: clsName.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   508
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   509
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   510
    classPath do: [:path | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   511
        rslt := self readClass: clsName from: path ignoring: classesBeingLoaded.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   512
        rslt notNil ifTrue:[ ^rslt ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   513
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   514
    ^nil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   515
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   516
    "Created: / 15-04-1996 / 14:58:53 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   517
    "Modified: / 20-10-1998 / 17:24:54 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   518
    "Created: / 23-10-2011 / 21:48:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   519
    "Modified: / 03-11-2011 / 18:14:56 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   520
    "Modified: / 14-08-2012 / 02:17:59 / jv"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   521
    "Modified: / 07-02-2013 / 14:19:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   522
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   523
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   524
readClassFileIgnoring: classesbeingLoaded 
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   525
    "reads a class from inStream and returns it.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   526
     The JavaClass is not installed as global and its constants
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   527
     (especially strings) may not be fully resolved."
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   528
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   529
    | magic  access_flags  this_class_index  super_class  super_class_index  this_class_ref  existingSuperClass  fields  interfaces  staticFields  nStatic  superClassName  thisClassName  existing_class  thisMetaClass |
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   530
083530508d9c intitial checkin
cg
parents:
diff changeset
   531
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   532
    "/ read magic, determine byte order
083530508d9c intitial checkin
cg
parents:
diff changeset
   533
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   534
    msb := true.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   535
    magic := inStream nextUnsignedLongMSB: true.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   536
    magic = (self class magic_MSB) ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   537
        magic = (self class magic_LSB) ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   538
            InvalidClassFormatSignal raiseErrorString: 'not a java class file'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   539
            ^ nil
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   540
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   541
        msb := false.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   542
        Verbose ifTrue: [ Transcript showCR: 'file is lsb' ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   543
    ] ifTrue: [ Verbose ifTrue: [ Transcript showCR: 'file is msb' ]. ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   544
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   545
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   546
    "/ get version
083530508d9c intitial checkin
cg
parents:
diff changeset
   547
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   548
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   549
    minorVsn := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   550
    majorVsn := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   551
    ((self class fileMajorVersions includes: majorVsn) not 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   552
        or: [ (self class fileMinorVersions includes: minorVsn) not ]) 
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   553
            ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   554
                | path |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   555
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   556
                path := inStream isFileStream ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   557
                    path := inStream pathName
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   558
                ] ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   559
                    path := '<memory>'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   560
                ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   561
                self info:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   562
                    ('class reader: file ', path , ' has version ' ,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   563
                         majorVsn printString ,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   564
                            '.' , minorVsn printString)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   565
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   566
            ].    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   567
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   568
    "/ get constant pool
083530508d9c intitial checkin
cg
parents:
diff changeset
   569
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   570
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   571
    self readConstantPool.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   572
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   573
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   574
    "/ access flags
083530508d9c intitial checkin
cg
parents:
diff changeset
   575
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   576
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   577
    access_flags := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   578
    this_class_index := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   579
    super_class_index := inStream nextUnsignedShortMSB: msb.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   580
    super_class_index == 0 ifTrue: [ super_class := nil ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   581
        super_class := constants at: super_class_index.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   582
        superClassName := super_class fullName.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   583
        
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   584
        "/ special for ST-classes
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   585
        
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   586
        (superClassName startsWith: 'smalltalk.') ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   587
            "/ a Smalltalk class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   588
            superClassName := superClassName copyFrom: 11.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   589
            existingSuperClass := Smalltalk at: superClassName asSymbol.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   590
            existingSuperClass notNil ifTrue: [ super_class := existingSuperClass ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   591
                "/ self halt - must load superclass ...
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   592
            ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   593
        ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   594
            "/ a JAVA class
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   595
            super_class := JavaVM classNamed: superClassName definedBy: classLoader.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   596
            super_class isNil ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   597
                super_class := self 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   598
                                loadSuperclassIdentifiedBy: (constants at: super_class_index)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   599
                                ignoring: classesbeingLoaded
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   600
            ].
2460
f89d54b4673c class: JavaClassReader
Claus Gittinger <cg@exept.de>
parents: 2428
diff changeset
   601
            super_class isNil ifTrue: [
f89d54b4673c class: JavaClassReader
Claus Gittinger <cg@exept.de>
parents: 2428
diff changeset
   602
                self breakPoint:#jv info: 'Cannot find super class?!!' 
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   603
            ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   604
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   605
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   606
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   607
    "/ If superclass is finalized, mark class so as well.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   608
    (super_class notNil and:[super_class hasFinalize]) ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   609
        access_flags := access_flags bitOr: ACX_HASFINALIZE
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   610
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   611
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   612
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   613
    "/ get interfaces
083530508d9c intitial checkin
cg
parents:
diff changeset
   614
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   615
    
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   616
    interfaces := self readInterfaces.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   617
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   618
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   619
    "/ get fields
083530508d9c intitial checkin
cg
parents:
diff changeset
   620
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   621
    
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   622
    fields := self readFieldInfofields.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   623
    
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   624
    "/
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   625
    "/ create the fields as instVars
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   626
    "/ static fields are created as class-InstVars
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   627
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   628
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   629
    staticFields := fields select: [:f | f isStatic ].
40
7f332a95e015 checkin from browser
cg
parents: 39
diff changeset
   630
    nStatic := staticFields size.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   631
    this_class_ref := constants at: this_class_index.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   632
    thisClassName := this_class_ref fullName asSlashedJavaClassName.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   633
    
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
   634
    "/ care for smalltalk classes ...
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   635
    
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   636
    (thisClassName startsWith: 'smalltalk.') ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   637
        thisClassName := thisClassName copyFrom: 11.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   638
        existing_class := Smalltalk at: thisClassName asSymbol.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   639
        existing_class notNil ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   640
            self halt: ('overloading existing class: ' , thisClassName).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   641
            thisClassName := (thisClassName , '_new') asSymbol.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   642
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   643
        thisMetaClass := Metaclass new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   644
        thisMetaClass setSuperclass: super_class class.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   645
        thisMetaClass instSize: (super_class class instSize + nStatic).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   646
        classBeingLoaded := thisMetaClass new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   647
        classBeingLoaded setSuperclass: super_class.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   648
        classBeingLoaded setName: thisClassName asSymbol.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   649
    ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   650
        "/ a java class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   651
        Class withoutUpdatingChangesDo:[
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   652
            classBeingLoaded := JavaClass fullName: thisClassName numStatic: nStatic.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   653
            classBeingLoaded classLoader: self class classLoaderQuerySignal query.        
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   654
            fields := fields select: [:f | f isStatic not ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   655
            JavaClass setInstanceVariableStringFromFields: staticFields
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   656
                in: classBeingLoaded class.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   657
            classBeingLoaded setStaticFields: staticFields.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   658
            classBeingLoaded setAccessFlags: access_flags.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   659
            classBeingLoaded setSuperclass: super_class.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   660
            classBeingLoaded setConstantPool: constants.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   661
            classBeingLoaded setFields: fields.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   662
            classBeingLoaded setInterfaces: interfaces.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   663
        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   664
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   665
    
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   666
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
   667
    "/ get methods
083530508d9c intitial checkin
cg
parents:
diff changeset
   668
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   669
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   670
    self readMethodsFor: classBeingLoaded.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   671
    self readAttributesFor: classBeingLoaded.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   672
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   673
    "/
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   674
    "/ get extensions
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   675
    "/
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   676
    self readExtensionsFor: classBeingLoaded.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   677
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   678
    classBeingLoaded fields do: [:each | self updateOwnerInField: each ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   679
    classBeingLoaded staticFields do: [:each | self updateOwnerInField: each ].    
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   680
    classBeingLoaded classLoader: classLoader.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   681
    classesbeingLoaded remove: classBeingLoaded name ifAbsent:[].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   682
    ^ classBeingLoaded.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   683
1
083530508d9c intitial checkin
cg
parents:
diff changeset
   684
    "
355
9452f8876652 *** empty log message ***
cg
parents: 353
diff changeset
   685
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
9452f8876652 *** empty log message ***
cg
parents: 353
diff changeset
   686
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
9452f8876652 *** empty log message ***
cg
parents: 353
diff changeset
   687
     JavaClassReader loadFile:'foo.cls'
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   688
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   689
     JavaClassReader verbose:true.
355
9452f8876652 *** empty log message ***
cg
parents: 353
diff changeset
   690
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/java/lang/ArithmeticException.class'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   691
     JavaClassReader loadFile:'/phys/ibm3/java/lib/java/lang/ArithmeticException.class'"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   692
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   693
    "Created: / 15-04-1996 / 15:02:47 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   694
    "Modified: / 12-11-1998 / 21:14:45 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   695
    "Modified: / 15-10-2010 / 17:37:38 / Jan Kurs <kurs.jan@post.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   696
    "Modified: / 28-01-2011 / 15:09:48 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   697
    "Modified: / 18-05-2011 / 15:30:29 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   698
    "Modified: / 02-05-2013 / 10:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   699
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   700
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   701
readStream:aStream ignoring:classesBeingLoaded
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   702
    <resource: #obsolete>
7
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   703
    "reads a class from aStream and returns it.
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   704
     The JavaClass is not installed as global"
de8ce26e1f2c checkin from browser
cg
parents: 5
diff changeset
   705
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   706
    ^self readStream:aStream loader: self class classLoaderQuerySignal query ignoring:classesBeingLoaded    
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   707
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   708
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   709
    "
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   710
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   711
    "
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   712
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   713
    "Created: / 15-04-1996 / 15:00:55 / cg"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   714
    "Modified: / 02-05-2013 / 09:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   715
!
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   716
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   717
readStream:stream loader: classloader ignoring:classesBeingLoaded
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   718
    "reads a class from aStream and returns it.
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   719
     The JavaClass is not installed as global"
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   720
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   721
    inStream := stream.
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   722
    classLoader := classloader.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   723
    inStream binary.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
   724
54
f37bcefb7091 avoid loading classes twice
cg
parents: 52
diff changeset
   725
    ^ self readClassFileIgnoring:classesBeingLoaded
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   726
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   727
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   728
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   729
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   730
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2566
diff changeset
   731
    "Created: / 02-05-2013 / 09:52:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   732
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   733
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   734
!JavaClassReader methodsFor:'file reading - attributes'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   735
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   736
readAnnotationDefaultAttributeFor:something 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   737
    "/        ('JAVA [info]: unhandled attribute: AnnotationDefault') infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   738
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   739
    |len startPos endPos annotationDefault|
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   740
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   741
    self assert:something isJavaMethod
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   742
    message:'AnnotationDefault may only occure for methods!!'.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   743
    len := inStream nextUnsignedLongMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   744
    startPos := inStream position.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   745
    annotationDefault := (something ensureHasAnnotations)
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   746
                default:(JavaAnnotationDefault new 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   747
                            value:(self readAnnotationValueFor:something));
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   748
                default.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   749
    endPos := inStream position.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   750
    inStream position:startPos.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   751
    annotationDefault bytes:(inStream next:len).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   752
    self assert:inStream position = endPos
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   753
    message:'self readAnnotationValueFor: something is reading what it shouldn'.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   754
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   755
    "Modified: / 28-02-2011 / 17:08:28 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   756
    "Modified: / 03-03-2011 / 23:06:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   757
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   758
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   759
readAnnotationFor:something 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   760
    | typeIndex  type  result  attrsCount |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   761
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   762
    typeIndex := inStream nextUnsignedShortMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   763
    type := constants at:typeIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   764
    attrsCount := inStream nextUnsignedShortMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   765
    result := JavaAnnotation for:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   766
    result name:type.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   767
    attrsCount timesRepeat:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   768
            [ | nameIndex  name  valueIndex  attr |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   769
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   770
            nameIndex := inStream nextUnsignedShortMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   771
            name := constants at:nameIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   772
            attr := self readAnnotationValueFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   773
            attr name:name.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   774
            result values at:attr name put:attr.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   775
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   776
                ifTrue:[ ('JAVA [INFO]: Reading annotation attribute: ' , name) infoPrintCR. ]. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   777
    ^ result.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   778
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   779
    "Created: / 17-12-2010 / 16:21:28 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   780
    "Modified: / 25-02-2011 / 12:25:36 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   781
    "Modified: / 27-07-2011 / 09:37:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
   782
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
   783
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   784
readAnnotationValueFor:something 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   785
    | tag  result |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   786
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   787
    tag := (inStream nextByte) asCharacter.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   788
    tag = $e 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   789
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   790
            [ result := JavaAnnotationEnumValue for:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   791
            result nameIndex:(inStream nextUnsignedShortMSB:msb).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   792
            result valueIndex:(inStream nextUnsignedShortMSB:msb).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   793
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   794
                ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   795
                    [ ('JAVA [INFO]: Reading annotation enum value: ' , result name printString, ' -> ' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   796
                        , result value printString) infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   797
            ^ result ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   798
    tag = $c 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   799
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   800
            [ result := JavaAnnotationClassValue for:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   801
            result classIndex:(inStream nextUnsignedShortMSB:msb).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   802
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   803
                ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   804
                    [ ('JAVA [INFO]: Reading annotation class value: ' , result name printString, ' -> ' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   805
                        , result value printString) infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   806
            ^ result ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   807
    tag = $@ 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   808
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   809
            [ result := JavaAnnotationNestedAnnotationValue for:something.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   810
            result nestedAnnotation:(self readAnnotationFor: something).
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   811
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   812
                ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   813
                    [ ('JAVA [INFO]: Reading annotation nested annotation value: ' , result name printString
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   814
                        , ' -> ' , result value printString) 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   815
                        infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   816
            ^ result ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   817
    tag = $[ 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   818
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   819
            [ result := JavaAnnotationArrayValue for:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   820
            result count:(inStream nextUnsignedShortMSB:msb).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   821
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   822
                ifTrue:[ ('JAVA [INFO]: Reading annotation array value') infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   823
            1 to:result count
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   824
                do:[:index | result values at:index put:(self readAnnotationValueFor:something) ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   825
            AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   826
                ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   827
                    [ ('JAVA [INFO]: Finished reading annotation array value: ' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   828
                        , result value printString) infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   829
            ^ result ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   830
    result := JavaAnnotationPrimitiveValue for:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   831
    result valueIndex:(inStream nextUnsignedShortMSB:msb).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   832
     AnnotationsVerbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   833
                ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   834
                    [ ('JAVA [INFO]: Finished reading annotation primitive value: ' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   835
                             , result name printString , ' -> ' , result value printString) infoPrintCR ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   836
    ^ result.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   837
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   838
    "Created: / 17-12-2010 / 16:44:14 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   839
    "Modified: / 28-02-2011 / 16:12:09 / Marcel Hlopko <hlopik@gmail.com>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
   840
    "Modified: / 12-02-2013 / 19:35:15 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   841
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   842
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   843
readAttribute:attributeName for:something 
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
   844
    "/ implemented JAVA attributes
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   845
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   846
    (attributeName = 'ConstantValue') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   847
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   848
            [ self readConstantValueAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   849
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   850
    (attributeName = 'Code') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   851
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   852
            [ self readCodeAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   853
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   854
    (attributeName = 'Exceptions') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   855
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   856
            [ self readExceptionsAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   857
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   858
    (attributeName = 'InnerClasses') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   859
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   860
            [ self readInnerClassesAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   861
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   862
    (attributeName = 'EnclosingMethod') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   863
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   864
            [ self readEnclosingMethodAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   865
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   866
    (attributeName = 'LineNumberTable') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   867
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   868
            [ self readLineNumberTableAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   869
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   870
    (attributeName = 'LocalVariableTable') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   871
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   872
            [ self readLocalVariableTableAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   873
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   874
    (attributeName = 'LocalVariableTypeTable') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   875
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   876
            [ self readLocalVariableTypeTableAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   877
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   878
    (attributeName = 'SourceFile') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   879
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   880
            [ self readSourceFileAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   881
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   882
    (attributeName = 'SourceDebugExtension') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   883
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   884
            [ self readSourceDebugExtensionAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   885
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   886
    (attributeName = 'Synthetic') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   887
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   888
            [ self readSyntheticAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   889
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   890
    (attributeName = 'Signature') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   891
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   892
            [ self readSignatureAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   893
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   894
    (attributeName = 'Deprecated') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   895
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   896
            [ self readDeprecatedAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   897
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   898
    (attributeName = 'RuntimeVisibleAnnotations') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   899
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   900
            [ self readRuntimeAnnotationsAttributeFor:something visible:true.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   901
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   902
    (attributeName = 'RuntimeInvisibleAnnotations') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   903
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   904
            [  self readRuntimeAnnotationsAttributeFor:something visible:false.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   905
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   906
    (attributeName = 'RuntimeVisibleParameterAnnotations') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   907
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   908
            [ self readRuntimeParameterAnnotationsAttributeFor:something visible:true.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   909
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   910
    (attributeName = 'RuntimeInvisibleParameterAnnotations') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   911
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   912
            [ self readRuntimeParameterAnnotationsAttributeFor:something visible:false.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   913
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   914
    (attributeName = 'AnnotationDefault') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   915
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   916
            [ self readAnnotationDefaultAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   917
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   918
    
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
   919
    "/ ignored JAVA attributes
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   920
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   921
    (attributeName = 'FastJavac1.0') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   922
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   923
            [ "/        ('JAVA [info]: unhandled attribute: ' , attributeName) infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   924
            self skipAttribute:attributeName.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   925
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   926
    (attributeName = 'AbsoluteSourcePath') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   927
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   928
            [ ('JAVA [info]: unhandled attribute: ' , attributeName) infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   929
            self skipAttribute:attributeName.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   930
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   931
    (attributeName startsWith:((Character value:13) asString , 'WARNING:')) 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   932
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   933
            [ "/        ('JAVA [info]: unhandled attribute: ' , attributeName) infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   934
            self skipAttribute:attributeName.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   935
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   936
    (attributeName = 'StackMapTable') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   937
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   938
            [ "/        ('JAVA [info]: unhandled attribute: ' , attributeName) infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   939
            self readStackMapTableAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   940
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   941
    
2089
f90b44f9c9e0 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 749
diff changeset
   942
    "/ implemented ST attributes
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   943
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   944
    (attributeName = 'STLiterals') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   945
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   946
            [ self readSTLiteralsAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   947
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   948
    (attributeName = 'ClassRevision') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   949
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   950
            [ self readSTClassRevisionAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   951
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   952
    (attributeName = 'ClassPackage') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   953
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   954
            [ self readSTClassPackageAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   955
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   956
    (attributeName = 'ClassCategory') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   957
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   958
            [ self readSTClassCategoryAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   959
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   960
    (attributeName = 'ClassVarNames') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   961
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   962
            [ self readSTClassVarNamesAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   963
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   964
    (attributeName = 'ClassInstVarNames') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   965
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   966
            [ self readSTClassInstVarNamesAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   967
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   968
    (attributeName = 'InstVarNames') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   969
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   970
            [ self readSTInstVarNamesAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   971
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   972
    (attributeName = 'STCode') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   973
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   974
            [ self readSTCodeAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   975
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   976
    (attributeName = 'MethodCategory') 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   977
        ifTrue:
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   978
            [ self readSTMethodCategoryAttributeFor:something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   979
            ^ self. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   980
    
355
9452f8876652 *** empty log message ***
cg
parents: 353
diff changeset
   981
    "/ unknown attributes
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   982
    
335
5309d0a795b1 checkin from browser
cg
parents: 333
diff changeset
   983
    ('JAVA [warning]: unrecognized attribute: ' , attributeName) infoPrintCR.
333
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
   984
    self skipAttribute:attributeName.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   985
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   986
    "Modified: / 03-12-1998 / 13:13:42 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   987
    "Modified: / 25-02-2011 / 18:09:21 / Marcel Hlopko <hlopik@gmail.com>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   988
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   989
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   990
readAttributeFor:something
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   991
    |attribute_name_index attribute_name attribute_length attribute_info|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
   992
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
   993
    Verbose ifTrue:[Transcript show:'attrib at pos: '; showCR:inStream position].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
   994
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
   995
    attribute_name_index := inStream nextUnsignedShortMSB:msb.
2142
4836ff0780cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2115
diff changeset
   996
    attribute_name_index == 0 ifTrue:[
4836ff0780cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2115
diff changeset
   997
        self halt.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
   998
        "/self skipAttribute:'unnamed'.
2142
4836ff0780cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2115
diff changeset
   999
        ^ self.
4836ff0780cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2115
diff changeset
  1000
    ].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1001
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1002
    "/
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1003
    "/ UNDOC feature ?
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1004
    "/
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1005
    attribute_name_index > constants size ifTrue:[
333
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1006
        attribute_name_index == 16rb700 ifTrue:[
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1007
            self halt.
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1008
        ]
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1009
    ].
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1010
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1011
    attribute_name := constants at:attribute_name_index.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1012
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1013
    Verbose ifTrue:[Transcript show:'attrib name: '; showCR:attribute_name].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  1014
333
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1015
    self readAttribute:attribute_name for:something.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1016
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1017
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1018
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1019
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1020
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1021
    "Created: / 15-04-1996 / 15:40:17 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1022
    "Modified: / 09-04-1998 / 18:13:34 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1023
    "Modified: / 19-10-2010 / 21:43:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1024
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1025
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1026
readAttributesFor:something
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1027
    |attributes_count|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1028
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1029
    attributes_count := inStream nextUnsignedShortMSB:msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1030
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1031
    1 to:attributes_count do:[:i |
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  1032
	self readAttributeFor:something.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1033
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1034
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1035
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1036
    "Created: 15.4.1996 / 15:40:17 / cg"
333
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1037
!
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1038
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1039
readDeprecatedAttributeFor:aJavaMethodWithHandler
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1040
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1041
    self skipAttribute:'Deprecated'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1042
    ^self
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1043
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1044
    "Created: / 18-10-2010 / 22:26:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1045
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1046
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1047
readEnclosingMethodAttributeFor:something
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1048
"/        ('JAVA [info]: unhandled attribute: EnclosingMethod') infoPrintCR.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1049
        self skipAttribute:'EnclosingMethod'.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1050
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1051
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1052
readInnerClassesAttributeFor:something
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1053
"/        ('JAVA [info]: unhandled attribute: InnerClasses') infoPrintCR.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1054
        self skipAttribute:'InnerClasses'.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1055
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1056
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1057
readLocalVariableTypeTableAttributeFor:something
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1058
"/        ('JAVA [info]: unhandled attribute: LocalVariableTypeTable') infoPrintCR.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1059
        self skipAttribute:'LocalVariableTypeTable'.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1060
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1061
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1062
readRuntimeAnnotationsAttributeFor: something visible: visible 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1063
    | length  annotationsCount  annotations  rawAnnotations  startPos  endPos |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1064
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1065
    self assert: inStream isPositionable
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1066
        message: '.class file stream must be positionable'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1067
    length := inStream nextUnsignedLongMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1068
    startPos := inStream position.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1069
    annotationsCount := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1070
    annotationsCount = 0 ifTrue: [ ^ nil ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1071
    annotations := visible ifTrue: [something ensureHasAnnotations ensureRuntimeVisible] ifFalse: [something ensureHasAnnotations ensureRuntimeInvisible].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1072
    annotationsCount timesRepeat: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1073
            [ | currentAnnotation |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1074
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1075
            currentAnnotation := self readAnnotationFor: something.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1076
            annotations at: currentAnnotation name put: currentAnnotation. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1077
     "Cut raw annotations as required by getRawAnnotations()"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1078
    endPos := inStream position.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1079
    inStream position: startPos.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1080
    rawAnnotations := inStream next: length.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1081
    inStream position ~= endPos 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1082
        ifTrue: [ self halt: 'annotations are probably reading what they shouldnt' ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1083
    annotations rawAnnotations: rawAnnotations.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1084
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1085
    "Modified: / 07-01-2011 / 22:00:07 / Jan Kurs <kurs.jan@post.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1086
    "Modified: / 25-02-2011 / 18:45:58 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1087
    "Modified: / 03-03-2011 / 23:01:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1088
    "Modified: / 16-03-2011 / 16:57:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1089
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1090
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1091
readRuntimeParameterAnnotationsAttributeFor: javaMethod visible: visible 
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1092
    | length  paramsCount  annotationsCount  rawAnnotations  startPos  endPos |
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1093
    self assert: inStream isPositionable
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1094
        message: '.class file stream must be positionable'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1095
    length := inStream nextUnsignedLongMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1096
    startPos := inStream position.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1097
    paramsCount := inStream nextByte.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1098
    paramsCount = 0 ifTrue: [ ^ nil ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1099
    1 to: paramsCount do: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1100
        :paramIndex | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1101
        annotationsCount := inStream nextUnsignedShortMSB: msb.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1102
        annotationsCount > 0 ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1103
            | annotations |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1104
            annotations := visible ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1105
                    javaMethod ensureHasAnnotations 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1106
                        ensureVisibleParameterAnnotationsAt: paramIndex
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1107
                ] ifFalse: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1108
                    javaMethod ensureHasAnnotations 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1109
                        ensureInvisibleParameterAnnotationsAt: paramIndex
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1110
                ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1111
            annotationsCount timesRepeat: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1112
                | annotation |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1113
                annotation := self readAnnotationFor: javaMethod.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1114
                annotations at: (annotation name) put: annotation.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1115
            ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1116
        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1117
    ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1118
    endPos := inStream position.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1119
    inStream position: startPos.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1120
    rawAnnotations := inStream next: length.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1121
    inStream position ~= endPos ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1122
        self halt: 'annotations are probably reading what they shouldnt'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1123
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1124
    self breakPoint:#mh.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1125
    javaMethod annotations rawParamAnnotations: rawAnnotations.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1126
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1127
    "Modified: / 28-02-2011 / 17:05:47 / Marcel Hlopko <hlopik@gmail.com>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1128
    "Modified: / 01-12-2012 / 22:54:35 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1129
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1130
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1131
readSignatureAttributeFor:something
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1132
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1133
    |attribute_length signature_index signature|
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1134
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1135
    attribute_length := inStream nextUnsignedLongMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1136
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1137
    signature_index := inStream nextUnsignedShortMSB:msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1138
    signature := constants at:signature_index.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1139
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1140
    something setSignature: signature.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1141
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1142
    "Modified: / 13-08-2011 / 00:28:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1143
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1144
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1145
readSourceDebugExtensionAttributeFor:something
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1146
"/        ('JAVA [info]: unhandled attribute: SourceDebugExtension') infoPrintCR.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1147
        self skipAttribute:'SourceDebugExtension'.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1148
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1149
353
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1150
readSourceFileAttributeFor:aClass
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1151
    |attribute_length sourceFile_index sourceFile|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1152
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1153
    attribute_length := inStream nextUnsignedLongMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1154
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1155
    sourceFile_index := inStream nextUnsignedShortMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1156
    sourceFile := constants at:sourceFile_index.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1157
353
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1158
    aClass isJavaClass ifTrue:[
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1159
        aClass setSourceFile:sourceFile.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1160
    ] ifFalse:[
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1161
        aClass setClassFilename:sourceFile
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1162
    ].
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1163
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1164
    Verbose ifTrue:[Transcript show:'sourceFile: '; showCR:sourceFile].
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1165
    ^ true
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1166
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1167
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1168
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1169
     JavaClassReader loadFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1170
     JavaClassReader loadFile:'foo.cls'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1171
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1172
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1173
    "Created: / 15.4.1996 / 15:40:17 / cg"
353
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1174
    "Modified: / 12.5.1998 / 22:01:07 / cg"
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1175
!
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1176
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1177
readStackMapTableAttributeFor:something 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1178
"/        ('JAVA [info]: unhandled attribute: StackMapTable') infoPrintCR.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1179
    self skipAttribute:'StackMapTable'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1180
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1181
    "Created: / 09-02-2011 / 01:19:20 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1182
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1183
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1184
readSyntheticAttributeFor:something
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1185
"/        ('JAVA [info]: unhandled attribute: Synthetic') infoPrintCR.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1186
        self skipAttribute:'Synthetic'.
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1187
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  1188
333
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1189
skipAttribute:attributeName
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1190
    "dont know about this attribute - skip it here"
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1191
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1192
    |attribute_length attribute_info|
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1193
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1194
    attribute_length := inStream nextUnsignedLongMSB:msb.
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1195
    attribute_info := ByteArray new:(attribute_length).
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1196
    inStream nextBytes:attribute_length into:attribute_info startingAt:1.
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1197
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1198
    Verbose ifTrue:[Transcript show:'skipped '; show:attributeName; showCR:'-attribute'].
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1199
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1200
    "Created: / 9.4.1998 / 18:12:46 / cg"
1622ff2b686b checkin from browser
cg
parents: 330
diff changeset
  1201
    "Modified: / 9.4.1998 / 18:13:20 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1202
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1203
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1204
!JavaClassReader methodsFor:'file reading - attributes-ST'!
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1205
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1206
readSTClassCategoryAttributeFor:aClass
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1207
    |attribute_length categoryString_index categoryString|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1208
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1209
    attribute_length := inStream nextUnsignedLongMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1210
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1211
    categoryString_index := inStream nextUnsignedShortMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1212
    categoryString := constants at:categoryString_index.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1213
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1214
    aClass category:categoryString.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1215
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1216
    Verbose ifTrue:[Transcript show:'categoryString: '; showCR:categoryString].
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1217
    ^ true
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1218
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1219
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1220
     JavaClassReader loadFile:'foo.cls'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1221
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1222
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1223
    "Created: / 9.5.1998 / 02:33:13 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1224
    "Modified: / 9.5.1998 / 02:36:55 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1225
!
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1226
353
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1227
readSTClassInstVarNamesAttributeFor:aClass
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1228
    |attribute_length nameString_index nameString|
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1229
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1230
    attribute_length := inStream nextUnsignedLongMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1231
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1232
    nameString_index := inStream nextUnsignedShortMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1233
    nameString := constants at:nameString_index.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1234
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1235
    aClass class instanceVariableString:nameString.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1236
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1237
    Verbose ifTrue:[Transcript show:'nameString: '; showCR:nameString].
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1238
    ^ true
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1239
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1240
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1241
     JavaClassReader loadFile:'foo.cls'
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1242
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1243
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1244
    "Modified: / 12.5.1998 / 22:18:03 / cg"
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1245
    "Created: / 12.5.1998 / 22:18:24 / cg"
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1246
!
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1247
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1248
readSTClassPackageAttributeFor:aClass
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1249
    |attribute_length packageString_index packageString|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1250
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1251
    attribute_length := inStream nextUnsignedLongMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1252
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1253
    packageString_index := inStream nextUnsignedShortMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1254
    packageString := constants at:packageString_index.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1255
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1256
    aClass package:packageString asSymbol.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1257
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1258
    Verbose ifTrue:[Transcript show:'packageString: '; showCR:packageString].
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1259
    ^ true
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1260
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1261
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1262
     JavaClassReader loadFile:'foo.cls'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1263
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1264
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1265
    "Modified: / 9.5.1998 / 02:32:38 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1266
    "Created: / 9.5.1998 / 02:33:44 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1267
!
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1268
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1269
readSTClassRevisionAttributeFor:aClass
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1270
    |attribute_length revisionString_index revisionString|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1271
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1272
    attribute_length := inStream nextUnsignedLongMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1273
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1274
    revisionString_index := inStream nextUnsignedShortMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1275
    revisionString := constants at:revisionString_index.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1276
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1277
    aClass setBinaryRevision:revisionString.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1278
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1279
    Verbose ifTrue:[Transcript show:'revisionString: '; showCR:revisionString].
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1280
    ^ true
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1281
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1282
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1283
     JavaClassReader loadFile:'foo.cls'
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1284
    "
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1285
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1286
    "Created: / 9.5.1998 / 02:33:13 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1287
    "Modified: / 9.5.1998 / 02:35:01 / cg"
353
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1288
!
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1289
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1290
readSTClassVarNamesAttributeFor:aClass
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1291
    |attribute_length nameString_index nameString|
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1292
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1293
    attribute_length := inStream nextUnsignedLongMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1294
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1295
    nameString_index := inStream nextUnsignedShortMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1296
    nameString := constants at:nameString_index.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1297
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1298
    aClass classVariableString:nameString.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1299
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1300
    Verbose ifTrue:[Transcript show:'nameString: '; showCR:nameString].
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1301
    ^ true
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1302
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1303
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1304
     JavaClassReader loadFile:'foo.cls'
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1305
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1306
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1307
    "Created: / 9.5.1998 / 02:33:13 / cg"
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1308
    "Modified: / 12.5.1998 / 22:18:03 / cg"
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1309
!
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1310
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1311
readSTInstVarNamesAttributeFor:aClass
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1312
    |attribute_length nameString_index nameString|
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1313
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1314
    attribute_length := inStream nextUnsignedLongMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1315
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1316
    nameString_index := inStream nextUnsignedShortMSB:msb.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1317
    nameString := constants at:nameString_index.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1318
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1319
    aClass setInstanceVariableString:nameString.
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1320
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1321
    Verbose ifTrue:[Transcript show:'nameString: '; showCR:nameString].
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1322
    ^ true
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1323
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1324
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1325
     JavaClassReader loadFile:'foo.cls'
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1326
    "
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1327
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1328
    "Created: / 12.5.1998 / 22:18:14 / cg"
666b33cfc98f *** empty log message ***
cg
parents: 352
diff changeset
  1329
    "Modified: / 12.5.1998 / 22:21:10 / cg"
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1330
! !
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1331
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1332
!JavaClassReader methodsFor:'file reading - constants'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1333
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1334
readConstant
083530508d9c intitial checkin
cg
parents:
diff changeset
  1335
    |tag constReader const|
083530508d9c intitial checkin
cg
parents:
diff changeset
  1336
083530508d9c intitial checkin
cg
parents:
diff changeset
  1337
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1338
    constNeeds2Slots := false.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1339
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1340
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1341
    "/ get tag
083530508d9c intitial checkin
cg
parents:
diff changeset
  1342
    "/
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1343
    tag := inStream nextByte.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1344
    Verbose ifTrue:[Transcript show:'tag = '; showCR:tag].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1345
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1346
    tag >= 250 ifTrue:[
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1347
        constReader := #(
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1348
                        "/ ST types
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1349
                        readConstant_ST_Large           "/ 249
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1350
                        readConstant_ST_Special         "/ 250
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1351
                        readConstant_ST_Character       "/ 251
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1352
                        readConstant_ST_ByteArray       "/ 252
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1353
                        readConstant_ST_Array           "/ 253
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1354
                        readConstant_ST_Symbol          "/ 254
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1355
                        readConstant_ST_Reserved        "/ 255
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1356
                    ) at:tag-249+1.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1357
    ] ifFalse:[
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1358
        constReader := #(
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1359
                        "/ JAVA types
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1360
                        readConstant_Utf8               "/ 1  - now called Utf8
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1361
                        readConstant_Unicode            "/ 2
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1362
                        readConstant_Integer            "/ 3
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1363
                        readConstant_Float              "/ 4
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1364
                        readConstant_Long               "/ 5
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1365
                        readConstant_Double             "/ 6
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1366
                        readConstant_Class              "/ 7
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1367
                        readConstant_String             "/ 8
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1368
                        readConstant_Fieldref           "/ 9
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1369
                        readConstant_Methodref          "/ 10
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1370
                        readConstant_InterfaceMethodref "/ 11
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1371
                        readConstant_NameAndType        "/ 12
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1372
                    ) at:tag ifAbsent:[#readConstant_Undef].
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1373
    ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1374
    ^ self perform:constReader.
083530508d9c intitial checkin
cg
parents:
diff changeset
  1375
083530508d9c intitial checkin
cg
parents:
diff changeset
  1376
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1377
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1378
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1379
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1380
    "Created: / 15.4.1996 / 15:46:32 / cg"
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1381
    "Modified: / 9.5.1998 / 01:26:05 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1382
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1383
083530508d9c intitial checkin
cg
parents:
diff changeset
  1384
readConstantPool
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1385
    | constantPoolSize  const |
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1386
083530508d9c intitial checkin
cg
parents:
diff changeset
  1387
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  1388
    "/ get constant pool
083530508d9c intitial checkin
cg
parents:
diff changeset
  1389
    "/
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1390
    constantPoolSize := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1391
    self info: 'constantPoolSize = ' , constantPoolSize printString.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1392
    constants := JavaConstantPool new: constantPoolSize - 1.
21
b9dd73f299dd checkin from browser
cg
parents: 14
diff changeset
  1393
    constSlot := 1.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1394
    [ constSlot < constantPoolSize ] whileTrue: [
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1395
            self info: 'const slot: ' , constSlot printString.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1396
            const := self readConstant.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1397
            constants at: constSlot put: const.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1398
            
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1399
            "/ long & double consts take 2 slots
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1400
            "/ (only first is used)
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1401
            
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1402
            constNeeds2Slots 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1403
                ifTrue: [ constSlot := constSlot + 2. ]
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1404
                ifFalse: [ constSlot := constSlot + 1. ]].
52
1dc41619b6f8 checkin from browser
cg
parents: 50
diff changeset
  1405
    constSlot := -1.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1406
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1407
    constants do:[:ref|ref isJavaRef ifTrue:[ref preResolve]].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1408
"/    1 to: constantPoolSize - 1
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1409
"/        do: 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1410
"/            [:i | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1411
"/            | const  value |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1412
"/
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1413
"/            const := constants at: i.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1414
"/            const notNil ifTrue: 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1415
"/                    [ "/ kludge for 2-slot constants (which only take 1 slot in ST/X)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1416
"/                    (const isKindOf: JavaUnresolvedConstant) 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1417
"/                        ifTrue: 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1418
"/                            [ value := const preResolve.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1419
"/                            value ~~ const ifTrue: [ constants at: i put: value. ] ] ] ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1420
083530508d9c intitial checkin
cg
parents:
diff changeset
  1421
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1422
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1423
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1424
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1425
    "Modified: / 07-05-1998 / 11:44:06 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1426
    "Created: / 13-05-2011 / 16:52:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1427
    "Modified: / 15-10-2012 / 23:15:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1428
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1429
083530508d9c intitial checkin
cg
parents:
diff changeset
  1430
readConstant_Asciz
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1431
    | len  string |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1432
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1433
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1434
    len := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1435
    string := String new: len.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1436
    inStream 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1437
        nextBytes: len
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1438
        into: string
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1439
        startingAt: 1.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1440
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1441
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1442
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1443
                show: 'asciz; string= ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1444
                showCR: string ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1445
    ^ string
083530508d9c intitial checkin
cg
parents:
diff changeset
  1446
083530508d9c intitial checkin
cg
parents:
diff changeset
  1447
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1448
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1449
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1450
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1451
    "Created: / 15-04-1996 / 15:15:35 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1452
    "Modified: / 15-04-1996 / 16:33:45 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1453
    "Modified: / 13-05-2011 / 17:31:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1454
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1455
083530508d9c intitial checkin
cg
parents:
diff changeset
  1456
readConstant_Class
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1457
    | nameIndex |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1458
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1459
    nameIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1460
    ((constants at: nameIndex) isNil) 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1461
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1462
            [ self info: ('reading class; index=' , nameIndex printString , ' name=' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1463
                        , (constants at: nameIndex) printString) ]
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1464
        ifFalse: [ self info: ('reading class; index= ' , nameIndex printString) ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1465
    ^ JavaClassRef2 in: constants withNameAt: nameIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1466
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1467
    "Modified: / 18-05-2011 / 18:21:16 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1468
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1469
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1470
readConstant_Double
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1471
    |high low aFloat bytes|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1472
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1473
"/ new code - to be tested
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1474
"/    bytes := ByteArray new:8.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1475
"/
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1476
"/    inStream nextBytes:8 into:bytes startingAt:1.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1477
"/    msb ~~ UninterpretedBytes isBigEndian ifTrue:[
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1478
"/        bytes reverse
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1479
"/    ].
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1480
"/    aFloat := bytes doubleAt:1.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1481
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1482
"/ old code
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1483
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1484
    high := inStream nextUnsignedLongMSB:msb.
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1485
    low := inStream nextUnsignedLongMSB:msb.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1486
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1487
    aFloat := Float new.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1488
    UninterpretedBytes isBigEndian ifTrue:[
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1489
        aFloat basicAt:1 put:((high bitShift:-24) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1490
        aFloat basicAt:2 put:((high bitShift:-16) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1491
        aFloat basicAt:3 put:((high bitShift:-8) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1492
        aFloat basicAt:4 put:(high bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1493
        aFloat basicAt:5 put:((low bitShift:-24) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1494
        aFloat basicAt:6 put:((low bitShift:-16) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1495
        aFloat basicAt:7 put:((low bitShift:-8) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1496
        aFloat basicAt:8 put:(low bitAnd:16rFF).
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1497
    ] ifFalse:[
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1498
        aFloat basicAt:1 put:(low bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1499
        aFloat basicAt:2 put:((low bitShift:-8) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1500
        aFloat basicAt:3 put:((low bitShift:-16) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1501
        aFloat basicAt:4 put:((low bitShift:-24) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1502
        aFloat basicAt:5 put:(high bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1503
        aFloat basicAt:6 put:((high bitShift:-8) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1504
        aFloat basicAt:7 put:((high bitShift:-16) bitAnd:16rFF).
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1505
        aFloat basicAt:8 put:((high bitShift:-24) bitAnd:16rFF).
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1506
    ].
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1507
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1508
    constNeeds2Slots := true.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1509
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1510
    Verbose ifTrue:[Transcript show:'double; value= ';     showCR:aFloat].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1511
    ^ aFloat
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1512
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1513
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1514
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1515
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1516
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1517
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1518
    "Created: / 15.4.1996 / 16:34:42 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1519
    "Modified: / 8.5.1998 / 22:06:07 / cg"
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1520
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1521
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1522
readConstant_Fieldref    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1523
    "incrementally changing resolving logic, fields will come later"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1524
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1525
    | classIndex  nameAndTypeIndex |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1526
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1527
    classIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1528
    nameAndTypeIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1529
    self 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1530
        info: 'reading fieldref; classindex=' , classIndex printString 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1531
                , ' nameAndTypeIndex=' , nameAndTypeIndex printString.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1532
    ^ JavaFieldRef2 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1533
        in: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1534
        withNameAndTypeAt: nameAndTypeIndex
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1535
        andClassAt: classIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1536
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1537
    "Modified: / 15-05-2011 / 14:20:23 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1538
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1539
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1540
readConstant_Float
433
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1541
    |b1 b2 b3 b4 aFloat bytes|
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1542
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1543
"/ new code - to be tested ...
352
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1544
"/
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1545
"/    bytes := ByteArray new:4.
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1546
"/    inStream nextBytes:4 into:bytes startingAt:1.
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1547
"/    msb ~~ UninterpretedBytes isBigEndian ifTrue:[
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1548
"/        bytes reverse
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1549
"/    ].
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1550
"/    aFloat := bytes floatAt:1.
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1551
"/    Verbose ifTrue:[Transcript show:'float; value= ';     showCR:aFloat].
9093171ef0a6 oops - float reading
cg
parents: 350
diff changeset
  1552
"/    ^ aFloat.
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1553
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1554
"/ old code
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1555
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1556
    aFloat := ShortFloat basicNew.
433
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1557
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1558
    b1 := inStream nextByte.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1559
    b2 := inStream nextByte.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1560
    b3 := inStream nextByte.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1561
    b4 := inStream nextByte.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1562
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1563
    UninterpretedBytes isBigEndian ifTrue:[
433
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1564
        aFloat basicAt:1 put:b1.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1565
        aFloat basicAt:2 put:b2.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1566
        aFloat basicAt:3 put:b3.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1567
        aFloat basicAt:4 put:b4.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1568
    ] ifFalse:[
433
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1569
        aFloat basicAt:4 put:b1.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1570
        aFloat basicAt:3 put:b2.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1571
        aFloat basicAt:2 put:b3.
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1572
        aFloat basicAt:1 put:b4.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1573
    ].
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1574
    Verbose ifTrue:[Transcript show:'float; value= ';     showCR:aFloat].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1575
    ^ aFloat
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1576
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1577
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1578
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1579
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1580
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1581
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1582
    "Created: / 15.4.1996 / 16:34:42 / cg"
433
d9d6841784f1 checkin from browser
cg
parents: 423
diff changeset
  1583
    "Modified: / 10.11.1998 / 22:04:59 / cg"
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1584
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1585
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1586
readConstant_Integer
083530508d9c intitial checkin
cg
parents:
diff changeset
  1587
    |value|
083530508d9c intitial checkin
cg
parents:
diff changeset
  1588
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1589
    value := inStream nextLongMSB:msb.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1590
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1591
    Verbose ifTrue:[Transcript show:'integer; value= ';     showCR:value].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1592
083530508d9c intitial checkin
cg
parents:
diff changeset
  1593
    ^ value
083530508d9c intitial checkin
cg
parents:
diff changeset
  1594
083530508d9c intitial checkin
cg
parents:
diff changeset
  1595
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1596
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1597
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1598
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1599
083530508d9c intitial checkin
cg
parents:
diff changeset
  1600
    "Modified: 15.4.1996 / 15:42:16 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1601
    "Created: 15.4.1996 / 16:34:42 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1602
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1603
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
  1604
readConstant_InterfaceMethodref
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1605
    | classIndex  nameAndTypeIndex  |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1606
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1607
    classIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1608
    nameAndTypeIndex := inStream nextUnsignedShortMSB: msb.    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1609
    self 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1610
        info: 'reading interface methodref; classindex=' , classIndex printString                 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1611
                , ' nameAndTypeIndex=' , nameAndTypeIndex printString.                
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1612
    ^ JavaInterfaceMethodRef2 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1613
        in: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1614
        withNameAndTypeAt: nameAndTypeIndex
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1615
        andClassAt: classIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1616
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1617
    "Modified: / 12-05-2011 / 18:57:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
14
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
  1618
!
c1d9f60eb650 can now load all java.class files (see JavaClassReader>>loadFile:)
cg
parents: 11
diff changeset
  1619
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1620
readConstant_Long
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1621
    |high low value|
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1622
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1623
    high := inStream nextUnsignedLongMSB:msb.
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1624
    low := inStream nextUnsignedLongMSB:msb.
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1625
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1626
    value := (high bitShift:32) bitOr:low.
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1627
    (high bitTest:16r80000000) ifTrue:[
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  1628
	value := value - 16r10000000000000000.
60
a763b1780ec0 checkin from browser
cg
parents: 59
diff changeset
  1629
    ].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1630
    constNeeds2Slots := true.
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1631
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1632
    Verbose ifTrue:[Transcript show:'long; value= ';     showCR:value].
11
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1633
    ^ value
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1634
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1635
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1636
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1637
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1638
    "
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1639
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1640
    "Modified: 15.4.1996 / 15:42:16 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1641
    "Created: 15.4.1996 / 16:34:42 / cg"
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1642
!
30997f6943a4 checkin from browser
cg
parents: 9
diff changeset
  1643
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1644
readConstant_Methodref
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1645
    | classIndex  nameAndTypeIndex   |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1646
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1647
    classIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1648
    nameAndTypeIndex := inStream nextUnsignedShortMSB: msb.   
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1649
    self 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1650
        info: 'reading methodref; classindex=' , classIndex printString , ' nameAndTypeIndex=' 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1651
                , nameAndTypeIndex printString.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1652
    ^ JavaMethodRef2 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1653
        in: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1654
        withNameAndTypeAt: nameAndTypeIndex
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1655
        andClassAt: classIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1656
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1657
    "Modified: / 15-05-2011 / 14:20:38 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1658
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1659
91
9b325648aa77 resolve rewritten; interpreter fixes
cg
parents: 86
diff changeset
  1660
readConstant_NameAndType
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1661
    | nameIndex  descriptorIndex |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1662
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1663
    nameIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1664
    descriptorIndex := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1665
    self 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1666
        info: 'reading nameAndType; nameindex=' , nameIndex printString 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1667
                , ' descriptorIndex= ' , descriptorIndex printString.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1668
    ^JavaNameAndType2 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1669
                in: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1670
                withNameAt: nameIndex
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1671
                andDescriptorAt: descriptorIndex.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1672
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1673
    "Modified: / 10-05-2011 / 17:09:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1674
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1675
083530508d9c intitial checkin
cg
parents:
diff changeset
  1676
readConstant_String
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1677
    | string_index |
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1678
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1679
    string_index := inStream nextUnsignedShortMSB: msb.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1680
    ^ JavaStringRef2 in: constants withValueAt: string_index.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1681
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1682
    
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1683
    
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1684
    "Created: / 15-04-1996 / 15:20:33 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1685
    "Modified: / 07-05-1998 / 11:42:45 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1686
    "Modified: / 13-05-2011 / 17:31:54 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1687
    "Modified: / 10-08-2011 / 23:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1688
!
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1689
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1690
readConstant_Unicode
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1691
    | len  string  ascii |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1692
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1693
    len := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1694
    string := TwoByteString new: len.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1695
    1 to: len
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1696
        do: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1697
            [:idx | 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1698
            ascii := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1699
            string at: idx put: (Character value: ascii). ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1700
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1701
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1702
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1703
                show: 'asciz; unicodeString= ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1704
                showCR: string ].
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1705
    ^ string
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1706
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1707
    "Modified: / 13-05-2011 / 17:31:44 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1708
!
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1709
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1710
readConstant_Utf8
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1711
    | len  bytes  string |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1712
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1713
    len := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1714
    bytes := ByteArray new: len.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1715
    inStream 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1716
        nextBytes: len
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1717
        into: bytes
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1718
        startingAt: 1.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1719
    string := CharacterArray fromJavaUTF8Bytes: bytes.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1720
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1721
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1722
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1723
                show: 'asciz; string= ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1724
                showCR: string ].
695
fd5acdd14995 utf8 string decoding
cg
parents: 667
diff changeset
  1725
    ^ string
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1726
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1727
    "Modified: / 19-10-2010 / 12:38:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1728
    "Modified: / 13-05-2011 / 17:31:48 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1729
! !
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1730
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1731
!JavaClassReader methodsFor:'file reading - constants-ST'!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1732
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1733
readConstant_ST_Array
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1734
    |aSize arr|
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1735
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1736
    aSize := inStream nextUnsignedShortMSB:msb.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1737
    arr := Array new:aSize.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1738
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1739
    1 to:aSize do:[:i |
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1740
        |element_index element|
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1741
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1742
        element_index := inStream nextUnsignedShortMSB:msb.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1743
        arr at:i put:element_index.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1744
    ].
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1745
    Verbose ifTrue:[Transcript show:'array; size= ';     showCR:aSize].
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1746
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1747
    ^ JavaUnresolvedSTArrayConstant 
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1748
                pool:constants
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1749
                poolIndex:constSlot
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1750
                array:arr
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1751
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1752
    "Created: / 7.5.1998 / 11:47:01 / cg"
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1753
    "Modified: / 9.5.1998 / 00:25:34 / cg"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1754
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1755
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1756
readConstant_ST_ByteArray
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1757
    |aSize arr|
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1758
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1759
    aSize := inStream nextUnsignedShortMSB:msb.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1760
    arr := ByteArray new:aSize.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1761
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1762
    1 to:aSize do:[:i |
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1763
        |element_index|
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1764
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1765
        arr at:i put:(inStream nextByte).
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1766
    ].
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1767
    Verbose ifTrue:[Transcript show:'byteArray; size= ';     showCR:aSize].
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1768
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1769
    ^ arr
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1770
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1771
    "Created: / 7.5.1998 / 11:47:12 / cg"
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1772
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1773
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1774
readConstant_ST_Character
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1775
    |ascii|
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1776
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1777
    ascii := inStream nextUnsignedShortMSB:msb.
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1778
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1779
    Verbose ifTrue:[Transcript show:'char; ascii= '; showCR:ascii].
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1780
    ^ Character value:ascii
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1781
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1782
    "Created: / 7.5.1998 / 11:48:12 / cg"
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1783
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1784
350
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1785
readConstant_ST_Special
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1786
    |type|
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1787
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1788
    type := inStream nextUnsignedShortMSB:msb.
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1789
    ^ #(
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1790
        nil
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1791
        true
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1792
        false
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1793
     ) at:(type + 1)
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1794
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1795
    "Created: / 8.5.1998 / 23:06:56 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1796
    "Modified: / 9.5.1998 / 00:40:14 / cg"
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1797
!
bf3f92fb2629 support for ST-classes
cg
parents: 348
diff changeset
  1798
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1799
readConstant_ST_String
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1800
    | tag  string_index  chars |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1801
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1802
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1803
    string_index := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1804
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1805
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1806
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1807
                show: 'string; index= ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1808
                showCR: string_index ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1809
    
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1810
    "/ resolve here if possible
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1811
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1812
    string_index < constSlot 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1813
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1814
            [ chars := (constants at: string_index).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1815
            ^ chars ].
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1816
    ^ JavaUnresolvedSTStringConstant 
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1817
        pool: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1818
        poolIndex: constSlot
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1819
        stringIndex: string_index
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1820
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1821
    "Created: / 07-05-1998 / 11:49:55 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1822
    "Modified: / 13-05-2011 / 17:32:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1823
!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1824
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1825
readConstant_ST_Symbol
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1826
    | tag  string_index  chars |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1827
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1828
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1829
    string_index := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1830
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1831
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1832
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1833
                show: 'symbol; index= ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1834
                showCR: string_index ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1835
    
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1836
    "/ resolve here if possible
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1837
    
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1838
    string_index < constSlot 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1839
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1840
            [ chars := (constants at: string_index).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1841
            chars isString ifFalse: [ self halt: 'should not happen' ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1842
            ^ chars asSymbol ].
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  1843
    ^ JavaUnresolvedSTSymbolConstant 
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1844
        pool: constants
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1845
        poolIndex: constSlot
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1846
        stringIndex: string_index
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1847
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1848
    "Modified: / 07-05-1998 / 11:48:28 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1849
    "Modified: / 13-05-2011 / 17:32:09 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1850
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1851
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1852
!JavaClassReader methodsFor:'file reading - extensions'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1853
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1854
readExtensionsFor: class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1855
    "Given a class, load extensions (i.e., non-java methods) for that class"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1856
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1857
    | classnameAsPath |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1858
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1859
    classnameAsPath := class name copyReplaceAll: $/ with: Filename separator.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1860
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1861
    Java effectiveExtensionsPath do:[:each|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1862
        ProgrammingLanguage allDo:[:lang|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1863
            lang supportsExtensionMethods ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1864
                | file |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1865
                file := each asString , Filename separator , classnameAsPath , '.' , lang sourceFileSuffix.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1866
                file := file asFilename.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1867
                file exists ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1868
                    self readExtensionsFor: class from: file language: lang
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1869
                ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1870
            ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1871
        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1872
    ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1873
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1874
    "Created: / 06-09-2012 / 11:37:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1875
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1876
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1877
readExtensionsFor: class from: file
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1878
    "Given a class, load extensions (i.e., non-java methods) for that class"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1879
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1880
    JAVA isNil ifTrue:[ JavaPackage initialize ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1881
    [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1882
        Smalltalk fileIn: file.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1883
    ] on: JavaClassQuery do:[:query |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1884
        query className = class name ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1885
            query resumeWith: class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1886
        ] ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1887
            query resumeWith: nil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1888
        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1889
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1890
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1891
    "Created: / 06-09-2012 / 12:04:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1892
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1893
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1894
readExtensionsFor: class from: file language: language
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1895
    "Given a class, load extensions (i.e., non-java methods) for that class"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1896
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1897
    JAVA isNil ifTrue:[ JavaPackage initialize ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1898
    [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1899
        Class withoutUpdatingChangesDo:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1900
            language fileIn: file.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1901
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1902
    ] on: JavaClassQuery do:[:query |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1903
        query className = class name ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1904
            query resumeWith: class
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1905
        ] ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1906
            query resumeWith: nil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1907
        ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1908
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1909
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1910
    "Created: / 06-09-2012 / 12:14:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1911
    "Modified: / 16-12-2012 / 16:48:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1912
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  1913
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1914
!JavaClassReader methodsFor:'file reading - fields'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1915
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1916
readConstantValueAttributeFor:aField
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1917
    |attribute_length constantvalue_index constantValue|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1918
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1919
    attribute_length := inStream nextUnsignedLongMSB:msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1920
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1921
    constantvalue_index := inStream nextUnsignedShortMSB:msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1922
    constantValue := constants at:constantvalue_index.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1923
59
38114c3e3e77 checkin from browser
cg
parents: 54
diff changeset
  1924
    aField constantValue:constantValue.
38114c3e3e77 checkin from browser
cg
parents: 54
diff changeset
  1925
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1926
    Verbose ifTrue:[Transcript show:'constantValue: '; showCR:constantValue].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1927
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1928
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1929
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1930
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1931
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1932
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1933
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1934
    "Modified: 15.4.1996 / 15:33:28 / cg"
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1935
    "Created: 15.4.1996 / 15:40:17 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1936
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1937
083530508d9c intitial checkin
cg
parents:
diff changeset
  1938
readFieldInfofield
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1939
    | access_flags  name_index  descriptor_index  attributes_count  field |
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1940
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1941
    access_flags := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1942
    name_index := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1943
    descriptor_index := inStream nextUnsignedShortMSB: msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1944
    field := JavaField new.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1945
    field setAccessFlags: access_flags.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1946
    field setName: (constants at: name_index) asSymbol.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1947
    field setDescriptor: (constants at: descriptor_index) asSymbol.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1948
    field setConstantPool: constants.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1949
    attributes_count := inStream nextUnsignedShortMSB: msb.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1950
    Verbose 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1951
        ifTrue: 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1952
            [ Transcript
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1953
                show: '  field name: ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1954
                show: (constants at: name_index);
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1955
                show: ' access: ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1956
                show: access_flags;
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1957
                show: ' attrib_cnt: ';
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1958
                showCR: attributes_count ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1959
    1 to: attributes_count do: [:i | self readAttributeFor: field. ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1960
    ^ field.
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
  1961
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1962
    "
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1963
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1964
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1965
    "Created: / 15-04-1996 / 15:38:43 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1966
    "Modified: / 15-10-1998 / 10:38:01 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1967
    "Modified: / 17-12-2010 / 18:44:30 / Marcel Hlopko <hlopik@gmail.com>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1968
    "Modified: / 18-05-2011 / 14:11:37 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  1969
    "Modified: / 14-08-2011 / 19:40:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1970
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  1971
083530508d9c intitial checkin
cg
parents:
diff changeset
  1972
readFieldInfofields
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1973
    |nFields fields|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1974
083530508d9c intitial checkin
cg
parents:
diff changeset
  1975
    "/
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1976
    "/ get fieldInfos
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1977
    "/
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  1978
    nFields := inStream nextUnsignedShortMSB:msb.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  1979
    Verbose ifTrue:[Transcript show:'fieldsCount = '; showCR:nFields].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1980
27
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
  1981
    fields := Array new:nFields.
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
  1982
4560bb77bb36 checkin from browser
cg
parents: 21
diff changeset
  1983
    1 to:nFields do:[:i |
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  1984
	Verbose ifTrue:[Transcript show:'field: '; showCR:i].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  1985
	fields at:i put:(self readFieldInfofield)
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1986
    ].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1987
    ^ fields
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  1988
083530508d9c intitial checkin
cg
parents:
diff changeset
  1989
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1990
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  1991
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  1992
083530508d9c intitial checkin
cg
parents:
diff changeset
  1993
    "Created: 15.4.1996 / 15:34:41 / cg"
083530508d9c intitial checkin
cg
parents:
diff changeset
  1994
    "Modified: 15.4.1996 / 15:35:28 / cg"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1995
! !
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  1996
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1997
!JavaClassReader methodsFor:'file reading - interfaces'!
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1998
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  1999
readInterfaces
110
dfb03e2ea321 *** empty log message ***
cg
parents: 104
diff changeset
  2000
    |interfacesCount interface_index interface interfaces|
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2001
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2002
    "/
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2003
    "/ get interfaces
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2004
    "/
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2005
    interfacesCount := inStream nextUnsignedShortMSB:msb.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  2006
    Verbose ifTrue:[Transcript show:'interfacesCount = '; showCR:interfacesCount].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2007
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2008
    interfaces := Array new:interfacesCount.
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2009
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2010
    1 to:interfacesCount do:[:i |
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2011
	Verbose ifTrue:[Transcript show:'interface: '; showCR:i].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2012
	interface_index := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2013
	interface := constants at:interface_index.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2014
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2015
	interfaces at:i put:interface.
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2016
    ].
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2017
    ^ interfaces
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2018
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2019
    "
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2020
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2021
    "
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2022
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2023
    "Created: 15.4.1996 / 15:31:59 / cg"
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2024
    "Modified: 15.4.1996 / 15:33:28 / cg"
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2025
! !
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2026
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2027
!JavaClassReader methodsFor:'file reading - methods'!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2028
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2029
readCodeAttributeFor:aJavaMethod
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2030
    |attribute_length max_stack max_locals code_length code
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2031
     exception_table_length exception_table unknown1 unknown2 |
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2032
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2033
    attribute_length := inStream nextUnsignedLongMSB:msb.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2034
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2035
    Verbose ifTrue:[Transcript show:'code_attribute_length: 0x'; showCR:(attribute_length printStringRadix:16)].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2036
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2037
    ((minorVsn > 2) or:[majorVsn > 45]) ifTrue:[
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2038
        "/ should be:
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2039
        max_stack := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2040
        max_locals := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2041
        code_length := inStream nextUnsignedLongMSB:msb.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2042
        "/ Remember max context size so far, will be used to
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2043
        "/ optimize context size as alloca() won't work.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2044
        MaxContextSize := MaxContextSize max: (max_stack + max_locals + 4"safe area").
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2045
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2046
        MaxContextSize > MaxContextSizeLimit ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2047
            self error:'method''s stack depth overflows VM limit'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2048
            ^false
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2049
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2050
"
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2051
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2052
"/        unknown1 := inStream nextByte.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2053
"/        max_stack := inStream nextByte.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2054
"/        max_locals := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2055
"/        unknown2 := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2056
"/        code_length := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2057
"/        Verbose ifTrue:[Transcript show:'?1: '; showCR:unknown1].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2058
"/        Verbose ifTrue:[Transcript show:'?2: '; showCR:unknown2].
39
20fa5af3b873 checkin from browser
cg
parents: 38
diff changeset
  2059
    ] ifFalse:[
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2060
        max_stack := inStream nextByte.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2061
        max_locals := inStream nextByte.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2062
        code_length := inStream nextUnsignedShortMSB:msb.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2063
    ].
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2064
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2065
    Verbose ifTrue:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2066
        Transcript show:'code_length: '; showCR:(code_length printStringRadix:16).
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2067
        Transcript show:'code at pos: '; showCR:inStream position
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2068
    ].
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2069
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2070
    code_length ~~ 0 ifTrue:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2071
        code := ByteArray new:code_length.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2072
        inStream nextBytes:code_length into:code startingAt:1.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2073
    ].
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2074
    Verbose ifTrue:[Transcript show:'method code: '; showCR:code.].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2075
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2076
    exception_table_length := inStream nextUnsignedShortMSB:msb.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  2077
    Verbose ifTrue:[Transcript show:'exception_table_length: '; showCR:(exception_table_length printStringRadix:16)].
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2078
    exception_table_length ~~ 0 ifTrue:[
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2079
        Verbose ifTrue:[Transcript show:'exceptionTable length:'; showCR:exception_table_length.].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2080
2585
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2081
        exception_table := JavaExceptionTable new:exception_table_length * 4.
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2082
        1 to:exception_table_length do:[:i |
2585
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2083
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2084
            "/ start PC
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2085
            exception_table at:((i-1) * 4) + 1 put: (inStream nextUnsignedShortMSB:msb).
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2086
            "/ end PC
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2087
            exception_table at:((i-1) * 4) + 2 put: (inStream nextUnsignedShortMSB:msb).
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2088
            "/ handler PC
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2089
            exception_table at:((i-1) * 4) + 3 put: (inStream nextUnsignedShortMSB:msb).
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2090
            "/ catch type
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2091
            exception_table at:((i-1) * 4) + 4 put: (inStream nextUnsignedShortMSB:msb).
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2092
        ].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2093
        aJavaMethod setExceptionHandlerTable:exception_table.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2094
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
  2095
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2096
    (max_stack + max_locals + 4) > MaxContextSizeLimit ifTrue:[
2585
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2097
        code := nil
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2098
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2099
29
eb3367f8fb9b checkin from browser
cg
parents: 27
diff changeset
  2100
    aJavaMethod 
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2101
        setCode:code 
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2102
        maxStack:max_stack 
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2103
        maxLocals:max_locals 
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2104
        u1:unknown1 
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2105
        u2:unknown2.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2106
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2107
    self readAttributesFor:aJavaMethod.
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2108
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2109
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2110
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2111
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2112
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/Alignable.class'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2113
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2114
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2115
    "Created: / 15-04-1996 / 15:40:17 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2116
    "Modified: / 16-05-1998 / 01:39:42 / cg"
2585
14ab287e17ca Exception table refactored to use more compact & VM friendly format.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2117
    "Modified: / 06-05-2013 / 22:08:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2118
!
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2119
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2120
readExceptionsAttributeFor:aJavaMethod
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2121
    |attribute_length exception_table_length exception_table|
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2122
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2123
    attribute_length := inStream nextUnsignedLongMSB:msb.
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2124
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2125
    exception_table_length := inStream nextUnsignedShortMSB:msb.
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2126
    exception_table_length ~~ 0 ifTrue:[
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2127
	exception_table := Array new:exception_table_length.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2128
	1 to:exception_table_length do:[:i |
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2129
	    |idx ex|
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2130
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2131
	    idx := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2132
	    ex := constants at:idx.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2133
	    exception_table at:i put:ex.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2134
	].
83
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2135
    ].
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2136
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2137
    Verbose ifTrue:[Transcript showCR:'method has an exceptionTable'].
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2138
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2139
    aJavaMethod setExceptionTable:exception_table.
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2140
    ^ true
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2141
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2142
    "Modified: 15.4.1996 / 15:33:28 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2143
    "Created: 15.4.1996 / 15:40:17 / cg"
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2144
!
2d61ef3579e4 *** empty log message ***
cg
parents: 73
diff changeset
  2145
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2146
readLineNumberTableAttributeFor:aJavaMethod
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2147
    |attribute_length line_number_table_length line_number_table|
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2148
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2149
    attribute_length := inStream nextUnsignedLongMSB:msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2150
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2151
    line_number_table_length := inStream nextUnsignedShortMSB:msb.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2152
    line_number_table_length ~~ 0 ifTrue:[
330
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2153
        line_number_table := Array new:line_number_table_length.
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2154
        1 to:line_number_table_length do:[:i |
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2155
            |start_pc line_number|
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2156
330
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2157
            start_pc := inStream nextUnsignedShortMSB:msb.
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2158
            line_number := inStream nextUnsignedShortMSB:msb.
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2159
            line_number_table at:i put:(start_pc -> line_number).
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2160
        ].
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2161
        Verbose ifTrue:[Transcript showCR:'method has a lineNumberTable'].
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2162
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2163
        aJavaMethod setLineNumberTable:line_number_table.
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2164
    ].
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2165
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2166
    ^ true
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2167
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2168
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2169
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2170
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/Boolean.class'
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2171
    "
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2172
330
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2173
    "Created: / 15.4.1996 / 15:40:17 / cg"
c452e536a822 checkin from browser
cg
parents: 327
diff changeset
  2174
    "Modified: / 7.4.1998 / 19:08:42 / cg"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2175
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  2176
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2177
readLocalVariableTableAttributeFor:aJavaMethod
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2178
    |attribute_length local_variable_table_length local_variable_table|
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2179
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2180
    attribute_length := inStream nextUnsignedLongMSB:msb.
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2181
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2182
    local_variable_table_length := inStream nextUnsignedShortMSB:msb.
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2183
    local_variable_table_length ~~ 0 ifTrue:[
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2184
	local_variable_table := JavaLocalVariableTable new:local_variable_table_length.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2185
	1 to:local_variable_table_length do:[:i |
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2186
	    |start_pc length name_index sig_index slot name signature|
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2187
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2188
	    start_pc := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2189
	    length := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2190
	    name_index := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2191
	    name := constants at:name_index.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2192
	    sig_index := inStream nextUnsignedShortMSB:msb.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2193
	    signature := constants at:sig_index.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2194
	    slot := inStream nextUnsignedShortMSB:msb.
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2195
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2196
	    local_variable_table at:i put:(JavaLocalVariableTableEntry new 
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2197
						startPC:start_pc 
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2198
						length:length
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2199
						name:name
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2200
						signature:signature
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2201
						slot:slot)
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 229
diff changeset
  2202
	].
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2203
    ].
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2204
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  2205
    Verbose ifTrue:[Transcript showCR:'method has a localvariableTable'].
50
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2206
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2207
    aJavaMethod setLocalVariableTable:local_variable_table.
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2208
    ^ true
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2209
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2210
    "
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2211
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2212
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/Boolean.class'
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2213
    "
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2214
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2215
    "Modified: 15.4.1996 / 15:33:28 / cg"
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2216
    "Created: 15.4.1996 / 15:40:17 / cg"
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2217
!
458467ce0e15 checkin from browser
cg
parents: 43
diff changeset
  2218
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2219
readMethodFor:aClass
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2220
    |m access_flags name_index name descriptor_index descriptor
273
bcbea5ac4860 checkin from browser
cg
parents: 269
diff changeset
  2221
     tooManyArgs|
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2222
083530508d9c intitial checkin
cg
parents:
diff changeset
  2223
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  2224
    "/ get a method
083530508d9c intitial checkin
cg
parents:
diff changeset
  2225
    "/
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2226
    access_flags := inStream nextUnsignedShortMSB:msb.
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2227
    name_index := inStream nextUnsignedShortMSB:msb.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2228
    descriptor_index := inStream nextUnsignedShortMSB:msb.
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2229
5
f026f5d20c15 checkin from browser
cg
parents: 3
diff changeset
  2230
    name := constants at:name_index.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2231
    descriptor := constants at:descriptor_index.
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2232
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2233
    Verbose ifTrue:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2234
        Transcript show:'method name:'; showCR:name.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2235
        Transcript show:'descriptor:'; showCR:descriptor.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2236
    ].
9
bc65152d7610 can no read (undoc) 3.45 format
cg
parents: 7
diff changeset
  2237
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2238
    aClass isJavaClass ifTrue:[
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2239
        (access_flags bitAnd:ACC_NATIVE) ~~ 0 ifTrue:[
612
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2240
            m := JavaNativeMethod new.
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2241
        ] ifFalse:[
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2242
            m := JavaMethodWithHandler new.
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2243
        ].
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2244
        m setAccessFlags:access_flags.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2245
        m setJavaClass:aClass.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2246
        tooManyArgs := false.
2142
4836ff0780cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2115
diff changeset
  2247
        ArgumentError handle:[:ex |
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2248
            Logger log: 'java method has too many arguments - will fail to execute' severity: #warn facility: 'JVM'.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2249
            tooManyArgs := true.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2250
            ex proceed.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2251
        ] do:[
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2252
            m setName:name descriptor:descriptor.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2253
        ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2254
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2255
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2256
        self readAttributesFor:m.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2257
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2258
        tooManyArgs ifTrue:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2259
            m code:nil.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2260
            m byteCode:nil.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2261
        ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2262
423
08af061c56a8 javaClass now uses its fullName in name
cg
parents: 407
diff changeset
  2263
        (m exceptionHandlerTable isNil) ifTrue:[
612
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2264
            m isNative ifFalse:[
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2265
                m getExceptionTable isNil ifTrue:[
612
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2266
                    m := JavaMethod fromMethod:m
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2267
                ] ifFalse:[
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2268
                    m := JavaMethodWithException fromMethod:m
00e005c99126 create JavaNativeMethod instances for native methods.
cg
parents: 583
diff changeset
  2269
                ]
423
08af061c56a8 javaClass now uses its fullName in name
cg
parents: 407
diff changeset
  2270
            ]
468
4d4f1cb9786b *** empty log message ***
cg
parents: 454
diff changeset
  2271
        ] ifFalse:[
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2272
            | newAccessFlags |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2273
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2274
            newAccessFlags := m accessFlags.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2275
            newAccessFlags := newAccessFlags bitOr:ACX_HASHANDLER.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2276
            m hasFinallyBasedOnExceptionTable ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2277
                newAccessFlags := newAccessFlags bitOr:ACX_HASFINALLY.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2278
            ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2279
            m setAccessFlags:newAccessFlags.
386
ed3f417b7d02 checkin from browser
cg
parents: 376
diff changeset
  2280
        ].
2428
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2281
        self addSelector: (name , descriptor) asSymbol withMethod: m toClass: aClass.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2282
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2283
        ( m selector == #'finalize()V' ) ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2284
            ( aClass name ~~ #'java/lang/Object' ) ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2285
                aClass setAccessFlags: (aClass accessFlags bitOr:ACX_HASFINALIZE)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2286
            ]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2287
        ].
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2288
    ] ifFalse:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2289
        m := Method new.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2290
        self readAttributesFor:m.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2291
        (access_flags bitTest:ACC_STATIC) ifTrue:[
2428
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2292
            self addSelector:name asSymbol withMethod:m toClass: aClass class.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2293
        ] ifFalse:[
2428
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2294
            self addSelector:name asSymbol withMethod:m toClass: aClass.
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2295
        ]
273
bcbea5ac4860 checkin from browser
cg
parents: 269
diff changeset
  2296
    ].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2297
083530508d9c intitial checkin
cg
parents:
diff changeset
  2298
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2299
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  2300
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2301
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2302
    "Created: / 15-04-1996 / 16:48:49 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2303
    "Modified: / 25-09-1999 / 23:16:25 / cg"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2304
    "Modified: / 28-10-2011 / 16:56:48 / m"
2428
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2305
    "Modified: / 26-02-2013 / 12:45:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2306
!
083530508d9c intitial checkin
cg
parents:
diff changeset
  2307
38
3f1b61722466 checkin from browser
cg
parents: 32
diff changeset
  2308
readMethodsFor:aJavaClass
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2309
    |methodsCount method|
083530508d9c intitial checkin
cg
parents:
diff changeset
  2310
083530508d9c intitial checkin
cg
parents:
diff changeset
  2311
    "/
083530508d9c intitial checkin
cg
parents:
diff changeset
  2312
    "/ get methods
083530508d9c intitial checkin
cg
parents:
diff changeset
  2313
    "/
128
acc4e8e77092 *** empty log message ***
cg
parents: 122
diff changeset
  2314
    methodsCount := inStream nextUnsignedShortMSB:msb.
61
ff1579eb825f showCr: -> showCR:
cg
parents: 60
diff changeset
  2315
    Verbose ifTrue:[Transcript show:'methodsCount = '; showCR:methodsCount].
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2316
083530508d9c intitial checkin
cg
parents:
diff changeset
  2317
    1 to:methodsCount do:[:i |
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2318
        Verbose ifTrue:[Transcript show:'method: '; showCR:i].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2319
        method := self readMethodFor:aJavaClass
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2320
    ].
083530508d9c intitial checkin
cg
parents:
diff changeset
  2321
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2322
    Smalltalk changed: #methodDictionary with: aJavaClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2323
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2324
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2325
     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
083530508d9c intitial checkin
cg
parents:
diff changeset
  2326
    "
083530508d9c intitial checkin
cg
parents:
diff changeset
  2327
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2328
    "Created: / 15-04-1996 / 16:46:30 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2329
    "Modified: / 08-05-1998 / 21:20:59 / cg"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2330
    "Modified: / 04-04-2012 / 01:18:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2331
! !
083530508d9c intitial checkin
cg
parents:
diff changeset
  2332
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2333
!JavaClassReader methodsFor:'file reading - methods-ST'!
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2334
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2335
readSTCodeAttributeFor:aSmalltalkMethod
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2336
    |attribute_length max_stack max_locals code_length code
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2337
     exception_table_length unknown1 unknown2|
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2338
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2339
    attribute_length := inStream nextUnsignedLongMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2340
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2341
    Verbose ifTrue:[Transcript show:'attribute_length: 0x'; showCR:(attribute_length printStringRadix:16)].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2342
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2343
    max_stack := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2344
    max_locals := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2345
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2346
    code_length := inStream nextUnsignedLongMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2347
    Verbose ifTrue:[Transcript show:'code_length: '; showCR:(code_length printStringRadix:16)].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2348
    Verbose ifTrue:[Transcript show:'code at pos: '; showCR:inStream position].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2349
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2350
    code_length ~~ 0 ifTrue:[
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2351
        code := ByteArray new:code_length.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2352
        inStream nextBytes:code_length into:code startingAt:1.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2353
    ].
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2354
    Verbose ifTrue:[Transcript show:'method code: '; showCR:code.].
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2355
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2356
    exception_table_length := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2357
    Verbose ifTrue:[Transcript show:'exception_table_length: '; showCR:(exception_table_length printStringRadix:16)].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2358
    exception_table_length ~~ 0 ifTrue:[
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2359
        self error:'unexpected exceptionTable length'.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2360
        "/ skip it.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2361
        1 to:exception_table_length do:[:i |
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2362
            "start_pc :="   inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2363
            "end_pc :="     inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2364
            "handler_pc :=" inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2365
            "catch_type :=" inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2366
        ].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2367
    ].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2368
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2369
    aSmalltalkMethod byteCode:code. 
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2370
    aSmalltalkMethod stackSize:max_stack .
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2371
    aSmalltalkMethod numberOfVars:max_locals. 
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2372
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2373
    self readAttributesFor:aSmalltalkMethod.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2374
    ^ true
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2375
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2376
    "Modified: / 16.5.1998 / 01:39:30 / cg"
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2377
!
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2378
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2379
readSTLiteralsAttributeFor:aSmalltalkMethod
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2380
    |attribute_length literal_table_length literal_table litIndex literal|
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2381
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2382
    attribute_length := inStream nextUnsignedLongMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2383
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2384
    literal_table_length := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2385
    literal_table_length ~~ 0 ifTrue:[
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2386
        literal_table := Array new:literal_table_length.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2387
        1 to:literal_table_length do:[:i |
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2388
            litIndex := inStream nextUnsignedShortMSB:msb.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2389
            literal := (constants at:litIndex).
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2390
            literal_table at:i put:literal.
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2391
        ].
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2392
    ].
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2393
    Verbose ifTrue:[Transcript show:'literals: '; showCR:literal_table storeString.].
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2394
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2395
    "Created: / 7.5.1998 / 11:52:28 / cg"
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2396
    "Modified: / 16.5.1998 / 01:52:27 / cg"
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2397
!
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2398
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2399
readSTMethodCategoryAttributeFor:aSmalltalkMethod
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2400
    |attribute_length name_index name|
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2401
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2402
    attribute_length := inStream nextUnsignedLongMSB:msb.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2403
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2404
    name_index := inStream nextUnsignedShortMSB:msb.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2405
    name := (constants at:name_index).
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2406
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2407
    aSmalltalkMethod category:name.
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2408
348
10725e1a2aee more st-class reading
cg
parents: 344
diff changeset
  2409
    "Modified: / 8.5.1998 / 20:39:59 / cg"
357
90d866d87398 more st-class reading
cg
parents: 355
diff changeset
  2410
    "Created: / 16.5.1998 / 01:04:19 / cg"
344
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2411
! !
e97744a854f7 code cleanup;
cg
parents: 335
diff changeset
  2412
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2413
!JavaClassReader methodsFor:'helpers'!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2414
2428
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2415
addSelector: selector withMethod: method toClass: javaClass
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2416
    "Basically a primAddSelector:withMethod:. This indirection
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2417
     is required by Expecco (it uses custom class reader so
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2418
     which overrides this method"
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2419
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2420
    javaClass primAddSelector:selector withMethod: method
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2421
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2422
    "Created: / 26-02-2013 / 11:42:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2423
!
392a2eba9c42 Cherry-picked JavaClassReader from rev 8762fc7137c6.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
  2424
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2425
loadSuperclassIdentifiedBy: something ignoring: classesBeingLoaded 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2426
    "overriding method, here we expect something to be new JavaClassRef2"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2427
    
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2428
    self assert: something isJavaRef
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2429
        message: 'class identifier is not a java reference'.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2430
    self assert: something isJavaClassRef
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2431
        message: 'class identifier is not a java class reference'.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2432
    (classesBeingLoaded includes: something name) ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2433
        self 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2434
            error: 'class we want to load is being loaded and that means something went wrong. tell mh'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2435
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2436
     "hint in case of bug - is parent of something set? surely jv will know more :)" "find out which classloader is used"
2588
58b1e0fd20e7 Changed JavaVM>>classForName: to faster JavaVM>>classForName:definedBy:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2437
    ^ JavaVM classForName: something name definedBy: classLoader.
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2438
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2439
    "Created: / 18-05-2011 / 14:55:32 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2588
58b1e0fd20e7 Changed JavaVM>>classForName: to faster JavaVM>>classForName:definedBy:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
  2440
    "Modified: / 07-05-2013 / 12:24:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2441
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2442
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2443
updateOwnerInCPItem: each 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2444
    ((each isJavaRef and: [ each isNewJavaRef ]) 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2445
        or: [ each isJavaNameAndType and: [ each isNewJavaNameAndType ] ]) 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2446
            ifTrue: [ each owner: classBeingLoaded ].
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2447
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2448
    "Created: / 12-05-2011 / 17:40:46 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2449
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2450
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2451
updateOwnerInField: each 
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2452
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2453
            each setClass: classBeingLoaded.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2454
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2455
    "Created: / 18-05-2011 / 13:57:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2456
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2457
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2458
!JavaClassReader methodsFor:'logging'!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2459
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2460
info: message 
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2461
    Verbose ifTrue: [ Logger log: message severity: #info facility: 'JVM' ].
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2462
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2463
    "Created: / 18-05-2011 / 15:06:06 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2464
    "Modified (format): / 14-09-2011 / 21:39:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2465
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2466
135
098936234135 *** empty log message ***
cg
parents: 128
diff changeset
  2467
!JavaClassReader class methodsFor:'documentation'!
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2468
083530508d9c intitial checkin
cg
parents:
diff changeset
  2469
version
2460
f89d54b4673c class: JavaClassReader
Claus Gittinger <cg@exept.de>
parents: 2428
diff changeset
  2470
    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.97 2013-03-18 16:59:01 cg Exp $'
2148
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  2471
!
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  2472
b51eb5830f48 added:11 methods
Claus Gittinger <cg@exept.de>
parents: 2142
diff changeset
  2473
version_CVS
2460
f89d54b4673c class: JavaClassReader
Claus Gittinger <cg@exept.de>
parents: 2428
diff changeset
  2474
    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.97 2013-03-18 16:59:01 cg Exp $'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2475
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2476
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2148
diff changeset
  2477
version_SVN
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2478
    ^ '§Id§'
1
083530508d9c intitial checkin
cg
parents:
diff changeset
  2479
! !
2108
ca8c4e7db2e8 category change
Claus Gittinger <cg@exept.de>
parents: 2089
diff changeset
  2480
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2151
diff changeset
  2481
2089
f90b44f9c9e0 utf8 string decoding
Claus Gittinger <cg@exept.de>
parents: 749
diff changeset
  2482
JavaClassReader initialize!