src/JavaClassRegistry.st
author hlopkmar
Wed, 02 Nov 2011 21:40:47 +0000
branchjk_new_structure
changeset 1073 e842ab17fe16
parent 1062 69aac7194016
child 1120 b65e199200a4
permissions -rw-r--r--
quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
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
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     3
 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
     4
                            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
     5
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     6
 Parts of the code written by Claus Gittinger are under following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
     7
 license:
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
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    16
 Parts of the code written at SWING Reasearch Group [1] are MIT licensed:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    17
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    18
 Permission is hereby granted, free of charge, to any person
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    19
 obtaining a copy of this software and associated documentation
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    20
 files (the 'Software'), to deal in the Software without
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    21
 restriction, including without limitation the rights to use,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    22
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    23
 copies of the Software, and to permit persons to whom the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    24
 Software is furnished to do so, subject to the following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    25
 conditions:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    26
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    27
 The above copyright notice and this permission notice shall be
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    28
 included in all copies or substantial portions of the Software.
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
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    31
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    32
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    33
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    34
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    35
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    36
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    37
 OTHER DEALINGS IN THE SOFTWARE.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    38
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    39
 [1] Code written at SWING Research Group contain a signature
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    40
     of one of the above copright owners.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    41
"
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    42
"{ 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
    43
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    44
Object subclass:#JavaClassRegistry
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
    45
	instanceVariableNames:'vm loaders'
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    46
	classVariableNames:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    47
	poolDictionaries:''
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    48
	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
    49
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    50
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    51
!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
    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
copyright
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
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    56
 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
    57
                            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
    58
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    59
 Parts of the code written by Claus Gittinger are under following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    60
 license:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    61
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    62
 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
    63
 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
    64
 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
    65
 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
    66
 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
    67
 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
    68
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    69
 Parts of the code written at SWING Reasearch Group [1] are MIT licensed:
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
 Permission is hereby granted, free of charge, to any person
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    72
 obtaining a copy of this software and associated documentation
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    73
 files (the 'Software'), to deal in the Software without
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    74
 restriction, including without limitation the rights to use,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    75
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    76
 copies of the Software, and to permit persons to whom the
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    77
 Software is furnished to do so, subject to the following
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    78
 conditions:
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    79
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    80
 The above copyright notice and this permission notice shall be
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    81
 included in all copies or substantial portions of the Software.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    82
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    83
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    84
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    85
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    86
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    87
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    88
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    89
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    90
 OTHER DEALINGS IN THE SOFTWARE.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    91
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    92
 [1] Code written at SWING Research Group contain a signature
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    93
     of one of the above copright owners.
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    94
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
    95
"
1035
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
    96
!
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
    97
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
    98
documentation
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
    99
"
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   100
    documentation to be added.
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   101
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   102
    [author:]
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   103
        Jan Vrany <jan.vrany@fit.cvut.cz>
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   104
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   105
    [instance variables:]
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   106
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   107
    [class variables:]
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   108
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   109
    [see also:]
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   110
712d2090e68b Small refactoring of class registry, more follows
vranyj1
parents: 1033
diff changeset
   111
"
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   112
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   113
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   114
!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
   115
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   116
for: aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   117
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   118
    ^self new setVM: aJavaVM.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   119
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   120
    "Created: / 21-12-2010 / 19:42:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   121
!
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   122
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   123
new
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   124
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   125
    ^ self basicNew initialize.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   126
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   127
    "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
   128
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   129
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   130
!JavaClassRegistry methodsFor:'accessing'!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   131
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   132
classForName: className loader: classLoader ifAbsent: aBlock 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   133
    "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
   134
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   135
    | classes class |
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   136
1062
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
   137
    self assert: (className includes: $.) not.
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
   138
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   139
    "Classes loaded by primordial classloader are always
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   140
     used"
1038
bf2ece5a5362 Few fixes
vranyj1
parents: 1037
diff changeset
   141
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   142
    classLoader notNil ifTrue:[
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   143
        classes := loaders at: nil ifAbsent: nil.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   144
        class := classes at: className ifAbsent: nil.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   145
        class notNil ifTrue:[
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   146
            ^class.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   147
        ]
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   148
    ].
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   149
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   150
    "No bootstrap class found, search given classloader"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   151
    classes := loaders at: classLoader ifAbsent: [^aBlock value].
1038
bf2ece5a5362 Few fixes
vranyj1
parents: 1037
diff changeset
   152
    ^classes at: className ifAbsent: aBlock
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   153
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   154
    "Modified: / 21-10-2011 / 12:39:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   155
    "Created: / 23-10-2011 / 11:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   156
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   157
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   158
classForName: className loader: classLoader ifAbsentPut: block 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   159
    "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
   160
    
1073
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   161
    | class |
1062
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
   162
    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
   163
     "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
   164
    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
   165
    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
   166
    "if java vm is booted, nil class loader means system class loader, lets check it too"
e842ab17fe16 quite big class loaders rewrite.. javavm/groovy boots, almost all tests pass.. hope you will like it..
hlopkmar
parents: 1062
diff changeset
   167
    (vm booted and: [classLoader isNil]) ifTrue: [class := self classNamed: className loader: vm systemClassLoader. 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
   168
     "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
   169
    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
   170
    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
   171
    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
   172
    ^ class.
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   173
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   174
    "Created: / 21-10-2011 / 12:00:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   175
    "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
   176
    "Modified: / 02-11-2011 / 17:29:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   177
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   178
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   179
classNamed: className
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   180
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   181
    "Return a class for given classname loaded by 'current classloader' or 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   182
     nil if not yet loaded"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   183
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   184
    ^self classNamed: className loader: JavaClassReader classLoaderQuerySignal query
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   185
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   186
    "Created: / 23-10-2011 / 12:23:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   187
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   188
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   189
classNamed: className loader: classLoader
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   190
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   191
    "Return a class for given classname loaded by given classloader or 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   192
     nil if not yet loaded"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   193
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   194
    ^self classForName: className loader: classLoader ifAbsent:[nil].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   195
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   196
    "Created: / 23-10-2011 / 12:23:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1039
vranyj1
parents: 1038
diff changeset
   197
!
vranyj1
parents: 1038
diff changeset
   198
vranyj1
parents: 1038
diff changeset
   199
classes
vranyj1
parents: 1038
diff changeset
   200
vranyj1
parents: 1038
diff changeset
   201
    ^Iterator on:[:whatToDo|self classesDo: whatToDo]
vranyj1
parents: 1038
diff changeset
   202
vranyj1
parents: 1038
diff changeset
   203
    "Created: / 23-10-2011 / 20:14:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   204
! !
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   205
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   206
!JavaClassRegistry methodsFor:'class loading'!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   207
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   208
loadFile: aFilename 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   209
    "reads a class from aFilename, installs and returns it."
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   210
    
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   211
    | aClass |
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   212
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   213
    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   214
    aClass := JavaClassReader readFile: aFilename ignoring: Set new.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   215
    aClass isJavaClass ifFalse:[self breakPoint:#mh].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   216
    self registerClass: aClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   217
    ^ aClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   218
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   219
    "Created: / 15-04-1996 / 14:58:53 / cg"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   220
    "Modified: / 12-05-1998 / 22:06:52 / cg"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   221
    "Modified: / 23-10-2011 / 11:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   222
!
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   223
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   224
loadStream: javaClassDataStream loader: aJavaClassLoader 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   225
    "reads a class from aStream and returns it.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   226
     The JavaClass is installed as global.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   227
     If new classes are required to be loaded, aClassLoader is
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   228
     asked to do it."
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   229
    
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   230
    | javaClass |
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   231
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   232
    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   233
    JavaClassReader classLoaderQuerySignal answer: aJavaClassLoader
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   234
        do: [
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   235
            javaClass := JavaClassReader readStream: javaClassDataStream
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   236
                        ignoring: (Set new).
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   237
            javaClass 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   238
                ifNil: [
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   239
                    Logger 
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   240
                        log: 'JavaClassReader was not able to read given data stream'
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   241
                        severity: #warn
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   242
                        facility: #JVM.
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   243
                    self breakPoint: #mh.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   244
                    ^ nil.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   245
                ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   246
            javaClass isJavaClass ifFalse: [ self breakPoint: #mh. ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   247
            javaClass classLoader: aJavaClassLoader.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   248
            self registerClass: javaClass.
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   249
        ].
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   250
    ^ javaClass
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   251
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   252
    "Modified: / 30-10-2011 / 12:24:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   253
! !
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   254
1039
vranyj1
parents: 1038
diff changeset
   255
!JavaClassRegistry methodsFor:'enumerating'!
vranyj1
parents: 1038
diff changeset
   256
vranyj1
parents: 1038
diff changeset
   257
classesDo: aBlock
vranyj1
parents: 1038
diff changeset
   258
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   259
    loaders do:[:classes|
1039
vranyj1
parents: 1038
diff changeset
   260
        classes do:[:class|
vranyj1
parents: 1038
diff changeset
   261
            aBlock value: class
vranyj1
parents: 1038
diff changeset
   262
        ]        
vranyj1
parents: 1038
diff changeset
   263
    ]
vranyj1
parents: 1038
diff changeset
   264
vranyj1
parents: 1038
diff changeset
   265
    "Created: / 23-10-2011 / 20:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
vranyj1
parents: 1038
diff changeset
   266
! !
vranyj1
parents: 1038
diff changeset
   267
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   268
!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
   269
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   270
addClassLoader: aJavaClassLoader
1027
43dc608e14aa another dose of fixes, still not able to boot javavm
hlopkmar
parents: 1026
diff changeset
   271
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   272
loaders at: aJavaClassLoader put: Dictionary new.
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   273
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   274
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   275
getClassesDefinedBy:classLoader 
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   276
    ^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
   277
!
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   278
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   279
removeClassLoader: aJavaClassLoader 
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   280
    loaders removeKey: aJavaClassLoader.
1026
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   281
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   282
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   283
!JavaClassRegistry methodsFor:'initialization'!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   284
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   285
flush
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   286
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   287
    self initialize.
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   288
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   289
    "Modified: / 30-10-2011 / 12:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   290
!
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   291
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   292
initialize
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   293
    loaders := WeakIdentityDictionary new.
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   294
    loaders at: nil put: Dictionary new.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   295
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   296
    "Modified: / 24-10-2011 / 16:42:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   297
!
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   298
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   299
setVM: aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   300
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   301
    "Now, aJavaVM == JavaVM (i.e, the class JavaVM 
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   302
    itself, not its instance)"
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   303
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   304
    vm := aJavaVM
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   305
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   306
    "Created: / 21-12-2010 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   307
! !
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   308
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   309
!JavaClassRegistry methodsFor:'registering'!
1032
c3085c73e150 just refactoring registry
hlopkmar
parents: 1030
diff changeset
   310
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   311
registerClass: aJavaClass
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   312
    | classes |
1036
4ff03464c3b3 refactored registry..
hlopkmar
parents: 1035
diff changeset
   313
1062
69aac7194016 Fixes in classloaders to make Groovy running (again)
vranyj1
parents: 1060
diff changeset
   314
    self assert: (aJavaClass name includes: $.) not.
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   315
    loaders keysAndValuesDo:[:loader :classes|
1057
vranyj1
parents: 1053
diff changeset
   316
vranyj1
parents: 1053
diff changeset
   317
        (classes includesKey: aJavaClass name) ifTrue:[
1058
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   318
            loader == aJavaClass classLoader ifTrue:[
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   319
                (classes at: aJavaClass name) ~~ aJavaClass ifTrue:[
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   320
                    self error:'Trying to register class twice!!'
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   321
                ].
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   322
            ] ifFalse:[
1db06119bf3e Temporary commit (fixing class loaders - classes gets registered twice)
vranyj1
parents: 1057
diff changeset
   323
                self breakPoint: #jv.
1057
vranyj1
parents: 1053
diff changeset
   324
            ]
vranyj1
parents: 1053
diff changeset
   325
        ]                        
vranyj1
parents: 1053
diff changeset
   326
    ].
vranyj1
parents: 1053
diff changeset
   327
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   328
    classes := loaders at: aJavaClass classLoader ifAbsent: nil.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   329
    classes isNil ifTrue:[
1059
22fe06c9e367 Fixes in classloaders
vranyj1
parents: 1058
diff changeset
   330
        classes := loaders at: aJavaClass classLoader put: Dictionary new.
1045
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   331
    ].
6b11c34520f2 JavaClassRegistry: keep classloaders in WeakIdentityDictionary to allow classloaders to be GCd
vranyj1
parents: 1039
diff changeset
   332
    classes at: aJavaClass name put: aJavaClass.
1036
4ff03464c3b3 refactored registry..
hlopkmar
parents: 1035
diff changeset
   333
1037
3dc5755c5fe4 JavaClassRegistry refactored
vranyj1
parents: 1036
diff changeset
   334
    "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
   335
    "Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.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
   336
! !
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   337
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   338
!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
   339
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   340
version_SVN
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   341
    ^ '$Id$'
5badd1d31864 introduced JavaClassRegistry, taken loading responsibilities from JavaClassReader, got rid of stringConstants and started using StringRefs.. Bugs very likely :)
hlopkmar
parents:
diff changeset
   342
! !