JavaClassRegistry.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 25 Jan 2013 00:15:51 +0000
branchrefactoring-classpath
changeset 2000 13a10b73aa83
parent 1995 b129fd0a81e4
child 2037 6b93bf17087a
permissions -rw-r--r--
Closing branch refactoring-classpath
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     1
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
     3
1155
vranyj1
parents: 1152
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
     5
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     8
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     9
 This software is furnished under a license and may be used
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    14
 hereby transferred.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    15
1155
vranyj1
parents: 1152
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    18
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
    19
     as of 1.9.2010
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    20
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    22
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    23
Object subclass:#JavaClassRegistry
1570
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
    24
	instanceVariableNames:'vm loaders notifier'
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    25
	classVariableNames:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    26
	poolDictionaries:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    27
	category:'Languages-Java-Support'
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    28
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    29
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    30
!JavaClassRegistry class methodsFor:'documentation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    31
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    32
copyright
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    33
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    34
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
    35
1155
vranyj1
parents: 1152
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
    37
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    38
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    40
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    41
 This software is furnished under a license and may be used
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    42
 only in accordance with the terms of that license and with the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    44
 be provided or otherwise made available to, or used by, any
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    45
 other person.  No title to or ownership of the software is
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    46
 hereby transferred.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    47
1155
vranyj1
parents: 1152
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    50
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 1120
diff changeset
    51
     as of 1.9.2010
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    52
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    53
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    54
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    55
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    56
!JavaClassRegistry class methodsFor:'instance creation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    57
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    58
for: aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    59
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    60
    ^self new setVM: aJavaVM.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    61
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    62
    "Created: / 21-12-2010 / 19:42:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    63
!
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    64
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    65
new
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    66
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    67
    ^ self basicNew initialize.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    68
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    69
    "Modified (format): / 30-10-2011 / 12:07:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    70
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    71
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    72
!JavaClassRegistry methodsFor:'accessing'!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    73
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    74
classForName: className loader: classLoader ifAbsent: aBlock 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    75
    "Get class loaded by given classLoader from registry or evaluate aBlock if class is not yet registered"
1038
bf2ece5a5362 Few fixes
vranyj1
parents: 1037
diff changeset
    76
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    77
    | classes class |
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    78
1062
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
    79
    self assert: (className includes: $.) not.
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
    80
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    81
    "Classes loaded by primordial classloader are always
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    82
     used"
1038
bf2ece5a5362 Few fixes
vranyj1
parents: 1037
diff changeset
    83
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    84
    classLoader notNil ifTrue:[
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    85
        classes := loaders at: nil ifAbsent: nil.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    86
        class := classes at: className ifAbsent: nil.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    87
        class notNil ifTrue:[
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    88
            ^class.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    89
        ]
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    90
    ].
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    91
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    92
    "No bootstrap class found, search given classloader"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    93
    classes := loaders at: classLoader ifAbsent: [^aBlock value].
1038
bf2ece5a5362 Few fixes
vranyj1
parents: 1037
diff changeset
    94
    ^classes at: className ifAbsent: aBlock
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    95
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    96
    "Modified: / 21-10-2011 / 12:39:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    97
    "Created: / 23-10-2011 / 11:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    98
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
    99
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   100
classForName: className loader: classLoader ifAbsentPut: block 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   101
    "Get class loaded by classLoader from registry. if absent block is evaluated and resulting class in registered in registry, "
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   102
    
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   103
    | class |
1062
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
   104
    self assert: (className includes: $.) not.
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   105
     "if class is already registered with the same cl, just return it"
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   106
    class := self classNamed: className loader: classLoader.
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   107
    class notNil ifTrue: [ ^ class ].
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   108
    "if java vm is booted, nil class loader means system class loader, lets check it too"
1995
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   109
    (vm booted and: [classLoader isNil]) ifTrue: [
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   110
        class := self classNamed: className loader: vm systemClassLoader. 
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   111
        class notNil ifTrue: [^class]
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   112
    ].
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   113
     "otherwise evaluate block"
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   114
    class := block value.
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   115
    class notNil ifTrue: [
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   116
    self registerClass: class.].
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   117
    ^ class.
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   118
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   119
    "Created: / 21-10-2011 / 12:00:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   120
    "Created: / 23-10-2011 / 11:36:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   121
    "Modified: / 02-11-2011 / 17:29:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1995
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   122
    "Modified (format): / 24-01-2013 / 11:19:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   123
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   124
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   125
classNamed: className
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   126
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   127
    "Return a class for given classname loaded by 'current classloader' or 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   128
     nil if not yet loaded"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   129
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   130
    ^self classNamed: className loader: JavaClassReader classLoaderQuerySignal query
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   131
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   132
    "Created: / 23-10-2011 / 12:23:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   133
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   134
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   135
classNamed: className loader: classLoader
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   136
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   137
    "Return a class for given classname loaded by given classloader or 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   138
     nil if not yet loaded"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   139
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   140
    ^self classForName: className loader: classLoader ifAbsent:[nil].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   141
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   142
    "Created: / 23-10-2011 / 12:23:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1039
vranyj1
parents: 1038
diff changeset
   143
!
vranyj1
parents: 1038
diff changeset
   144
vranyj1
parents: 1038
diff changeset
   145
classes
vranyj1
parents: 1038
diff changeset
   146
vranyj1
parents: 1038
diff changeset
   147
    ^Iterator on:[:whatToDo|self classesDo: whatToDo]
vranyj1
parents: 1038
diff changeset
   148
vranyj1
parents: 1038
diff changeset
   149
    "Created: / 23-10-2011 / 20:14:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1612
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   150
!
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   151
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   152
systemPackage: syspkg
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   153
    "Return name (as string) of system package named syspkg or nil if no such package is loaded"
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   154
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   155
    | classes syspkgSlashed |
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   156
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   157
    classes := loaders at: nil ifAbsent:[nil].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   158
    classes isEmptyOrNil ifTrue:[ ^ #() ].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   159
    syspkgSlashed := syspkg copyReplaceAll: $. with: $/.
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   160
    classes keysDo:[:name|
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   161
        (name startsWith:syspkgSlashed) ifTrue:[
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   162
            ^ syspkg
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   163
        ]
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   164
    ].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   165
    ^ nil
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   166
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   167
    "Created: / 16-08-2012 / 17:40:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   168
!
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   169
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   170
systemPackages
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   171
    "Return a collection system packages (as smalltalk strings) currently loaded"
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   172
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   173
    | classes syspkgs |
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   174
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   175
    classes := loaders at: nil ifAbsent:[nil].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   176
    classes isEmptyOrNil ifTrue:[ ^ #() ].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   177
    syspkgs := Set new.
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   178
    classes keysDo:[:name|
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   179
        | slashpos |
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   180
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   181
        slashpos := name lastIndexOf: $/.
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   182
        slashpos ~~ 0 ifTrue:[
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   183
            | syspkg |
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   184
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   185
            syspkg := name copyTo: slashpos - 1.
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   186
            syspkg replaceAll: $/ with: $..
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   187
            syspkgs add: syspkg.
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   188
        ]
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   189
    ].
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   190
    ^syspkgs
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   191
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   192
    "Created: / 16-08-2012 / 17:32:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   193
! !
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   194
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   195
!JavaClassRegistry methodsFor:'class loading'!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   196
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   197
loadFile: aFilename 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   198
    "reads a class from aFilename, installs and returns it."
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   199
    
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   200
    | aClass |
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   201
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   202
    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   203
    aClass := JavaClassReader readFile: aFilename ignoring: Set new.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   204
    aClass isJavaClass ifFalse:[self breakPoint:#mh].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   205
    self registerClass: aClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   206
    ^ aClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   207
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   208
    "Created: / 15-04-1996 / 14:58:53 / cg"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   209
    "Modified: / 12-05-1998 / 22:06:52 / cg"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   210
    "Modified: / 23-10-2011 / 11:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   211
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   212
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   213
loadStream: javaClassDataStream loader: aJavaClassLoader 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   214
    "reads a class from aStream and returns it.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   215
     The JavaClass is installed as global.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   216
     If new classes are required to be loaded, aClassLoader is
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   217
     asked to do it."
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   218
    
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   219
    | javaClass |
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   220
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   221
    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   222
    JavaClassReader classLoaderQuerySignal answer: aJavaClassLoader
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   223
        do: [
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   224
            javaClass := JavaClassReader readStream: javaClassDataStream
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   225
                        ignoring: (Set new).
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   226
            javaClass 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   227
                ifNil: [
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   228
                    Logger 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   229
                        log: 'JavaClassReader was not able to read given data stream'
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   230
                        severity: #warn
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   231
                        facility: #JVM.
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   232
                    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   233
                    ^ nil.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   234
                ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   235
            javaClass isJavaClass ifFalse: [ self breakPoint: #mh. ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   236
            javaClass classLoader: aJavaClassLoader.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   237
            self registerClass: javaClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   238
        ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   239
    ^ javaClass
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   240
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   241
    "Modified: / 30-10-2011 / 12:24:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   242
! !
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   243
1039
vranyj1
parents: 1038
diff changeset
   244
!JavaClassRegistry methodsFor:'enumerating'!
vranyj1
parents: 1038
diff changeset
   245
vranyj1
parents: 1038
diff changeset
   246
classesDo: aBlock
vranyj1
parents: 1038
diff changeset
   247
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   248
    loaders do:[:classes|
1039
vranyj1
parents: 1038
diff changeset
   249
        classes do:[:class|
vranyj1
parents: 1038
diff changeset
   250
            aBlock value: class
vranyj1
parents: 1038
diff changeset
   251
        ]        
vranyj1
parents: 1038
diff changeset
   252
    ]
vranyj1
parents: 1038
diff changeset
   253
vranyj1
parents: 1038
diff changeset
   254
    "Created: / 23-10-2011 / 20:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
vranyj1
parents: 1038
diff changeset
   255
! !
vranyj1
parents: 1038
diff changeset
   256
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   257
!JavaClassRegistry methodsFor:'helpers'!
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   258
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   259
addClassLoader: aJavaClassLoader
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   260
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   261
loaders at: aJavaClassLoader put: Dictionary new.
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   262
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   263
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   264
getClassesDefinedBy:classLoader 
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   265
    ^loaders at: classLoader ifAbsent: [nil].
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   266
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   267
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   268
!JavaClassRegistry methodsFor:'initialization'!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   269
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   270
flush
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   271
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   272
    self initialize.
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   273
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   274
    "Modified: / 30-10-2011 / 12:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   275
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   276
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   277
initialize
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   278
    loaders := WeakIdentityDictionary new.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   279
    loaders at: nil put: Dictionary new.
1570
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   280
    notifier := BackgroundQueueProcessingJob 
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   281
                    named: 'Java class registry notifier'
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   282
                    on:[:typeAndClass|Smalltalk changed: typeAndClass first with: typeAndClass second].
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   283
    notifier priority: Processor userBackgroundPriority - 1.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   284
1612
ba527b3b17aa - fixes for Package.getPackage()
vranyj1
parents: 1570
diff changeset
   285
    "Modified: / 16-08-2012 / 17:31:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   286
!
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   287
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   288
setVM: aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   289
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   290
    "Now, aJavaVM == JavaVM (i.e, the class JavaVM 
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   291
    itself, not its instance)"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   292
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   293
    vm := aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   294
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   295
    "Created: / 21-12-2010 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   296
! !
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   297
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   298
!JavaClassRegistry methodsFor:'registering'!
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   299
1372
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   300
registerClass: newClass
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   301
    | classes oldClass |
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   302
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   303
    self assert: (newClass name includes: $.) not.
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   304
    loaders keysAndValuesDo:[:loader :classesPerLoader|
1036
4ff03464c3b3 refactored registry..
hlopkmar
parents: 1035
diff changeset
   305
1372
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   306
        (classesPerLoader includesKey: newClass name) ifTrue:[
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   307
            loader == newClass classLoader ifTrue:[
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   308
                (oldClass := classesPerLoader at: newClass name) ~~ newClass ifTrue:[
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   309
                    "Class already exists, reload & reinstall"
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   310
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   311
                    | reloadedClass |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   312
                    reloadedClass := JavaClassReloader reload: oldClass with: newClass.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   313
                    "/OK, full reload, not just method dictionary update"
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   314
                    reloadedClass ~~ oldClass ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   315
                        classesPerLoader
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   316
                            at: newClass name 
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   317
                            put: reloadedClass.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   318
                        self registerClassInSmalltalk: reloadedClass notify: false.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   319
                    ].
1478
329a15eedd36 - improvements in class reloading
vranyj1
parents: 1453
diff changeset
   320
                    Smalltalk changed: #classDefinition with: newClass.
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   321
                    ^self.             
1058
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   322
                ].
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   323
            ] ifFalse:[
1372
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   324
                ((newClass name == #Script1) 
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   325
                    and:[newClass superclass name == #'groovy/lang/Script']) ifFalse:[
1478
329a15eedd36 - improvements in class reloading
vranyj1
parents: 1453
diff changeset
   326
                        "/self breakPoint: #jv.
1120
b65e199200a4 Fire breakpoint for JV only if class is not artifical Groovy script class (avoids annoying false-positive breakpoint)
vranyj1
parents: 1073
diff changeset
   327
                    ]
1057
vranyj1
parents: 1053
diff changeset
   328
            ]
vranyj1
parents: 1053
diff changeset
   329
        ]                        
vranyj1
parents: 1053
diff changeset
   330
    ].
vranyj1
parents: 1053
diff changeset
   331
1372
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   332
    classes := loaders at: newClass classLoader ifAbsent: nil.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   333
    classes isNil ifTrue:[
1372
dea574a1b6b3 Some initial class reloading support. Not yet finished, just sketched out.
vranyj1
parents: 1368
diff changeset
   334
        classes := loaders at: newClass classLoader put: Dictionary new.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   335
    ].
1995
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   336
    classes at: newClass name  put: newClass.
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   337
    self registerClassInSmalltalk: newClass notify: true.
1036
4ff03464c3b3 refactored registry..
hlopkmar
parents: 1035
diff changeset
   338
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   339
    "Created: / 23-10-2011 / 11:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   340
    "Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1995
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   341
    "Modified: / 24-01-2013 / 11:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   342
!
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   343
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   344
registerClassInSmalltalk: javaclass notify: doNotify
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   345
    "Registers class in Smalltalk system dictionary and
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   346
     notifies system, so the class become visible by
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   347
     Smalltalk"
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   348
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   349
    | nameComponents accessor ns |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   350
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   351
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   352
    nameComponents := javaclass name asCollectionOfSubstringsSeparatedBy:$/.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   353
    nameComponents size > 1 ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   354
        javaclass setCategory:((nameComponents asStringWith:$/ from:1 to:(nameComponents size - 1))
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   355
                            replaceAll:$/ with:$. ).
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   356
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   357
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   358
    nameComponents size > 1 ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   359
        javaclass setPackage:((nameComponents copyWithoutLast:1) asStringWith:$/) asSymbol
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   360
    ] ifFalse:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   361
        javaclass setPackage:javaclass name asSymbol
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   362
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   363
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   364
    "/ break up the package and create nameSpaces
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   365
    "/ for each package component.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   366
    "/ This allows java.foo.bar to be visible in ST/X
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   367
    "/ under the name JAVA::java::foo::bar
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   368
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   369
    accessor := javaclass"JavaClassAccessor fullName: aString".    
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   370
    ns := JAVA.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   371
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   372
    nameComponents size > 1 ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   373
        | s |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   374
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   375
        s := '' writeStream.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   376
        s nextPutAll:'JAVA'.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   377
        nameComponents from:1 to:(nameComponents size - 1) do:[:aPart |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   378
            s nextPutAll:'::'.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   379
            s nextPutAll:aPart
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   380
        ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   381
        Metaclass confirmationQuerySignal answer:false do:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   382
            Class withoutUpdatingChangesDo:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   383
                ns := JavaPackage fullName:(s contents).
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   384
            ]
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   385
        ]
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   386
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   387
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   388
    ns isNameSpace ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   389
        ns at:nameComponents last asSymbol put:accessor.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   390
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   391
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   392
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   393
    doNotify ifTrue:[
1570
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   394
        notifier add:(Array with: #newClass with: javaclass).
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   395
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   396
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   397
    "Created: / 04-04-2012 / 10:01:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   398
!
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   399
1921
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   400
registerClasses: classes
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   401
    classes do:[:cls|self registerClass: cls].
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   402
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   403
    "Created: / 02-01-2013 / 17:01:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   404
!
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   405
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   406
unregisterClass: oldClass
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   407
    | classes |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   408
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   409
    self assert: (oldClass name includes: $.) not.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   410
    self unregisterClassInSmalltalk: oldClass notify: true.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   411
    classes := loaders at: oldClass classLoader ifAbsent: nil.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   412
    classes notNil ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   413
        classes removeKey: oldClass name.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   414
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   415
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   416
    "Created: / 04-04-2012 / 02:43:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   417
!
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   418
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   419
unregisterClassInSmalltalk: javaclass notify: doNotify
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   420
    "Unregisters given class from Smalltalk system dictionary
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   421
     so the class is no longer visible from Smalltalk"
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   422
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   423
    | nameComponents ns |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   424
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   425
    ns := JAVA.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   426
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   427
    nameComponents size > 1 ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   428
        | s |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   429
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   430
        s := '' writeStream.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   431
        s nextPutAll:'JAVA'.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   432
        nameComponents from:1 to:(nameComponents size - 1) do:[:aPart |
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   433
            s nextPutAll:'::'.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   434
            s nextPutAll:aPart
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   435
        ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   436
        Metaclass confirmationQuerySignal answer:false do:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   437
            Class withoutUpdatingChangesDo:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   438
                ns := JavaPackage fullName:(s contents).
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   439
            ]
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   440
        ]
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   441
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   442
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   443
    ns isNameSpace ifTrue:[
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   444
        "/Hmmm hmm, how to remove class from a namespace?.
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   445
        "/ns at:nameComponents last asSymbol put:nil
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   446
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   447
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   448
    doNotify ifTrue:[
1570
e6b2fd21ba17 - JavaClassRegistry
vranyj1
parents: 1478
diff changeset
   449
        notifier add:(Array with: #classRemove with: javaclass).
1453
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   450
    ].
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   451
f7a8861cdbe1 - added JavaMetaclass, GroovyMetaclass
vranyj1
parents: 1441
diff changeset
   452
    "Created: / 04-04-2012 / 10:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1895
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   453
!
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   454
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   455
unregisterClassLoader: aJavaClassLoader 
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   456
    loaders removeKey: aJavaClassLoader ifAbsent: nil.
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   457
2d30e588124c added reloading tests and naive implementation
Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
parents: 1864
diff changeset
   458
    "Created: / 16-12-2012 / 16:39:45 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
1921
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   459
!
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   460
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   461
unregisterClasses: classes
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   462
    classes do:[:cls|self unregisterClass: cls].
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   463
a395d5c696b9 JavaCompiler refactored to compile completely in memory.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1895
diff changeset
   464
    "Created: / 02-01-2013 / 17:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   465
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   466
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   467
!JavaClassRegistry class methodsFor:'documentation'!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   468
1864
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   469
version_HG
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   470
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   471
    ^ '$Changeset: <not expanded> $'
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   472
!
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   473
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   474
version_SVN
1864
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   475
    ^ '§Id§'
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   476
! !
1995
b129fd0a81e4 Fixes for boot class path index.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1921
diff changeset
   477