JavaClassReloader.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 15 Jul 2014 13:07:51 +0100
changeset 3157 3aa14b90dacd
parent 3067 4bbacafb9592
child 3173 26dd7e06c4bb
permissions -rw-r--r--
Removed code for flushing shared compiler Environment. Once we have fully reflective environment, we don't have to cache it amd thus there's no need to flush it. In fact, method stx.libjava.tools.environment.Environment#shared() has been removed.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
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:
diff changeset
     5
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 This software is furnished under a license and may be used
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 hereby transferred.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
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:
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:
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:
diff changeset
    19
     as of 1.9.2010
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
Object subclass:#JavaClassReloader
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'Languages-Java-Support'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    30
Notification subclass:#RecompileRequest
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    31
	instanceVariableNames:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    32
	classVariableNames:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    33
	poolDictionaries:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    34
	privateIn:JavaClassReloader
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    35
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    36
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    37
Notification subclass:#ReloadRequest
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    38
	instanceVariableNames:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    39
	classVariableNames:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    40
	poolDictionaries:''
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    41
	privateIn:JavaClassReloader
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    42
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
    43
2830
853c11fe1ce8 wire in requestRecompile sends
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2822
diff changeset
    44
JavaClassReloader subclass:#SingleClassReloader
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
	instanceVariableNames:'oldClass newClass mustMigrateInstances mustMigrateClass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
		instFieldMapping staticFieldMapping'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
	classVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
	privateIn:JavaClassReloader
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
Object subclass:#FieldMapping
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
	instanceVariableNames:'old new'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
	classVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
	privateIn:JavaClassReloader::SingleClassReloader
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
!JavaClassReloader class methodsFor:'documentation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
copyright
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
 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:
diff changeset
    66
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
                            SWING Research Group, Czech Technical University in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
 This software is furnished under a license and may be used
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
 only in accordance with the terms of that license and with the
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
 inclusion of the above copyright notice.   This software may not
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
 be provided or otherwise made available to, or used by, any
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
 other person.  No title to or ownership of the software is
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
 hereby transferred.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
 [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:
diff changeset
    78
     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:
diff changeset
    79
     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:
diff changeset
    80
     as of 1.9.2010
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
documentation
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    A main workhorse for reloading (updating) java classes
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    in running system.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    [author:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
        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:
diff changeset
    92
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    [instance variables:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    [class variables:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    [see also:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!JavaClassReloader class methodsFor:'reloading'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
reload: oldClass with: newClass
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   105
    "Update old class to match the definition of newClass"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    ^ self new reload: oldClass with: newClass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    "Created: / 20-02-2012 / 23:29:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   109
    "Modified (comment): / 14-09-2013 / 15:51:32 / 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:
diff changeset
   110
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   112
!JavaClassReloader class methodsFor:'reloading-requests'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   113
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   114
requestRecompile: aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   115
    RecompileRequest newException
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   116
        parameter: aJavaClass;
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   117
        raiseRequest
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   118
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   119
    "Created: / 08-10-2013 / 19:26:20 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   120
    "Modified: / 13-10-2013 / 20:40:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   121
    "Modified: / 15-10-2013 / 01:19:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   122
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   123
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   124
requestReload: aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   125
    ReloadRequest newException
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   126
        parameter: aJavaClass;
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   127
        raiseRequest
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   128
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   129
    "Created: / 08-10-2013 / 19:26:12 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   130
    "Modified: / 15-10-2013 / 01:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   131
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   132
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
!JavaClassReloader methodsFor:'reloading'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
reload: oldClass with: newClass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   137
    | newClassToInstall recompileRequests reloadRequests |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   138
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   139
    reloadRequests := Set new.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   140
    recompileRequests := Set new.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   141
    [
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   142
        newClassToInstall := SingleClassReloader new reload: oldClass with: newClass.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   143
        "Also, reload all subclasses - fields may have changed!!"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   144
        newClassToInstall ~~ oldClass ifTrue: [
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   145
            oldClass mergeVersionsWith: newClassToInstall.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   146
            oldClass subclassesDo:[:oldSubclass|
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   147
                | newSubclass |
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   149
                newSubclass := oldSubclass copy.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   150
                newSubclass setSuperclass: newClassToInstall.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   151
                newSubclass instSize: (newClassToInstall instSize + oldSubclass fields size).
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   152
                self requestReload: newSubclass.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   153
            ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   154
        ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   155
    ] on: RecompileRequest do:[:recompileRequest |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   156
        "/ Catch all recompile requests
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   157
        (recompileRequests contains:[:each | each parameter == recompileRequest parameter]) ifFalse:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   158
            recompileRequests add: recompileRequest 
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   159
        ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   160
        recompileRequest proceed.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   161
    ] on: ReloadRequest do:[:reloadRequest |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   162
        "/ Catch all reload requests
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   163
        (reloadRequests contains:[:each | each parameter == reloadRequest parameter]) ifFalse:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   164
            reloadRequests add: reloadRequest 
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   165
        ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   166
        reloadRequest proceed.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   167
    ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   168
    "/ Remove all reload request for classes for which there have been
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   169
    "/ recompile request as recompile implies reload...
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   170
    reloadRequests := reloadRequests reject:[:each | recompileRequests contains:[:eachRecompile | each parameter == eachRecompile parameter]].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   171
    "/ Now execute all deferred recompile/reload requests.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   172
    recompileRequests do:[:each | each recompile ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   173
    reloadRequests do:[:each | each reload ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    ^newClassToInstall.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
    "Created: / 04-04-2012 / 01:32:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2830
853c11fe1ce8 wire in requestRecompile sends
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2822
diff changeset
   178
    "Modified: / 13-10-2013 / 20:52:58 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   179
    "Modified: / 15-10-2013 / 01:16:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   180
!
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   181
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   182
unload: oldClass
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   183
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   184
    oldClass subclassesDo:[:cls | 
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   185
        JavaVM registry unregisterClass: cls 
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   186
    ].
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   187
    JavaVM registry allClassesDo:[:cls|        
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   188
        "/ JV: Q: Should we remove all users of the interface? Let's do it, but not
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   189
        "/        sure if that's necessary/desirable
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   190
        | ifaces |
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   191
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   192
        ifaces := cls getInterfaces.
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   193
        ifaces notNil ifTrue:[
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   194
            (ifaces  anySatisfy:[:ref|
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   195
                    ref isJavaClass ifTrue:[
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   196
                        ref == oldClass
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   197
                    ] ifFalse:[
2857
10c0fcf2d304 Fix JavaClassReloader for new naming (#name -> #binaryName)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2830
diff changeset
   198
                        ref name =  oldClass binaryName
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   199
                    ]
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   200
            ]) ifTrue:[
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   201
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   202
                JavaVM registry unregisterClass: cls
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   203
            ].
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   204
        ].
2857
10c0fcf2d304 Fix JavaClassReloader for new naming (#name -> #binaryName)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2830
diff changeset
   205
        cls constantPool invalidateForClass: oldClass binaryName
2730
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   206
    ]
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   207
272689c14005 Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2651
diff changeset
   208
    "Created: / 14-09-2013 / 15:53:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   209
    "Modified: / 09-04-2014 / 18:43:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   210
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   211
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   212
!JavaClassReloader methodsFor:'reloading-requests'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   213
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   214
requestRecompile:aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   215
    ^ self class requestRecompile:aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   216
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   217
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   218
requestReload:aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   219
    ^ self class requestReload:aJavaClass
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   220
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   221
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   222
!JavaClassReloader::RecompileRequest methodsFor:'default actions'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   223
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   224
defaultAction
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   225
    "the default action is to return the default value.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   226
     Subclasses may redefine this"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   227
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   228
    ^ self recompile
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   229
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   230
    "Created: / 15-10-2013 / 00:31:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   231
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   232
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   233
recompile
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   234
    JavaCompiler recompile: self parameter
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   235
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   236
    "Created: / 15-10-2013 / 00:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   237
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   238
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   239
!JavaClassReloader::ReloadRequest methodsFor:'default actions'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   240
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   241
defaultAction
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   242
    "the default action is to return the default value.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   243
     Subclasses may redefine this"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   244
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   245
    ^ self reload
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   246
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   247
    "Created: / 15-10-2013 / 00:37:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   248
!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   249
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   250
reload
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   251
    JavaVM registry registerClass: self parameter.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   252
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   253
    "Created: / 15-10-2013 / 00:49:06 / 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:
diff changeset
   254
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
!JavaClassReloader::SingleClassReloader methodsFor:'private'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
invalidate
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
    | anyInvalidated |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
    anyInvalidated := false.
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   263
    JavaVM registry allClassesDo:[:class|
2758
06599146279d fix JavaClassReloader>>invalidate
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2742
diff changeset
   264
        anyInvalidated := (self invalidateClass: class) | anyInvalidated.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    anyInvalidated ifTrue:[ObjectMemory flushCaches].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
2868
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   268
    "
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   269
    Eclipse Compiler for Java is too smart - when a field is not accessible, it doesn't generate
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   270
    GETFIELD instructions, it generates ATHROW which throws stx.libjava.tools.compiler.CompileError
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   271
    (originally, it throws java.lang.Error, but we hacked it - see CompilerError static initializer.
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   272
2868
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   273
    Here we recompile all classes with CompileError - just to be safe.
90724c4fa7f8 Fix to recompile erroneous classes upon reload.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2865
diff changeset
   274
    "
2872
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   275
    "/JavaCompiler recompileErroneousClassesReferringTo: newClass ignoring: oldClass.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   276
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   277
    "Created: / 21-02-2012 / 09:47:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   278
    "Modified: / 02-10-2013 / 23:27:59 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   279
    "Modified: / 09-04-2014 / 18:43:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2872
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   280
!
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   281
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   282
invalidateClass: javaClass 
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   283
    ^ javaClass ~~ oldClass and:[javaClass constantPool invalidateForClass: oldClass binaryName]
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
    "Created: / 21-02-2012 / 09:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2830
853c11fe1ce8 wire in requestRecompile sends
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2822
diff changeset
   286
    "Modified (format): / 13-10-2013 / 20:43:57 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2872
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2868
diff changeset
   287
    "Modified: / 17-10-2013 / 02:34:07 / 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:
diff changeset
   288
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
migrate
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
    "Possibly migrate instances and class. Return the class that should
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
     be installed in registry once reloader finishes his job.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
     
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
     At this point, all references are already invalidated (see #reload)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
     "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
    mustMigrateInstances ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
        self migrateInstances.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
        mustMigrateClass ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
            self migrateClass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
        ^newClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    mustMigrateClass ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
        self migrateClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
        ^newClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    self updateOldClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    ^oldClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
    "Created: / 20-02-2012 / 23:40:03 / 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:
diff changeset
   313
    "Modified (comment): / 16-12-2012 / 17:39:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
migrateClass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
    "/self error:'Not yet supported'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    "Created: / 21-02-2012 / 11:04:48 / 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:
diff changeset
   321
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
migrateInstance: object
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    self assert: object class == oldClass.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    "Created: / 30-03-2012 / 19:42:12 / 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:
diff changeset
   328
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
migrateInstances
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    oldClass allInstancesDo:[:i|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
        self migrateInstance:i.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    "Created: / 21-02-2012 / 11:04:47 / 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:
diff changeset
   337
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
prepare
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
    "Analyze and prepare data for reloading" 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
    self prepareInstFieldMapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
    self prepareStaticFieldMapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    "Created: / 20-02-2012 / 23:40:02 / 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:
diff changeset
   346
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
prepareFieldMap: fields
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
    | map |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
    map := Dictionary new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
    fields do:[ :field | map at: field name put: field ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
    ^map
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
    "Created: / 21-02-2012 / 09:42:17 / 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:
diff changeset
   356
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
prepareInstFieldMapping
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
    "Scans both old and new class inst fields and create a mapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
     Sets mustMigrateInstances"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
    | newFields |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    mustMigrateInstances := false.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    instFieldMapping := Set new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
    newFields := self prepareFieldMap: newClass allFields.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
    oldClass fields do:[:old|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
        | new mapping |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
        new := newFields at: old name ifAbsent:[nil].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
        new notNil ifTrue:[ newFields removeKey: old name ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
        mapping := FieldMapping old: old new: new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
        mustMigrateInstances := mustMigrateInstances or:[mapping mustMigrate].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
        instFieldMapping add: mapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
    "Remaining fields are new, i.e., does not exist in
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
     old class. Add them to the mapping"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
    newFields do:[:new|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
        instFieldMapping add: (FieldMapping old: nil new: new).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
        mustMigrateInstances := true
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    "Created: / 21-02-2012 / 09:32:25 / 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:
diff changeset
   384
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
prepareStaticFieldMapping
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
    "Scans both old and new class inst fields and create a mapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
     Sets mustMigrateInstances"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
    | newFields |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
    mustMigrateClass := false.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
    staticFieldMapping := Set new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
    newFields := self prepareFieldMap: newClass allStaticFields.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
    oldClass staticFields do:[:old|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
        | new mapping |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
        new := newFields at: old name ifAbsent:[nil].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
        new notNil ifTrue:[ newFields removeKey: old name ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
        mapping := FieldMapping old: old new: new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
        mustMigrateClass:= mustMigrateClass or:[mapping mustMigrate].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
        staticFieldMapping add: mapping.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
    "Remaining fields are new, i.e., does not exist in
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
     old class. Add them to the mapping"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
    newFields do:[:new|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
        staticFieldMapping add: (FieldMapping old: nil new: new).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
        mustMigrateClass:= true
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
    "Created: / 21-02-2012 / 09:45:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2892
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   412
!
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   413
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   414
updateOldClass
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   415
    "At this point we know that both classes have same layout. So we can
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   416
     simply copy methods and other info from new class to old one. 
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   417
     References must be flushed anyway!! We need to copy constant pool over,
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   418
     indices may have changed. And we will copy fields as well, types may
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   419
     have been generalized.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   420
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   421
     Also, here we also track method added and removed and if either
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   422
     one is an overload, request recompile of all dependent classes.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   423
    "
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   424
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   425
    | oldMethods oldMethodsRemoved newMethods newMethodsAdded |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   426
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   427
    oldMethods := oldClass methodDictionary.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   428
    oldMethodsRemoved := oldMethods values asSet.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   429
    newMethods := newClass methodDictionary copy.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   430
    newMethodsAdded := Set new.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   431
    newMethods keysDo:[:selector|
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   432
        | oldM newM |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   433
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   434
        oldM := oldMethods at: selector ifAbsent:[nil].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   435
        newM := newMethods at: selector.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   436
        oldM notNil ifTrue:[
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   437
            oldMethodsRemoved remove: oldM.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   438
            (oldM canBeUpdatedFrom: newM) ifTrue:[
2900
894e894aa511 Fix in JavaClassReloader>>updateOldClass: update old method only if class of the method is the same.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2899
diff changeset
   439
                oldM class == newM class ifTrue:[
894e894aa511 Fix in JavaClassReloader>>updateOldClass: update old method only if class of the method is the same.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2899
diff changeset
   440
                    oldM updateFrom: newM.
894e894aa511 Fix in JavaClassReloader>>updateOldClass: update old method only if class of the method is the same.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2899
diff changeset
   441
                ].
2892
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   442
                newMethods at: selector put: oldM.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   443
            ]
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   444
        ] ifFalse:[
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   445
            newMethodsAdded add: newM.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   446
        ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   447
    ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   448
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   449
    newMethods do:[:m|m setJavaClass: oldClass].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   450
    oldClass setAttributes: newClass attributes.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   451
    oldClass annotations: newClass annotations.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   452
    oldClass setMethodDictionary: newMethods.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   453
    oldClass setConstantPool: newClass constantPool.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   454
    oldClass setSource: newClass sourceString.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   455
    oldClass setClassfileBytes: newClass classfileBytes.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   456
    oldClass setFields: newClass fields.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   457
    oldClass setStaticFields: newClass staticFields.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   458
    "Flush all proxies, they mau refer to old static methods"
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   459
    oldClass class setMethodDictionary: MethodDictionary new.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   460
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   461
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   462
    oldMethodsRemoved do:[:oldMRemoved |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   463
        oldMRemoved isJavaMethod ifTrue:[
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   464
            self requestRecompileSendersOf: oldMRemoved.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   465
        ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   466
    ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   467
    newMethodsAdded do:[:newMAdded |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   468
        | overloads name |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   469
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   470
        newMAdded isStatic ifFalse:[
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   471
            overloads := Set new.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   472
            name := newMAdded name.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   473
            self withAllSuperclassesAndInterfacesOf: newMAdded javaClass do:[:cls|
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   474
                cls methodDictionary keysAndValuesDo:[:selector :method |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   475
                    (method ~~ newMAdded and:[method isStatic not and:[method name = name]]) ifTrue:[
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   476
                        overloads add: method.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   477
                    ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   478
                ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   479
            ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   480
            overloads do:[:overloadedM |
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   481
                self requestRecompileSendersOf: overloadedM.
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   482
            ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   483
        ]
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   484
    ].
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   485
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   486
    "Created: / 16-12-2012 / 17:36:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
80bc02e62077 - JavaClassReloader
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2891
diff changeset
   487
    "Modified: / 12-10-2013 / 19:20:03 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2900
894e894aa511 Fix in JavaClassReloader>>updateOldClass: update old method only if class of the method is the same.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2899
diff changeset
   488
    "Modified: / 28-10-2013 / 11:38:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   489
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   490
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   491
!JavaClassReloader::SingleClassReloader methodsFor:'private-helpers'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   492
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   493
withAllSuperclassesAndInterfacesOf: aJavaClass do: aBlock
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   494
    | queue seen |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   495
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   496
    queue := OrderedCollection with: aJavaClass.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   497
    seen := Set new.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   498
    [ queue isEmpty ] whileFalse:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   499
        | cls |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   500
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   501
        cls := queue removeFirst.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   502
        (seen includes: cls) ifFalse:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   503
            seen add: cls.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   504
            aBlock value: cls.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   505
            queue addAll: cls interfaces.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   506
            cls superclass ~~ JavaObject ifTrue:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   507
                queue add: cls superclass.
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   508
            ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   509
        ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   510
    ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   511
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   512
    "Created: / 15-10-2013 / 01:55:36 / 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:
diff changeset
   513
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   514
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   515
!JavaClassReloader::SingleClassReloader methodsFor:'reloading'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   516
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   517
reload
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   518
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   519
    self prepare.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   520
    self invalidate.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   521
    ^self migrate.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   522
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   523
    "Created: / 20-02-2012 / 23:29:37 / 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:
diff changeset
   524
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   525
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   526
reload: oldClassA with: newClassA
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   527
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   528
    oldClass := oldClassA.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   529
    newClass := newClassA.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   530
    ^ self reload.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   531
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   532
    "Created: / 20-02-2012 / 23:29:37 / 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:
diff changeset
   533
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   534
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   535
!JavaClassReloader::SingleClassReloader methodsFor:'reloading-requests'!
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   536
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   537
requestRecompileSendersOf: givenMethod
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   538
    JavaVM registry allClassesDo:[:cls|
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   539
        | recompile |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   540
        recompile := cls constantPool contains:[:entry |
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   541
                        entry isJavaRef
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   542
                            and:[ entry isJavaMethodRef
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   543
                            and:[entry classRef name = givenMethod javaClass binaryName
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   544
                            and:[(entry nameAndType name , entry nameAndType descriptor) = givenMethod selector]]]].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   545
        recompile ifTrue:[
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   546
            self requestRecompile: cls.    
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   547
        ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   548
    ].
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   549
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   550
    "Created: / 15-10-2013 / 01:52:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3067
4bbacafb9592 Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2900
diff changeset
   551
    "Modified: / 09-04-2014 / 18:43:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   552
! !
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   553
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   554
!JavaClassReloader::SingleClassReloader::FieldMapping class methodsFor:'instance creation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   555
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   556
old: old new:new
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   557
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   558
    ^self new old: old new: new.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   559
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   560
    "Created: / 21-02-2012 / 09:20:35 / 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:
diff changeset
   561
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   562
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   563
!JavaClassReloader::SingleClassReloader::FieldMapping methodsFor:'accessing'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   564
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   565
new
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   566
    ^ new
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   567
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   568
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   569
new:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   570
    new := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   571
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   572
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   573
old
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   574
    ^ old
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   575
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   576
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   577
old:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   578
    old := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   579
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   580
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   581
old:oldArg new:newArg 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   582
    old := oldArg.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   583
    new := newArg.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   584
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   585
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   586
!JavaClassReloader::SingleClassReloader::FieldMapping methodsFor:'queries'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   587
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   588
mustMigrate
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   589
    "Returns true if the field must be migrated, false otherwise"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   590
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   591
    | oldD newD |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   592
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   593
    (old isNil or:[new isNil]) ifTrue:[ 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   594
        ^ true "Either one is missing, must migrate"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   595
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
    old index ~~ new index ifTrue:[
2858
3a85f55763e2 Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 1)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2857
diff changeset
   598
        ^ true "Offsets changed, must migrate"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
    oldD := old descriptor.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
    newD := new descriptor.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   603
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
    oldD = newD ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   605
        ^false"Same descriptor, the easy case"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   606
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   607
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
    (oldD first == $L and: [newD first == $L]) ifTrue:[
2822
751597d0526a do not migrate instances when type of the field is generalized
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2818
diff changeset
   609
        (oldD = newD) ifTrue: [ ^ true ] ifFalse: [
2899
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   610
            ^ [
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   611
                (old typeClass includesBehavior: new typeClass) not.    
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   612
            ] on: JAVA java lang ClassNotFoundException do:[
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   613
                false
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   614
            ]
2822
751597d0526a do not migrate instances when type of the field is generalized
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2818
diff changeset
   615
        ].
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   616
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   617
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   618
    1 to: (oldD size min: newD size) do:[:i|
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   619
        ((oldD at: i) == $L and: [ (newD at: i) == $L ]) ifTrue:[
2822
751597d0526a do not migrate instances when type of the field is generalized
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2818
diff changeset
   620
            (oldD = newD) ifTrue: [ ^ true ] ifFalse: [
2899
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   621
                ^ [
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   622
                    (old typeClass includesBehavior: new typeClass) not.    
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   623
                ] on: JAVA java lang ClassNotFoundException do:[
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   624
                    false
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   625
                ]
2822
751597d0526a do not migrate instances when type of the field is generalized
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2818
diff changeset
   626
            ].  
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
        ((oldD at: i) ~~ $[ or: [ (newD at: i) ~~ $[ ]) ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
            ^true"Different primitive/array types, must migrate"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   630
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   631
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   632
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   633
    ^false
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
    "Created: / 21-02-2012 / 10:57:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2822
751597d0526a do not migrate instances when type of the field is generalized
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2818
diff changeset
   636
    "Modified: / 12-10-2013 / 19:26:19 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2899
1dbc311e1d74 Bugfix JavaClassReloader: handle missing/mis-spelled classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2892
diff changeset
   637
    "Modified: / 28-10-2013 / 11:26:44 / 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:
diff changeset
   638
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   639
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   640
!JavaClassReloader class methodsFor:'documentation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   641
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   642
version_CVS
2678
c865275e48a7 Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2396
diff changeset
   643
    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReloader.st,v 1.3 2013-09-06 00:41:22 vrany Exp $'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   644
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   645
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   646
version_HG
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   647
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   648
    ^ '$Changeset: <not expanded> $'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   649
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   650
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   651
version_SVN
2731
13f5be2bf83b Merged d87e89dd5276 and fe83a843a7bf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2711 2678
diff changeset
   652
    ^ 'Id'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   653
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   654