author | mawalch |
Thu, 08 Jun 2017 14:04:24 +0200 | |
branch | cvs_MAIN |
changeset 3724 | 8184529b4866 |
parent 3713 | 68c63bd08343 |
permissions | -rw-r--r-- |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
" |
3324
a58245c0e83a
Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3244
diff
changeset
|
2 |
COPYRIGHT (c) 1996-2015 by Claus Gittinger |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
New code and modifications done at SWING Research Group [1]: |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
3324
a58245c0e83a
Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3244
diff
changeset
|
6 |
COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
SWING Research Group, Czech Technical University in Prague |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
This software is furnished under a license and may be used |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
only in accordance with the terms of that license and with the |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
inclusion of the above copyright notice. This software may not |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
be provided or otherwise made available to, or used by, any |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
other person. No title to or ownership of the software is |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
hereby transferred. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
[1] Code written at SWING Research Group contains a signature |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
of one of the above copright owners. For exact set of such code, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
see the differences between this version and version stx:libjava |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
as of 1.9.2010 |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
"{ Package: 'stx:libjava' }" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
3384
98eb8443f4f4
Use new Logger API (use Logger severityXXX instead of symbols)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3324
diff
changeset
|
23 |
"{ NameSpace: Smalltalk }" |
98eb8443f4f4
Use new Logger API (use Logger severityXXX instead of symbols)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3324
diff
changeset
|
24 |
|
3072
f22d5febda61
Introduced a JavaClassEnvironment - an abstract namespace-like class to keep Java classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3067
diff
changeset
|
25 |
JavaClassEnvironment subclass:#JavaClassRegistry |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
26 |
instanceVariableNames:'vm loaders notifier lock' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
classVariableNames:'' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
poolDictionaries:'JavaVMData' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
category:'Languages-Java-Support' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
!JavaClassRegistry class methodsFor:'documentation'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
copyright |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
" |
3324
a58245c0e83a
Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3244
diff
changeset
|
36 |
COPYRIGHT (c) 1996-2015 by Claus Gittinger |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
New code and modifications done at SWING Research Group [1]: |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
|
3324
a58245c0e83a
Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3244
diff
changeset
|
40 |
COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
SWING Research Group, Czech Technical University in Prague |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
This software is furnished under a license and may be used |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
only in accordance with the terms of that license and with the |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
inclusion of the above copyright notice. This software may not |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
be provided or otherwise made available to, or used by, any |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
other person. No title to or ownership of the software is |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
hereby transferred. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
[1] Code written at SWING Research Group contains a signature |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
of one of the above copright owners. For exact set of such code, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
see the differences between this version and version stx:libjava |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
as of 1.9.2010 |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
!JavaClassRegistry class methodsFor:'instance creation'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
for: aJavaVM |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
^self new setVM: aJavaVM. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
"Created: / 21-12-2010 / 19:42:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
new |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
^ self basicNew initialize. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
"Modified (format): / 30-10-2011 / 12:07:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
|
2578
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
74 |
!JavaClassRegistry class methodsFor:'others'! |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
75 |
|
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
76 |
version_HG |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
77 |
|
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
78 |
^ '$Changeset: <not expanded> $' |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
79 |
! ! |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
80 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
!JavaClassRegistry methodsFor:'accessing'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
|
2966 | 83 |
classForName: className loader: classLoader ifAbsent: aBlock |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
"Get class loaded by given classLoader from registry or evaluate aBlock if class is not yet registered" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
| classes class | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
self assert: (className includes: $.) not. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
"Classes loaded by primordial classloader are always |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
used" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
classLoader notNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
classes := loaders at: nil ifAbsent: nil. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
class := classes at: className ifAbsent: nil. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
class notNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
^class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
"No bootstrap class found, search given classloader" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
classes := loaders at: classLoader ifAbsent: [^aBlock value]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
^classes at: className ifAbsent: aBlock |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
"Modified: / 21-10-2011 / 12:39:04 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
"Created: / 23-10-2011 / 11:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
|
2966 | 109 |
classForName: className loader: classLoader ifAbsentPut: block |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
"Get class loaded by classLoader from registry. if absent block is evaluated and resulting class in registered in registry, " |
2966 | 111 |
|
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
112 |
| class synchronizer | |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
113 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
self assert: (className includes: $.) not. |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
115 |
|
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
116 |
"/ Temporary workaround for race-condition when multiple threads are |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
117 |
"/ loading same class. Note that ClassLoader.loadClass() / loadClassInternal() |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
118 |
"/ is itself sychronized so we have to synchronize iff and only iff |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
119 |
"/ we're loading for primordial class loader. If we synchronize |
3066 | 120 |
"/ even on non-primordial loaders, we risk a deadlock. Very hacky... |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
121 |
|
2966 | 122 |
synchronizer := classLoader isNil |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
123 |
ifTrue:[ [:whatToDo | lock critical: whatToDo ] ] |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
124 |
ifFalse:[ [:whatToDo | whatToDo value ] ]. |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
125 |
|
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
126 |
synchronizer value:[ |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
127 |
"If class is already registered with the same cl, just return it" |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
128 |
class := self classNamed: className loader: classLoader. |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
129 |
class isNil ifTrue:[ |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
130 |
"Otherwise evaluate block" |
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
131 |
class := block value. |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
132 |
(class notNil and:[classLoader isNil]) ifTrue: [ self registerClass: class ]. |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
133 |
]. |
3066 | 134 |
]. |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
135 |
^ class |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
"Created: / 21-10-2011 / 12:00:30 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
"Created: / 23-10-2011 / 11:36:51 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
"Modified: / 02-11-2011 / 17:29:20 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
140 |
"Modified: / 11-08-2014 / 01:23:10 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
classNamed: className |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
|
2966 | 145 |
"Return a class for given classname loaded by 'current classloader' or |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
nil if not yet loaded" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
^self classNamed: className loader: JavaClassReader classLoaderQuerySignal query |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
150 |
"Created: / 23-10-2011 / 12:23:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
152 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
153 |
classNamed: className loader: classLoader |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
154 |
|
2966 | 155 |
"Return a class for given classname loaded by given classloader or |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
156 |
nil if not yet loaded" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
^self classForName: className loader: classLoader ifAbsent:[nil]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
"Created: / 23-10-2011 / 12:23:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
classes |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
|
3067
4bbacafb9592
Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3066
diff
changeset
|
165 |
^Iterator on:[:whatToDo|self allClassesDo: whatToDo] |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
167 |
"Created: / 23-10-2011 / 20:14:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3067
4bbacafb9592
Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3066
diff
changeset
|
168 |
"Modified: / 09-04-2014 / 18:43:28 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
169 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
170 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
systemPackage: syspkg |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
"Return name (as string) of system package named syspkg or nil if no such package is loaded" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
| classes syspkgSlashed | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
classes := loaders at: nil ifAbsent:[nil]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
classes isEmptyOrNil ifTrue:[ ^ #() ]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
syspkgSlashed := syspkg copyReplaceAll: $. with: $/. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
classes keysDo:[:name| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
(name startsWith:syspkgSlashed) ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
^ syspkg |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
^ nil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
"Created: / 16-08-2012 / 17:40:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
systemPackages |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
"Return a collection system packages (as smalltalk strings) currently loaded" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
| classes syspkgs | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
classes := loaders at: nil ifAbsent:[nil]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
classes isEmptyOrNil ifTrue:[ ^ #() ]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
syspkgs := Set new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
classes keysDo:[:name| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
| slashpos | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
slashpos := name lastIndexOf: $/. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
slashpos ~~ 0 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
| syspkg | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
syspkg := name copyTo: slashpos - 1. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
syspkg replaceAll: $/ with: $.. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
syspkgs add: syspkg. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
^syspkgs |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
"Created: / 16-08-2012 / 17:32:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
!JavaClassRegistry methodsFor:'class loading'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
|
2966 | 216 |
loadFile: aFilename |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
"reads a class from aFilename, installs and returns it." |
2966 | 218 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
| aClass | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
self breakPoint: #mh. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
aClass := JavaClassReader readFile: aFilename ignoring: Set new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
aClass isJavaClass ifFalse:[self breakPoint:#mh]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
self registerClass: aClass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
^ aClass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
"Created: / 15-04-1996 / 14:58:53 / cg" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
"Modified: / 12-05-1998 / 22:06:52 / cg" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
"Modified: / 23-10-2011 / 11:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
|
2966 | 232 |
loadStream: javaClassDataStream loader: aJavaClassLoader |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
"reads a class from aStream and returns it. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
The JavaClass is installed as global. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
235 |
If new classes are required to be loaded, aClassLoader is |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
236 |
asked to do it." |
2966 | 237 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
| javaClass | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
self breakPoint: #mh. |
2578
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
241 |
self breakPoint: #jv. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
242 |
javaClass := JavaClassReader readStream: javaClassDataStream loader: aJavaClassLoader. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
243 |
javaClass isNil ifTrue: [ |
2966 | 244 |
Logger |
2578
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
245 |
log: 'JavaClassReader was not able to read given data stream' |
3384
98eb8443f4f4
Use new Logger API (use Logger severityXXX instead of symbols)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3324
diff
changeset
|
246 |
severity: Logger severityWARN |
2578
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
247 |
facility: #JVM. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
248 |
self breakPoint: #mh. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
249 |
^ nil. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
]. |
2578
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
251 |
javaClass isJavaClass ifFalse: [ self breakPoint: #mh. ]. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
252 |
javaClass classLoader: aJavaClassLoader. |
fc6186a4961f
Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2566
diff
changeset
|
253 |
self registerClass: javaClass. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
254 |
^ javaClass |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
255 |
|
3384
98eb8443f4f4
Use new Logger API (use Logger severityXXX instead of symbols)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3324
diff
changeset
|
256 |
"Modified: / 02-03-2015 / 14:07:44 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
!JavaClassRegistry methodsFor:'enumerating'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
|
3067
4bbacafb9592
Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3066
diff
changeset
|
261 |
allClassesDo: aBlock |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
loaders do:[:classes| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
264 |
classes do:[:class| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
265 |
aBlock value: class |
2966 | 266 |
] |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
267 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
268 |
|
3067
4bbacafb9592
Renamed JavaClassRegistry>>classesDo: to allClassesDo:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3066
diff
changeset
|
269 |
"Created: / 09-04-2014 / 18:43:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
270 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
271 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
!JavaClassRegistry methodsFor:'helpers'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
273 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
274 |
addClassLoader: aJavaClassLoader |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
275 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
276 |
loaders at: aJavaClassLoader put: Dictionary new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
277 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
278 |
|
2966 | 279 |
getClassesDefinedBy:classLoader |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
280 |
^loaders at: classLoader ifAbsent: [nil]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
281 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
282 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
283 |
!JavaClassRegistry methodsFor:'initialization'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
284 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
flush |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
|
2952
ff6465e92d95
Flush JavaClassRegistry's notifier when flushing classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2948
diff
changeset
|
287 |
notifier stopAndRemoveAll. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
self initialize. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
|
2952
ff6465e92d95
Flush JavaClassRegistry's notifier when flushing classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2948
diff
changeset
|
290 |
"Modified: / 30-11-2013 / 07:03:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
291 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
292 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
293 |
initialize |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
loaders := WeakIdentityDictionary new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
loaders at: nil put: Dictionary new. |
2966 | 296 |
notifier := BackgroundQueueProcessingJob |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
named: 'Java class registry notifier' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
on:[:typeAndClass|Smalltalk changed: typeAndClass first with: typeAndClass second]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
notifier priority: Processor userBackgroundPriority - 1. |
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
300 |
lock := RecursionLock new. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
301 |
|
2948
af30789878ce
Temporary class loading race-condition workaround.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2942
diff
changeset
|
302 |
"Modified (format): / 22-11-2013 / 11:08:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
303 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
304 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
305 |
setVM: aJavaVM |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
306 |
|
2966 | 307 |
"Now, aJavaVM == JavaVM (i.e, the class JavaVM |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
itself, not its instance)" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
vm := aJavaVM. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
"Created: / 21-12-2010 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |
"Modified (format): / 07-02-2013 / 17:36:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
314 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
315 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
!JavaClassRegistry methodsFor:'registering'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
318 |
registerClass: newClass |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
319 |
| classes oldClass | |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
320 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
321 |
((newClass binaryName == #'$do$It$') |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
322 |
and:[newClass superclass binaryName == #'groovy/lang/Script']) ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
323 |
"/ Mhhh...Groovy do-it. No need to register this!! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
324 |
^ self |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
325 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
326 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
327 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
328 |
self assert: (newClass binaryName includes: $.) not. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
329 |
loaders keysAndValuesDo:[:loader :classesPerLoader| |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
330 |
(classesPerLoader includesKey: newClass binaryName) ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
331 |
loader == newClass classLoader ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
332 |
(oldClass := classesPerLoader at: newClass binaryName) ~~ newClass ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
333 |
"Class already exists, reload & reinstall" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
334 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
335 |
| reloadedClass | |
3235 | 336 |
|
337 |
self registerClassRedefined: oldClass. |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
338 |
reloadedClass := JavaClassReloader reload: oldClass with: newClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
339 |
"/OK, full reload, not just method dictionary update" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
340 |
reloadedClass ~~ oldClass ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
341 |
"/ Remove old class from classloader... |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
342 |
self unregisterClassInClassLoader: oldClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
343 |
"/ ...from reflection cache.... |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
344 |
JavaVM reflection removeJavaClassObjectForClass: oldClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
345 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
346 |
classesPerLoader |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
347 |
at: newClass binaryName |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
348 |
put: reloadedClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
349 |
self registerClassInClassLoader: reloadedClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
350 |
self registerClassInSmalltalk: reloadedClass notify: false. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
351 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
352 |
Smalltalk changed: #classDefinition with: reloadedClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
353 |
^self. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
354 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
355 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
356 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
357 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
358 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
359 |
classes := loaders at: newClass classLoader ifAbsent: nil. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
360 |
classes isNil ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
361 |
classes := loaders at: newClass classLoader put: Dictionary new. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
362 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
363 |
classes at: newClass binaryName put: newClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
364 |
newClass isJavaClass ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
365 |
self registerClassInClassLoader: newClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
366 |
"/ Register class in system dictionary so it can be browsed |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
367 |
"/ by system browser |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
368 |
self registerClassInSmalltalk: newClass notify: true. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
369 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
370 |
"/ Also register builtin classes in JavaVMData |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
371 |
newClass isBuiltInClass ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
372 |
self assert: newClass classLoader isNil. "/must be loaded by primordial CL... |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
373 |
self registerBuiltIn: newClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
374 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
375 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
376 |
"/ There may be classes already loaded with compile errors. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
377 |
"/ Try to recompile all erroneous classes that depends on this one... |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
378 |
JavaCompiler notNil ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
379 |
JavaCompiler recompileErroneousClassesReferringTo: newClass ignoring: newClass. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
380 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
381 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
382 |
"Created: / 23-10-2011 / 11:53:58 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
383 |
"Modified: / 02-11-2011 / 18:40:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
3235 | 384 |
"Modified: / 15-08-2014 / 15:19:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
385 |
! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
386 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
387 |
registerClasses: classes |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
388 |
classes do:[:cls|self registerClass: cls]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
389 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
390 |
"Created: / 02-01-2013 / 17:01:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
391 |
! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
392 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
393 |
registerClasses: classes andWait: doWait |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
394 |
"Register given set of classes and if |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
395 |
`doWait` is true, wait until all pending notifications |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
396 |
are delivered" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
397 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
398 |
classes do:[:cls|self registerClass: cls]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
399 |
doWait ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
400 |
notifier waitUntilProcessed. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
401 |
] |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
402 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
403 |
"Created: / 04-08-2013 / 03:55:49 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
404 |
! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
405 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
406 |
unregisterClass: oldClass |
3244
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
407 |
^ self unregisterClass: oldClass ignoring: Set new. |
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
408 |
|
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
409 |
"Created: / 04-04-2012 / 02:43:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
410 |
"Modified: / 10-10-2014 / 12:12:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
411 |
! |
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
412 |
|
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
413 |
unregisterClass: oldClass ignoring: ignoredClasses |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
414 |
| classes | |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
415 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
416 |
classes := loaders at: oldClass classLoader ifAbsent: nil. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
417 |
classes notNil ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
418 |
"/ Check if the class is there, it could be removed meanwhile... |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
419 |
(classes includesKey: oldClass binaryName) ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
420 |
"/ Now, invalidate references and unload all dependent clases |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
421 |
"/ (JavaClassReloader will unload them by recursively call #unregisterClass: |
3244
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
422 |
JavaClassReloader unload: oldClass ignoring: ignoredClasses. |
3217
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
423 |
"/ Now remove it from class registry... |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
424 |
classes removeKey: oldClass binaryName. |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
425 |
"/ ...from class loader... |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
426 |
self unregisterClassInClassLoader: oldClass. |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
427 |
"/ ...from reflection cache.... |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
428 |
JavaVM reflection removeJavaClassObjectForClass: oldClass. |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
429 |
"/ ...and from Smalltalk dictionary |
261bad2a9657
Fixes for class unloadfing: unload inner classes first.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3216
diff
changeset
|
430 |
self unregisterClassInSmalltalk: oldClass notify: true. |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
431 |
] |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
432 |
]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
433 |
|
3244
0a8b9f03ffa5
Fixed class reloader in cases a top-level class has both, nested and anonymous classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3235
diff
changeset
|
434 |
"Created: / 10-10-2014 / 12:12:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
435 |
! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
436 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
437 |
unregisterClassLoader: aJavaClassLoader |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
438 |
| classes | |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
439 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
440 |
classes := loaders at: aJavaClassLoader ifAbsent:[ ^ self ]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
441 |
self unregisterClasses: classes values. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
442 |
loaders removeKey: aJavaClassLoader. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
443 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
444 |
"Created: / 16-12-2012 / 16:39:45 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
445 |
"Modified: / 17-10-2013 / 10:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
446 |
! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
447 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
448 |
unregisterClasses: classes |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
449 |
classes do:[:cls|self unregisterClass: cls]. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
450 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
451 |
"Created: / 02-01-2013 / 17:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
452 |
! ! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
453 |
|
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
454 |
!JavaClassRegistry methodsFor:'registering-private'! |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
455 |
|
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
456 |
registerBuiltIn: class |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
457 |
| nm | |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
458 |
|
2966 | 459 |
nm := class binaryName. |
460 |
nm = #'java/lang/Object' ifTrue:[ |
|
461 |
_java_lang_Object_CLASS := class. |
|
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
462 |
^self. |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
463 |
]. |
2966 | 464 |
nm = #'java/lang/System' ifTrue:[ |
465 |
_java_lang_System_CLASS := class. |
|
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
466 |
^self. |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
467 |
]. |
2966 | 468 |
nm = #'java/lang/Class' ifTrue:[ |
469 |
_java_lang_Class_CLASS := class. |
|
2620
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
470 |
"/ Force load of other reflective classes. This saves us a nil check in |
2966 | 471 |
"/ JavaMirror>>createMethod... |
2620
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
472 |
#(#'java/lang/reflect/Constructor' #'java/lang/reflect/Method' #'java/lang/reflect/Field') do:[:e| |
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
473 |
vm classForName: e definedBy: nil. |
2966 | 474 |
]. |
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
475 |
^self. |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
476 |
]. |
2966 | 477 |
nm = #'java/lang/reflect/Constructor' ifTrue:[ |
478 |
_java_lang_reflect_Constructor_CLASS := class. |
|
2620
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
479 |
]. |
2966 | 480 |
nm = #'java/lang/reflect/Method' ifTrue:[ |
481 |
_java_lang_reflect_Method_CLASS := class. |
|
482 |
]. |
|
483 |
nm = #'java/lang/reflect/Field' ifTrue:[ |
|
484 |
_java_lang_reflect_Field_CLASS := class. |
|
2620
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
485 |
]. |
263045d15796
Initial support for generalized built-in class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2618
diff
changeset
|
486 |
|
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
487 |
"Created: / 22-05-2013 / 20:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2966 | 488 |
"Modified: / 18-12-2013 / 13:03:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2618
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
489 |
! |
e7757e5d593c
Initial attempt to generalized builtin class support.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2578
diff
changeset
|
490 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
491 |
registerClassInClassLoader: class |
3713 | 492 |
"Registers class in its classloader" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
493 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
494 |
"/ OpenJDK java.class.ClassLoader keeps list of all loaded classes |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
495 |
"/ in a field `classes`. This method adds the class to the list. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
496 |
"/ For classes loaded by primordial class loader, `class classLoader1 |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
497 |
"/ returns nil. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
498 |
class classLoader notNil ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
499 |
class classLoader perform: #'addClass(Ljava/lang/Class;)V' with: (JavaVM reflection javaClassObjectForClass: class). |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
500 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
501 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
502 |
"Created: / 11-08-2014 / 01:37:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3713 | 503 |
"Modified (comment): / 22-05-2017 / 14:12:29 / mawalch" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
504 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
505 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
506 |
registerClassInSmalltalk: javaclass notify: doNotify |
3713 | 507 |
"Registers a class in the Smalltalk system dictionary and |
508 |
notifies the system, so the class becomes visible to |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
509 |
Smalltalk" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
510 |
|
2730
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
511 |
| nameComponents accessor nsName nsNameAsSymbol ns | |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
512 |
|
2526
ef415ed11871
Added JavaUnresolvedCompilationError.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2429
diff
changeset
|
513 |
javaclass isSynthetic ifTrue:[ ^ self ]. |
2841
6fa1bcf9c997
JavaClass>>#name vs. #binaryName refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2734
diff
changeset
|
514 |
nameComponents := javaclass binaryName asCollectionOfSubstringsSeparatedBy:$/. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
515 |
nameComponents size > 1 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
516 |
javaclass setCategory:((nameComponents asStringWith:$/ from:1 to:(nameComponents size - 1)) |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
517 |
replaceAll:$/ with:$. ). |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
518 |
] ifFalse:[ |
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
519 |
javaclass setCategory:#'(default)' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
520 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
521 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
522 |
nameComponents size > 1 ifTrue:[ |
2553
cacd370c2a15
Changed usage of deprecated #copyWithoutLast: to #copyButLast:
Stefan Vogel <sv@exept.de>
parents:
2437
diff
changeset
|
523 |
javaclass setPackage:((nameComponents copyButLast:1) asStringWith:$/) asSymbol |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
524 |
] ifFalse:[ |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
525 |
javaclass setPackage:#'java/(default)' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
526 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
527 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
528 |
"/ break up the package and create nameSpaces |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
529 |
"/ for each package component. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
530 |
"/ This allows java.foo.bar to be visible in ST/X |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
531 |
"/ under the name JAVA::java::foo::bar |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
532 |
|
2966 | 533 |
accessor := javaclass"JavaClassAccessor fullName: aString". |
2730
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
534 |
nsName := javaclass nameSpaceName. |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
535 |
nsNameAsSymbol := nsName asSymbolIfInterned. |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
536 |
(nsNameAsSymbol isNil or:[(ns := Smalltalk at: nsNameAsSymbol) isNil]) ifTrue:[ |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
537 |
Metaclass confirmationQuerySignal answer:false do:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
538 |
Class withoutUpdatingChangesDo:[ |
2730
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
539 |
ns := JavaPackage fullName:(nsName contents). |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
540 |
]. |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
541 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
542 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
543 |
ns isNameSpace ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
544 |
ns at:nameComponents last asSymbol put:accessor. |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
545 |
javaclass setEnvironment: ns. |
2841
6fa1bcf9c997
JavaClass>>#name vs. #binaryName refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2734
diff
changeset
|
546 |
javaclass setName: (nsName , '::' , nameComponents last) asSymbol |
2730
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
547 |
] ifFalse:[ |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
548 |
self breakPoint: #jv |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
549 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
550 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
551 |
doNotify ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
552 |
notifier add:(Array with: #newClass with: javaclass). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
553 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
554 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
555 |
"Created: / 04-04-2012 / 10:01:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2841
6fa1bcf9c997
JavaClass>>#name vs. #binaryName refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2734
diff
changeset
|
556 |
"Modified: / 08-10-2013 / 19:27:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3713 | 557 |
"Modified (comment): / 22-05-2017 / 14:13:26 / mawalch" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
558 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
559 |
|
3235 | 560 |
registerClassRedefined: class |
561 |
"Class has been redefined, so we have to invalidate |
|
3713 | 562 |
caches in the corresponding java.lang.Class. Luckily enough, |
563 |
there seems to be support for this - all we have to do is to |
|
564 |
increase the class redefinition count." |
|
3235 | 565 |
|
566 |
| classObject classObjectRedefinitionCountIndex classObjectRedefinitionCount | |
|
567 |
||
568 |
classObject := JavaVM reflection javaClassObjectForClass: class. |
|
569 |
classObjectRedefinitionCountIndex := classObject class instVarIndexFor: #classRedefinedCount. |
|
570 |
classObjectRedefinitionCount := classObject instVarAt:classObjectRedefinitionCountIndex. |
|
571 |
classObjectRedefinitionCount := classObjectRedefinitionCount + 1. |
|
572 |
classObject instVarAt:classObjectRedefinitionCountIndex put: classObjectRedefinitionCount. |
|
573 |
||
574 |
"Created: / 15-08-2014 / 15:09:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
3713 | 575 |
"Modified (comment): / 22-05-2017 / 14:13:58 / mawalch" |
3235 | 576 |
! |
577 |
||
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
578 |
unregisterClassInClassLoader: class |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
579 |
"Unregisters class from it's classloader" |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2553
diff
changeset
|
580 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
581 |
"/ OpenJDK java.class.ClassLoader keeps list of all loaded classes |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
582 |
"/ in a field `classes`. This method removes the class from the list. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
583 |
"/ This happens for instance when class is unloaded or reloaded. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
584 |
"/ For classes loaded by primordial class loader, `class classLoader1 |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
585 |
"/ returns nil. |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
586 |
class classLoader notNil ifTrue:[ |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
587 |
(class classLoader instVarNamed: #classes) |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
588 |
perform: #'remove(Ljava/lang/Object;)Z' |
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
589 |
with: (JavaVM reflection javaClassObjectForClass: class). |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
590 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
591 |
|
3216
1d977d2d3abb
es to ClassLoader#classes list.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3072
diff
changeset
|
592 |
"Created: / 11-08-2014 / 01:38:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
593 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
594 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
595 |
unregisterClassInSmalltalk: javaclass notify: doNotify |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
596 |
"Unregisters given class from Smalltalk system dictionary |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
597 |
so the class is no longer visible from Smalltalk" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
598 |
|
2872
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
599 |
| nameInSmalltalk nameInSmalltalkSymbol nameSpace | |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
600 |
|
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
601 |
"/ Must wait here - if classes are added and removed too fast, |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
602 |
"/ a race condition occur in stx:libbasic code (something is |
3713 | 603 |
"/ nilled meanwhile and event handler does not handle this case. |
2872
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
604 |
"/ This can happen for example when running tests... |
2966 | 605 |
notifier waitUntilProcessed. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
606 |
|
2526
ef415ed11871
Added JavaUnresolvedCompilationError.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2429
diff
changeset
|
607 |
javaclass isSynthetic ifTrue:[ ^ self ]. |
2872
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
608 |
nameSpace := javaclass nameSpace. |
2730
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
609 |
nameInSmalltalk := javaclass nameInSmalltalk. |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
610 |
nameInSmalltalkSymbol := nameInSmalltalk asSymbolIfInterned. |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
611 |
nameInSmalltalkSymbol notNil ifTrue:[ |
272689c14005
Fixed removing of Java classes (issue #40)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2705
diff
changeset
|
612 |
Smalltalk removeKey: nameInSmalltalkSymbol |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
613 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
614 |
doNotify ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
615 |
notifier add:(Array with: #classRemove with: javaclass). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
616 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
617 |
|
2872
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
618 |
[ nameSpace notNil and:[nameSpace ~~ JAVA and:[nameSpace allClasses size == 0]]] whileTrue:[ |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
619 |
Smalltalk removeClass: nameSpace. |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
620 |
nameSpace := nameSpace nameSpace. |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
621 |
]. |
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
622 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
623 |
"Created: / 04-04-2012 / 10:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2872
3ed529d88338
Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
624 |
"Modified: / 17-10-2013 / 10:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3713 | 625 |
"Modified (format): / 22-05-2017 / 14:15:25 / mawalch" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
626 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
627 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
628 |
!JavaClassRegistry class methodsFor:'documentation'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
629 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
630 |
version_CVS |
3713 | 631 |
^ '$Header$' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
632 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
633 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
634 |
version_SVN |
3713 | 635 |
^ '$Id$' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
636 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
637 |