src/JavaByteCodePreresolver.st
author hlopkmar
Mon, 13 Feb 2012 14:51:10 +0000
branchjk_new_structure
changeset 1362 6bd3666e865a
child 1379 74910191206d
permissions -rw-r--r--
forgotten preresolver classes :)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1362
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     1
"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     3
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     5
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     8
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
     9
 This software is furnished under a license and may be used
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    14
 hereby transferred.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    15
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    19
     as of 1.9.2010
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    20
"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    22
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    23
JavaByteCodeProcessorAdapter subclass:#JavaByteCodePreresolver
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    24
	instanceVariableNames:''
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    25
	classVariableNames:''
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    26
	poolDictionaries:''
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    27
	category:'Languages-Java-Bytecode'
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    28
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    29
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    30
!JavaByteCodePreresolver class methodsFor:'documentation'!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    31
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    32
copyright
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    33
"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    34
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    35
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    37
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    38
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    40
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    41
 This software is furnished under a license and may be used
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    42
 only in accordance with the terms of that license and with the
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    44
 be provided or otherwise made available to, or used by, any
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    45
 other person.  No title to or ownership of the software is
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    46
 hereby transferred.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    47
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    50
     see the differences between this version and version stx:libjava
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    51
     as of 1.9.2010
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    52
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    53
"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    54
! !
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    55
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    56
!JavaByteCodePreresolver methodsFor:'instructions'!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    57
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    58
anewarray
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    59
    (constantPool at: self fetchIndex2) resolve:false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    60
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    61
    "Modified: / 09-02-2012 / 23:06:29 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    62
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    63
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    64
checkcast
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    65
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    66
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    67
    "Modified: / 09-02-2012 / 23:06:34 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    68
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    69
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    70
getfield
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    71
    (constantPool at: self fetchIndex2) resolve:false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    72
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    73
    "Modified: / 09-02-2012 / 23:06:45 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    74
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    75
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    76
getstatic
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    77
    (constantPool at: self fetchIndex2) resolve:false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    78
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    79
    "Modified: / 09-02-2012 / 23:06:49 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    80
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    81
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    82
instanceof
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    83
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    84
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    85
    "Modified: / 09-02-2012 / 23:06:55 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    86
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    87
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    88
invinterface
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    89
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    90
    self fetchBytes2.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    91
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    92
    "Modified: / 09-02-2012 / 23:07:03 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    93
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    94
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    95
invnonvirt
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    96
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    97
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    98
    "Modified: / 09-02-2012 / 23:07:10 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
    99
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   100
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   101
invstatic
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   102
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   103
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   104
    "Modified: / 09-02-2012 / 23:07:15 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   105
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   106
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   107
invvirt
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   108
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   109
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   110
    "Modified: / 09-02-2012 / 23:07:20 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   111
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   112
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   113
multianewarray
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   114
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   115
    self fetchByte.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   116
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   117
    "Modified: / 09-02-2012 / 23:07:24 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   118
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   119
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   120
new
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   121
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   122
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   123
    "Modified: / 09-02-2012 / 23:07:29 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   124
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   125
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   126
putfield
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   127
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   128
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   129
    "Modified: / 09-02-2012 / 23:07:33 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   130
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   131
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   132
putstatic
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   133
    (constantPool at: self fetchIndex2) resolve: false.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   134
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   135
    "Modified: / 09-02-2012 / 23:07:38 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   136
! !
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   137
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   138
!JavaByteCodePreresolver methodsFor:'processing'!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   139
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   140
enterProcessingLoop
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   141
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   142
            [ pc < byteCode size ] whileTrue: [
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   143
                instrPointer := pc.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   144
                op := byteCode at: pc.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   145
                pc := pc + 1.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   146
                self switch: op.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   147
            ].
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   148
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   149
    "Created: / 09-02-2012 / 22:44:13 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   150
!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   151
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   152
preresolve: aJavaMethod 
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   153
|size argArray|
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   154
size := aJavaMethod javaNumArgs.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   155
    argArray := Array new: size.    
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   156
   self 
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   157
        process: aJavaMethod
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   158
        receiver: aJavaMethod javaClass
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   159
           arguments: argArray.
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   160
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   161
    "Created: / 09-02-2012 / 22:37:02 / mh <hlopik@gmail.com>"
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   162
! !
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   163
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   164
!JavaByteCodePreresolver class methodsFor:'documentation'!
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   165
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   166
version_SVN
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   167
    ^ '$Id$'
6bd3666e865a forgotten preresolver classes :)
hlopkmar
parents:
diff changeset
   168
! !