author | convert-repo |
Mon, 24 Feb 2020 04:28:37 +0000 | |
changeset 4001 | d6b417080b11 |
parent 3860 | e87f2f1439e9 |
permissions | -rw-r--r-- |
3860
e87f2f1439e9
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents:
3602
diff
changeset
|
1 |
"{ Encoding: utf8 }" |
e87f2f1439e9
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents:
3602
diff
changeset
|
2 |
|
749 | 3 |
" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
4 |
Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
5 |
SWING Research Group, Czech Technical University |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
6 |
in Prague |
749 | 7 |
|
8 |
Permission is hereby granted, free of charge, to any person |
|
9 |
obtaining a copy of this software and associated documentation |
|
10 |
files (the 'Software'), to deal in the Software without |
|
11 |
restriction, including without limitation the rights to use, |
|
12 |
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
13 |
copies of the Software, and to permit persons to whom the |
|
14 |
Software is furnished to do so, subject to the following |
|
15 |
conditions: |
|
16 |
||
17 |
The above copyright notice and this permission notice shall be |
|
18 |
included in all copies or substantial portions of the Software. |
|
19 |
||
20 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, |
|
21 |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|
22 |
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
23 |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
24 |
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|
25 |
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
26 |
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|
27 |
OTHER DEALINGS IN THE SOFTWARE. |
|
28 |
" |
|
29 |
"{ Package: 'stx:libjava' }" |
|
30 |
||
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
31 |
"{ NameSpace: Smalltalk }" |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
32 |
|
749 | 33 |
Lookup subclass:#JavaLookup |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
34 |
instanceVariableNames:'j2j j2s s2j' |
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
35 |
classVariableNames:'Instance InvokeRSelectors' |
749 | 36 |
poolDictionaries:'' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
37 |
category:'Languages-Java-Interop' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
38 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
39 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
40 |
Lookup subclass:#JVM |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
41 |
instanceVariableNames:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
42 |
classVariableNames:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
43 |
poolDictionaries:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
44 |
privateIn:JavaLookup |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
45 |
! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
46 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
47 |
JavaLookup::JVM subclass:#J2S |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
48 |
instanceVariableNames:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
49 |
classVariableNames:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
50 |
poolDictionaries:'' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
51 |
privateIn:JavaLookup |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
52 |
! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
53 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
54 |
JavaLookup::JVM subclass:#J2J |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
55 |
instanceVariableNames:'' |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
56 |
classVariableNames:'NoSuchMethodErrorSelector' |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
57 |
poolDictionaries:'' |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
58 |
privateIn:JavaLookup |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
59 |
! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
60 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
61 |
JavaLookup::JVM subclass:#S2J |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
62 |
instanceVariableNames:'' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
63 |
classVariableNames:'' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
64 |
poolDictionaries:'' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
65 |
privateIn:JavaLookup |
749 | 66 |
! |
67 |
||
68 |
!JavaLookup class methodsFor:'documentation'! |
|
69 |
||
70 |
copyright |
|
71 |
" |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
72 |
Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
73 |
SWING Research Group, Czech Technical University |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
74 |
in Prague |
749 | 75 |
|
76 |
Permission is hereby granted, free of charge, to any person |
|
77 |
obtaining a copy of this software and associated documentation |
|
78 |
files (the 'Software'), to deal in the Software without |
|
79 |
restriction, including without limitation the rights to use, |
|
80 |
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
81 |
copies of the Software, and to permit persons to whom the |
|
82 |
Software is furnished to do so, subject to the following |
|
83 |
conditions: |
|
84 |
||
85 |
The above copyright notice and this permission notice shall be |
|
86 |
included in all copies or substantial portions of the Software. |
|
87 |
||
88 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, |
|
89 |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|
90 |
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
91 |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
92 |
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|
93 |
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
94 |
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|
95 |
OTHER DEALINGS IN THE SOFTWARE. |
|
96 |
||
97 |
" |
|
98 |
! ! |
|
99 |
||
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
100 |
!JavaLookup class methodsFor:'initialization'! |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
101 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
102 |
initialize |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
103 |
"Invoked at system start or when the class is dynamically loaded." |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
104 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
105 |
"/ please change as required (and remove this comment) |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
106 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
107 |
InvokeRSelectors := |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
108 |
#( |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
109 |
" 0" #'_INVOKEVIRTUAL_R:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
110 |
" 1" #'_INVOKEVIRTUAL_R:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
111 |
" 2" #'_INVOKEVIRTUAL_R:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
112 |
" 3" #'_INVOKEVIRTUAL_R:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
113 |
" 4" #'_INVOKEVIRTUAL_R:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
114 |
" 5" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
115 |
" 6" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
116 |
" 7" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
117 |
" 8" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
118 |
" 9" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
119 |
"10" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
120 |
"11" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
121 |
"12" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
122 |
"13" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
123 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
124 |
" 0" #'_INVOKEINTERFACE_R:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
125 |
" 1" #'_INVOKEINTERFACE_R:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
126 |
" 2" #'_INVOKEINTERFACE_R:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
127 |
" 3" #'_INVOKEINTERFACE_R:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
128 |
" 4" #'_INVOKEINTERFACE_R:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
129 |
" 5" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
130 |
" 6" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
131 |
" 7" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
132 |
" 8" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
133 |
" 9" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
134 |
"10" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
135 |
"11" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
136 |
"12" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
137 |
"13" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
138 |
) |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
139 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
140 |
"Modified (format): / 20-01-2014 / 13:50:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
141 |
! ! |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
142 |
|
749 | 143 |
!JavaLookup class methodsFor:'instance creation'! |
144 |
||
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
145 |
cleanup |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
146 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
147 |
Instance := nil. |
749 | 148 |
|
149 |
"Modified: / 25-02-2011 / 14:45:03 / kursjan <kursjan@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:
2293
diff
changeset
|
150 |
"Created: / 19-09-2011 / 23:25:08 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
151 |
"Modified: / 15-12-2011 / 23:05:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
152 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
153 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
154 |
instance |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
155 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
156 |
Instance isNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
157 |
Instance := self basicNew initialize |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
158 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
159 |
^Instance |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
160 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
161 |
"Modified: / 25-02-2011 / 14:45:03 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
162 |
"Created: / 19-09-2011 / 23:20:49 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
163 |
"Modified: / 15-12-2011 / 23:05:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 164 |
! |
165 |
||
166 |
new |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
167 |
^ self shouldNeverBeSent. |
749 | 168 |
|
169 |
"Created: / 25-02-2011 / 14:44:43 / kursjan <kursjan@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:
2293
diff
changeset
|
170 |
"Modified: / 29-08-2011 / 21:10:12 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
171 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
172 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
173 |
!JavaLookup methodsFor:'initialization'! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
174 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
175 |
initialize |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
176 |
"Invoked when a new instance is created." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
177 |
|
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
178 |
j2j := J2J new. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
179 |
j2s := J2S new. |
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
180 |
s2j := S2J new. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
181 |
|
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
182 |
"Modified: / 22-03-2016 / 22:39:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 183 |
! ! |
184 |
||
185 |
!JavaLookup methodsFor:'lookup'! |
|
186 |
||
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
187 |
lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
188 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
189 |
"Invoked by the VM to ask me for a method to call. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
190 |
The arguments are: the selector, receiver and arguments, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
191 |
the class to start the search in (for here-, super and directed sends) |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
192 |
the sending context and the inline/poly cache (instance of |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
193 |
PolymorphicInlineCache). " |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
194 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
195 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
196 |
"JV@2012-08-21: Following C code speeds up Java<->Smalltalk interop by |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
197 |
order of 2 magnitudes. However, it breaks Java reflection. |
749 | 198 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
199 |
This is because it does not handle package private methods correctly. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
200 |
On the other hand, PP methods are not handled correctly when not using |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
201 |
reflection anyway, so lets keep the optimization here. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
202 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
203 |
Once we will have functinal JIT compiler, we can remove it and Java |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
204 |
package-private method will be supported correctly in all cases. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
205 |
" |
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
206 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
207 |
| sender | |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
208 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
209 |
%{ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
210 |
OBJ method; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
211 |
method = __lookup(initialSearchClass, selector); |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
212 |
if ( method ) { |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
213 |
if ( ilcCache ) { |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
214 |
__ilcBind(ilcCache, initialSearchClass, method, selector); |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
215 |
} |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
216 |
RETURN (method); |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
217 |
} |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
218 |
%}. |
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
219 |
"/ Sigh, here we have to care about different code paths. The new JIT compilation scheme |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
220 |
"/ sends JavaVM>>_INVOKE*R:... for sends whose methodref is not yet resolved. Thus the stack |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
221 |
"/ (starting with sendingContext) may look like: |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
222 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
223 |
"/ (0) real sending context - whoever it is |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
224 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
225 |
"/ for resolved/interpreted sends or: |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
226 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
227 |
"/ (0) performWith:withArguments: |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
228 |
"/ (1) _INVOKEVIRTUAL_R:* / _INVOKEINTERFACE_R:* |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
229 |
"/ (2) real sending context - whoever it is |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
230 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
231 |
"/ for unresolved sends from JIT-compiled code. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
232 |
"/ In tha latter case we have to skip those 2 'implementation' contexts: |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
233 |
sender := sendingContext. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
234 |
sender selector == #perform:withArguments: ifTrue:[ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
235 |
sender := sender sender. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
236 |
(sender receiver == JavaVM and: [ InvokeRSelectors includes: sender selector ]) ifTrue:[ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
237 |
sender := sender sender. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
238 |
] ifFalse:[ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
239 |
sender := sendingContext. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
240 |
]. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
241 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
242 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
243 |
sender programmingLanguage isSmalltalk ifTrue:[ |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
244 |
aReceiver class theNonMetaclass programmingLanguage isJavaLike ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
245 |
^s2j lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
749 | 246 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
247 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
248 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
249 |
sender programmingLanguage isJavaLike ifTrue:[ |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
250 |
initialSearchClass programmingLanguage isSmalltalk ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
251 |
"Java to Smalltalk send" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
252 |
^j2s lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
253 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
254 |
initialSearchClass programmingLanguage isJavaLike ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
255 |
"Java to Java send" |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
256 |
^j2j lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
749 | 257 |
]. |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
258 |
self breakPoint: #jv. |
749 | 259 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
260 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
261 |
^super lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
262 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
263 |
"Created: / 01-10-2011 / 13:18:40 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
264 |
"Created: / 15-12-2011 / 23:11:45 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
265 |
"Modified: / 22-03-2016 / 22:44:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
266 |
! ! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
267 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
268 |
!JavaLookup::JVM methodsFor:'lookup'! |
3551
f8304e321df7
JavaLookup: make Java-to-Java lookup returning a trampoline when method is not found.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3550
diff
changeset
|
269 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
270 |
lookupMethodForSelector: selector directedTo: c |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
271 |
"This method performs standard Java lookup as required JVM 8 spec, 6.5 invokevirtual. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
272 |
NOTE: This method only handles Java method, i.e., it never returns a Smalltak |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
273 |
(or other language's) extension method." |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
274 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
275 |
| m s | |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
276 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
277 |
"Let C be the class of objectref. The actual method to be invoked is selected by the |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
278 |
following lookup procedure: |
3551
f8304e321df7
JavaLookup: make Java-to-Java lookup returning a trampoline when method is not found.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3550
diff
changeset
|
279 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
280 |
1. If C contains a declaration for an instance method m that |
3860
e87f2f1439e9
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents:
3602
diff
changeset
|
281 |
overrides (§5.4.5) the resolved method, then m is the method |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
282 |
to be invoked. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
283 |
2. Otherwise, if C has a superclass, a search for a declaration |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
284 |
of an instance method that overrides the resolved method |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
285 |
is performed, starting with the direct superclass of C and |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
286 |
continuing with the direct superclass of that class, and so forth, |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
287 |
until an overriding method is found or no further superclasses |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
288 |
exist. If an overriding method is found, it is the method to be |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
289 |
invoked." |
3551
f8304e321df7
JavaLookup: make Java-to-Java lookup returning a trampoline when method is not found.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3550
diff
changeset
|
290 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
291 |
m := super lookupMethodForSelector: selector directedTo: c. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
292 |
m isJavaMethod ifTrue:[ |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
293 |
m notNil ifTrue:[ |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
294 |
[ (s := super lookupMethodForSelector: selector directedTo: m mclass superclass) notNil ] whileTrue:[ |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
295 |
(m overrides: s) ifFalse:[ |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
296 |
m := s |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
297 |
]. |
3551
f8304e321df7
JavaLookup: make Java-to-Java lookup returning a trampoline when method is not found.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3550
diff
changeset
|
298 |
]. |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
299 |
]. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
300 |
]. |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
301 |
"3. Otherwise, if there is exactly one maximally-specific method |
3860
e87f2f1439e9
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents:
3602
diff
changeset
|
302 |
(§5.4.3.3) in the superinterfaces of C that matches the resolved |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
303 |
method's name and descriptor and is not abstract , then it is |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
304 |
the method to be invoked. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
305 |
" |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
306 |
m isNil ifTrue:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
307 |
| class interfaces superinterfaces interfaceMethod | |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
308 |
|
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
309 |
class := c. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
310 |
interfaces := Set new. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
311 |
"/ Collect interfaces from all superclasses. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
312 |
"/ We cannot use JavaClass>>allInterfaces as it also |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
313 |
"/ returns superinterfaces of interfaces, flattened." |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
314 |
[ class notNil ] whileTrue:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
315 |
interfaces addAll: c interfaces. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
316 |
class := class superclass. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
317 |
]. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
318 |
[ interfaces notEmpty ] whileTrue:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
319 |
interfaces do:[ :interface| |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
320 |
| interfaceMethod superinterfaces | |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
321 |
|
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
322 |
interfaceMethod := interface compiledMethodAt: selector. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
323 |
"/ We must also test whether found is a JavaMethod. It could |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
324 |
"/ be a Smalltalk extension in the interface - such methods |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
325 |
"/ are not handled here (no such thing in JVM spec) |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
326 |
(interfaceMethod notNil and: [interfaceMethod isJavaMethod]) ifTrue:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
327 |
m := interfaceMethod. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
328 |
"/ To terminate the loop |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
329 |
interfaces := superinterfaces := #(). |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
330 |
] ifFalse:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
331 |
superinterfaces isNil ifTrue:[ |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
332 |
superinterfaces := Set new. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
333 |
]. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
334 |
superinterfaces addAll: interface interfaces. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
335 |
]. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
336 |
interfaces := superinterfaces. |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
337 |
] |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
338 |
] |
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
339 |
]. |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
340 |
^ m |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
341 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
342 |
"Created: / 05-07-2012 / 11:06:07 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
343 |
"Modified: / 29-03-2016 / 20:42:05 / 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:
2293
diff
changeset
|
344 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
345 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
346 |
!JavaLookup::J2S methodsFor:'lookup'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
347 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
348 |
lookupMethodForSelector:selector directedTo:initialSearchClass for:receiver withArguments:argArrayOrNil from:sendingContext ilc: ilc |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
349 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
350 |
| d m | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
351 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
352 |
d := JavaDescriptor readFrom: (selector readStream skipThrough: $(; backStep; yourself). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
353 |
m := self lookupMethodForSelector: selector directedTo: initialSearchClass numArguments: d numArgs. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
354 |
m notNil ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
355 |
m := self compileProxyWithSelector: selector descriptor: d in: receiver class calling: m. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
356 |
ilc notNil ifTrue:[ilc bindTo: m forClass: receiver class]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
357 |
^m. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
358 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
359 |
^ nil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
360 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
361 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
362 |
"Created: / 06-09-2011 / 22:04:04 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
363 |
"Modified: / 09-10-2011 / 22:59:18 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
364 |
"Created: / 19-11-2011 / 12:37:26 / 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:
2293
diff
changeset
|
365 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
366 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
367 |
lookupMethodForSelector:jselector directedTo:initialSearchClass numArguments: nArgs |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
368 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
369 |
| name cls | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
370 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
371 |
name := jselector upTo: $(. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
372 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
373 |
"Pass 1: Search for explicitly annotated method" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
374 |
cls := initialSearchClass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
375 |
[ cls notNil ] whileTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
376 |
cls methodDictionary keysAndValuesDo:[:sel :mthd| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
377 |
| jdescriptor | |
749 | 378 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
379 |
mthd numArgs == nArgs ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
380 |
(jdescriptor := mthd annotationAt: #javaselector:) notNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
381 |
jdescriptor arguments first == jselector ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
382 |
^mthd |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
383 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
384 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
385 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
386 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
387 |
cls := cls superclass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
388 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
389 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
390 |
"Pass 2: Search for method with matching name" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
391 |
cls := initialSearchClass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
392 |
[ cls notNil ] whileTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
393 |
cls methodDictionary keysAndValuesDo:[:sel :mthd| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
394 |
mthd numArgs == nArgs ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
395 |
(sel startsWith: name) ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
396 |
^mthd |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
397 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
398 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
399 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
400 |
cls := cls superclass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
401 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
402 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
403 |
^nil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
404 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
405 |
"Created: / 16-12-2011 / 00:00:31 / 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:
2293
diff
changeset
|
406 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
407 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
408 |
!JavaLookup::J2S methodsFor:'utilities'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
409 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
410 |
addSelector:selector withMethod:proxy toClass:class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
411 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
412 |
ProxyMethod installProxies ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
413 |
Class withoutUpdatingChangesDo:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
414 |
class addSelector:selector withMethod:proxy. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
415 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
416 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
417 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
418 |
"Modified: / 23-12-2011 / 13:09:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 419 |
! |
420 |
||
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
421 |
compileProxyWithSelector:selector descriptor:descriptor in:class calling:callee |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
422 |
|compiler proxy body| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
423 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
424 |
compiler := ProxyMethodCompiler new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
425 |
body := compiler newJavaMethodInvocation: callee. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
426 |
body descriptor:descriptor. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
427 |
proxy := compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
428 |
compile:body |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
429 |
arguments:callee numArgs |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
430 |
selector: selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
431 |
"/ JK: do nod add here |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
432 |
"/ JV: Why? |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
433 |
self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
434 |
addSelector:selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
435 |
withMethod:proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
436 |
toClass:class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
437 |
^ proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
438 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
439 |
"Created: / 14-12-2011 / 20:48: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:
2293
diff
changeset
|
440 |
"Modified: / 01-01-2012 / 19:33:45 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
441 |
"Modified: / 24-02-2012 / 20:36:24 / 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:
2293
diff
changeset
|
442 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
443 |
|
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
444 |
!JavaLookup::J2J class methodsFor:'initialization'! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
445 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
446 |
initialize |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
447 |
"Invoked at system start or when the class is dynamically loaded." |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
448 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
449 |
NoSuchMethodErrorSelector := #( |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
450 |
" 0" #'throwNoSuchMethodError' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
451 |
" 1" #'throwNoSuchMethodError_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
452 |
" 2" #'throwNoSuchMethodError_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
453 |
" 3" #'throwNoSuchMethodError_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
454 |
" 4" #'throwNoSuchMethodError_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
455 |
" 5" #'throwNoSuchMethodError_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
456 |
" 6" #'throwNoSuchMethodError_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
457 |
" 7" #'throwNoSuchMethodError_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
458 |
" 8" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
459 |
" 9" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
460 |
"10" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
461 |
"11" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
462 |
"12" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
463 |
"13" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
464 |
"14" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
465 |
"15" #'throwNoSuchMethodError_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
466 |
). |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
467 |
|
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
468 |
"Modified (comment): / 29-03-2016 / 21:07:01 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
469 |
! ! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
470 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
471 |
!JavaLookup::J2J methodsFor:'lookup'! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
472 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
473 |
lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
474 |
| method | |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
475 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
476 |
method := self lookupMethodForSelector: selector directedTo: initialSearchClass. |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
477 |
"/ No method found. Return a trampoline that will throw NoSuchMethodError |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
478 |
method isNil ifTrue:[ |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
479 |
method := JavaVM class >> (NoSuchMethodErrorSelector at: argArrayOrNil size + 1) |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
480 |
]. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
481 |
ilcCache notNil ifTrue:[ |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
482 |
ilcCache bindTo: method forClass: initialSearchClass. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
483 |
]. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
484 |
^ method. |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
485 |
|
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
486 |
"Created: / 22-03-2016 / 22:43:05 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3555
47da2d42a016
JavaLookup: Fixed JVM lookup to search interfaces as defined in JVM Spec
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3554
diff
changeset
|
487 |
"Modified: / 29-03-2016 / 20:45:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
488 |
! ! |
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
489 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
490 |
!JavaLookup::S2J methodsFor:'lookup'! |
749 | 491 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
492 |
lookupMethodForSelector: selector directedTo: initialSearchClass for: receiver withArguments: argArrayOrNil from: sendingContext ilc: ilc |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
493 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
494 |
As a courtesy to a Smalltalker, try to map smalltalk selectors to a java ones. |
2791
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
495 |
Returns a method or nil" |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
496 |
|
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
497 |
| name candidates method | |
2791
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
498 |
|
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
499 |
"/ First, handle the simple case when Smalltalk 'performs' a Java selector, |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
500 |
"/ i.e., something like: |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
501 |
"/ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
502 |
"/ system perform: #'initializeSystemClass()V'. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
503 |
"/ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
504 |
"/ we have to distinguish between static method lookup (when a message |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
505 |
"/ is sent to the class) and instance method lookup since static methods |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
506 |
"/ are not inherited!! |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
507 |
receiver isBehavior ifTrue:[ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
508 |
"/ Lookup static method |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
509 |
method := receiver methodDictionary at: selector ifAbsent:[ nil ]. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
510 |
method notNil ifTrue:[ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
511 |
"/ Must ensure the class is initialized here!! See documentation |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
512 |
"/ for INVOKESTATIC |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
513 |
method javaClass classInit. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
514 |
^ method |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
515 |
]. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
516 |
] ifFalse:[ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
517 |
"/ Lookup instance method |
3554
1e2d0859a20c
JavaLookup: Make JavaLookup not to use JavaClass>>lookupMethodFor:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3552
diff
changeset
|
518 |
method := self lookupMethodForSelector: selector directedTo: receiver class. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
519 |
method notNil ifTrue:[ ^ method ]. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
520 |
]. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
521 |
|
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
522 |
|
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
523 |
"/ OK - assuming a Java object has been sent a smalltalk(ish) selector, |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
524 |
"/ try to map that selector to a Java selector...this is where the magic |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
525 |
"/ happens. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
526 |
name := selector upTo: $:. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
527 |
candidates := OrderedCollection new. |
2792
662204c99509
Oops, fixed interop for extensions defined on interfaces.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2791
diff
changeset
|
528 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
529 |
candidates := self lookupMethodsForSelector: selector in: initialSearchClass ? receiver class static: receiver isBehavior. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
530 |
candidates notEmpty ifTrue: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
531 |
"/ If candidates contains only one method that is not Java method, |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
532 |
"/ then return this method. It's either a smalltalk extension or |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
533 |
"/ ambiguous method trampoline... |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
534 |
(candidates size == 1 and:[ (method := candidates anElement) isJavaMethod not]) ifTrue:[ |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
535 |
ilc notNil ifTrue: [ ilc bindTo: method forClass: receiver class ]. |
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
536 |
^ method. |
2792
662204c99509
Oops, fixed interop for extensions defined on interfaces.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2791
diff
changeset
|
537 |
]. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
538 |
method := self |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
539 |
compileProxyWithSelector: selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
540 |
in: receiver class |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
541 |
candidates: candidates. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
542 |
ilc notNil ifTrue: [ ilc bindTo: method forClass: receiver class ]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
543 |
"Install the proxy" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
544 |
self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
545 |
addSelector: selector |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
546 |
withMethod: method |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
547 |
toClass: receiver class. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
548 |
^ method. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
549 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
550 |
"Hmm, hmm, maybe a public field?" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
551 |
(argArrayOrNil size < 2) ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
552 |
| field | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
553 |
field := initialSearchClass theNonMetaclass |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
554 |
lookupFieldFor: name |
3602
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
555 |
static: initialSearchClass isMetaclass. |
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
556 |
"/ Disallow interop access to non-public fields. |
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
557 |
(field notNil and:[field isPublic not]) ifTrue:[ |
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
558 |
field := nil |
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
559 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
560 |
field notNil ifTrue: [ |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
561 |
method := self |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
562 |
compileProxyWithSelector: selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
563 |
in: receiver class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
564 |
accessing: field. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
565 |
ilc notNil ifTrue: [ ilc bindTo: method forClass: receiver class ]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
566 |
"Install the proxy" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
567 |
self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
568 |
addSelector: selector |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
569 |
withMethod: method |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
570 |
toClass: receiver class. |
3552
9c3f3089d912
JavaLookup: Make Smalltalk-to-Java lookup to handle 'perform:' of static methods
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3551
diff
changeset
|
571 |
^ method. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
572 |
] |
749 | 573 |
]. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
574 |
^ nil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
575 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
576 |
"Created: / 21-02-2011 / 13:38:55 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
577 |
"Modified: / 29-08-2011 / 20:38:21 / kursjan" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
578 |
"Modified: / 20-09-2011 / 00:03:48 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
579 |
"Modified (format): / 25-09-2011 / 21:08:45 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
580 |
"Created: / 19-11-2011 / 13:03:39 / 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:
2293
diff
changeset
|
581 |
"Modified: / 01-01-2012 / 19:58:59 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
582 |
"Modified (comment): / 02-01-2012 / 10:35:25 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
583 |
"Modified: / 18-11-2012 / 18:17:28 / 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:
2293
diff
changeset
|
584 |
"Modified: / 16-12-2012 / 13:59:55 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>" |
3602
e35b48285df7
Issue #39: Fix interop access to public fields.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3555
diff
changeset
|
585 |
"Modified: / 26-07-2016 / 20:48:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
586 |
! |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
587 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
588 |
lookupMethodsForSelector: selector in: initialSearchClass static: static |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
589 |
"Lookup all matching methods for given (Smalltalk) selector starting with |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
590 |
`initialSearchClass`. If `static` is true, then search for static methods, |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
591 |
otherwise for search instance methods. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
592 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
593 |
Returns a list of method candidates that match given selector. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
594 |
" |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
595 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
596 |
| name nameSizePlusOne numArgs candidates finder1 finder2 cls ifacesQ ifacesSeen | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
597 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
598 |
name := selector upTo: $:. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
599 |
nameSizePlusOne := name size + 1. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
600 |
numArgs := selector numArgs. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
601 |
candidates := OrderedCollection new. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
602 |
ifacesSeen := Set new. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
603 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
604 |
"/ Method finder to lookup extension methods in interfaces... |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
605 |
finder1 := [:cls | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
606 |
cls interfaces notEmptyOrNil ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
607 |
ifacesQ := OrderedCollection with: (cls interfaces). |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
608 |
[ ifacesQ notEmpty ] whileTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
609 |
| ifaces newIfaces extension | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
610 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
611 |
ifaces := ifacesQ removeFirst. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
612 |
extension := nil. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
613 |
ifaces do:[:iface | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
614 |
(ifacesSeen includes: iface) ifFalse:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
615 |
| m | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
616 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
617 |
ifacesSeen add: iface. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
618 |
m := iface compiledMethodAt: selector. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
619 |
m notNil ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
620 |
extension notNil ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
621 |
"/ Ambiguous, return error trampoline |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
622 |
| sel | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
623 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
624 |
sel := |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
625 |
#( ambiguousMessageSend |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
626 |
ambiguousMessageSendWith: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
627 |
ambiguousMessageSendWith:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
628 |
ambiguousMessageSendWith:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
629 |
ambiguousMessageSendWith:With:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
630 |
ambiguousMessageSendWith:With:With:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
631 |
ambiguousMessageSendWith:With:With:With:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
632 |
ambiguousMessageSendWith:With:With:With:With:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
633 |
ambiguousMessageSendWith:With:With:With:With:With:With:With: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
634 |
) at: selector numArgs + 1. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
635 |
^ Array with: (self class compiledMethodAt: sel). |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
636 |
] ifFalse:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
637 |
extension := m. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
638 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
639 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
640 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
641 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
642 |
extension notNil ifTrue:[ ^ Array with: extension ]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
643 |
newIfaces := Set new. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
644 |
ifaces do:[:iface| newIfaces addAll: iface interfaces ]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
645 |
newIfaces notEmpty ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
646 |
ifacesQ add: newIfaces. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
647 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
648 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
649 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
650 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
651 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
652 |
"/ Method finder to map Java methods to smalltalk selectors... |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
653 |
finder2 := [:cls | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
654 |
cls methodDictionary keysAndValuesDo: [:sel :mthd | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
655 |
"candidates may contain a method with same selector -> |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
656 |
do not add super-class's method" |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
657 |
(candidates contains: [:each | each selector == sel ]) ifFalse: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
658 |
(mthd mclass ~~ ProxyMethod |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
659 |
and: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
660 |
((sel size >= nameSizePlusOne) |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
661 |
and: [ (sel at: nameSizePlusOne) == $( and: [ (sel startsWith: name) ] ]) |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
662 |
and: [ mthd descriptor numArgs == numArgs ] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
663 |
]) |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
664 |
ifTrue: [ candidates add: mthd ] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
665 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
666 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
667 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
668 |
"Search class for method candidates" |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
669 |
cls := initialSearchClass theNonMetaclass. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
670 |
static ifTrue: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
671 |
finder2 value: cls |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
672 |
] ifFalse: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
673 |
[ cls notNil and: [ cls ~~ JavaObject ] ] whileTrue: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
674 |
finder1 value: cls. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
675 |
finder2 value: cls. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
676 |
cls := cls superclass. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
677 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
678 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
679 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
680 |
candidates notEmpty ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
681 |
"because java compiler generates synthetic method, when overriden |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
682 |
method has narrows return type than method from superclass/interface, |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
683 |
we don't take these particular synthetic methods as candidates, they just |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
684 |
delegate to overridden methods." |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
685 |
((candidates size > 1) and:[candidates anySatisfy:[:each|each isSynthetic]]) ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
686 |
| candidatesPerNameAndArg | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
687 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
688 |
candidatesPerNameAndArg := Dictionary new. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
689 |
candidates do:[:each| |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
690 |
| nameAndArgs | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
691 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
692 |
nameAndArgs := each selector upTo:$). |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
693 |
candidatesPerNameAndArg at: nameAndArgs ifAbsentPut:[each]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
694 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
695 |
candidates := candidatesPerNameAndArg values. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
696 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
697 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
698 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
699 |
^ candidates. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
700 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
701 |
"Created: / 19-03-2014 / 16:24:33 / 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:
2293
diff
changeset
|
702 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
703 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
704 |
!JavaLookup::S2J methodsFor:'lookup (old)'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
705 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
706 |
old_lookupMethodForSelector:selector directedTo:initialSearchClass for:receiver withArguments:argArrayOrNil from:sendingContext ilc: ilc |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
707 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
708 |
As a courtesy to a Smalltalker, try to map smalltalk selectors to a java ones. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
709 |
Returns JavaMethodDescriptor or nil. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
710 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
711 |
|descriptor candidate static cls m | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
712 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
713 |
static := receiver isBehavior. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
714 |
descriptor := JavaMethodDescriptor |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
715 |
name: (selector upTo:$:) |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
716 |
parameters: (argArrayOrNil ? #() collect:[:a| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
717 |
(a class isString and: [JavaVM booted]) ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
718 |
JavaFieldDescriptorWithUnionType new |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
719 |
addDescriptor: (JavaFieldDescriptor javaClass: a class); |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2396
diff
changeset
|
720 |
addDescriptor: (JavaFieldDescriptor javaClass: (JavaVM classForName: 'java.lang.String')); |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
721 |
yourself. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
722 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
723 |
JavaFieldDescriptor javaClass: a class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
724 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
725 |
]). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
726 |
cls := initialSearchClass theNonMetaclass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
727 |
[ cls notNil and:[cls ~~ JavaObject] ] whileTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
728 |
cls methodsDo:[:mthd| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
729 |
"/(mthd selector startsWith: 'foo') ifTrue:[self breakPoint: #jv]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
730 |
(mthd class ~~ ProxyMethod and:[mthd isStatic == static and:[descriptor match: mthd descriptor]]) ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
731 |
candidate isNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
732 |
candidate := mthd |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
733 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
734 |
candidate descriptorSymbol ~~ mthd descriptorSymbol ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
735 |
"Hm, hm, two matching methods with different descriptors means |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
736 |
ambiguity...raise an error" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
737 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
738 |
"Bit hacky - NamespaceAwareLookup already has method to generate |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
739 |
ambigouous send trampouline..." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
740 |
^NamespaceAwareLookup instance ambiguousMessageSend: selector withArgs: argArrayOrNil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
741 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
742 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
743 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
744 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
745 |
cls := cls superclass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
746 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
747 |
candidate notNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
748 |
m := self compileProxyWithSelector: selector descriptor: descriptor in: receiver class calling: candidate. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
749 |
ilc notNil ifTrue:[ilc bindTo: m forClass: receiver class]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
750 |
^m. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
751 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
752 |
^nil |
749 | 753 |
|
754 |
"Created: / 21-02-2011 / 13:38:55 / kursjan <kursjan@fit.cvut.cz>" |
|
755 |
"Modified: / 11-04-2011 / 20:19:50 / kursjan <kursjan@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:
2293
diff
changeset
|
756 |
"Modified: / 29-08-2011 / 20:38:21 / kursjan" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
757 |
"Modified: / 20-09-2011 / 00:03:48 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
758 |
"Modified (format): / 25-09-2011 / 21:08:45 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
759 |
"Created: / 16-12-2011 / 23:05:41 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2678
c865275e48a7
Updated to match Mercurial revision a00302fe5083 with two tweaks:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2396
diff
changeset
|
760 |
"Modified: / 07-05-2013 / 11:19: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:
2293
diff
changeset
|
761 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
762 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
763 |
!JavaLookup::S2J methodsFor:'matching'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
764 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
765 |
descriptorForJavaSelector:arg |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
766 |
^ MessageDescription new |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
767 |
parserClass: JavaSelectorParser; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
768 |
selector: arg; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
769 |
yourself. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
770 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
771 |
"Created: / 29-08-2011 / 20:41:48 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
772 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
773 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
774 |
descriptorForSmalltalkSelector:selector arguments: args |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
775 |
^ MessageDescription new |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
776 |
parserClass: SmalltalkSelectorParser; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
777 |
runtimeArguments: args; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
778 |
selector: selector; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
779 |
yourself. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
780 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
781 |
"Created: / 29-08-2011 / 21:44:06 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
782 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
783 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
784 |
findBestMatchOf: smalltalkMethod in: javaMethods |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
785 |
| methods | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
786 |
javaMethods size = 1 ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
787 |
^ javaMethods first. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
788 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
789 |
javaMethods size = 0 ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
790 |
^ nil |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
791 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
792 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
793 |
methods := javaMethods select: [:m | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
794 |
m argSize = smalltalkMethod argSize. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
795 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
796 |
methods size = 1 ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
797 |
^ methods first. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
798 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
799 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
800 |
methods := methods select: [:m | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
801 |
self javaMatches: m argTypes to: smalltalkMethod args. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
802 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
803 |
methods size = 1 ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
804 |
^ methods first. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
805 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
806 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
807 |
methods size = 0 ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
808 |
^ nil. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
809 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
810 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
811 |
^ Error raiseErrorString: 'Ambiguous selector: ', smalltalkMethod name. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
812 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
813 |
"Created: / 29-08-2011 / 20:50:14 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
814 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
815 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
816 |
javaMatches: jArgs to: sArgs |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
817 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
818 |
1 to: jArgs size do: [ :i | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
819 |
((JavaTypeBox typeBoxForJava: (jArgs at: i)) smalltalkType = ((sArgs at: i) className)) ifFalse: [ ^ false ]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
820 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
821 |
^ true. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
822 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
823 |
"Created: / 29-08-2011 / 21:21:37 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
824 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
825 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
826 |
javaSelectorsFor:class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
827 |
| selectors cls static | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
828 |
cls := class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
829 |
selectors := IdentitySet new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
830 |
self breakPoint: #jk info: 'determine static based on class'. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
831 |
static := false. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
832 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
833 |
[cls = JavaObject] whileFalse: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
834 |
cls methodDictionary keysAndValuesDo: [:k :v | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
835 |
(v isJavaMethod and: [v isStatic = static]) ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
836 |
selectors add: k. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
837 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
838 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
839 |
cls := cls superclass. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
840 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
841 |
^ selectors. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
842 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
843 |
"Created: / 06-09-2011 / 22:20:34 / Jan Kurs <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
844 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
845 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
846 |
!JavaLookup::S2J methodsFor:'trampolines'! |
2791
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
847 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
848 |
ambiguousMessageSend |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
849 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
850 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
851 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
852 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
853 |
arguments: #() |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
854 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
855 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
856 |
"Created: / 19-08-2010 / 22:05:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
857 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
858 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
859 |
ambiguousMessageSendWith: a1 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
860 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
861 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
862 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
863 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
864 |
arguments: (Array with: a1) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
865 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
866 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
867 |
"Created: / 19-08-2010 / 22:06:08 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
868 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
869 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
870 |
ambiguousMessageSendWith: a1 with: a2 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
871 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
872 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
873 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
874 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
875 |
arguments: (Array with: a1 with: a2) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
876 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
877 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
878 |
"Created: / 19-08-2010 / 22:06:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
879 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
880 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
881 |
ambiguousMessageSendWith: a1 with: a2 with: a3 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
882 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
883 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
884 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
885 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
886 |
arguments: (Array with: a1 with: a2 with: a3) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
887 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
888 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
889 |
"Created: / 19-08-2010 / 22:06:48 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
890 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
891 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
892 |
ambiguousMessageSendWith: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
893 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
894 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
895 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
896 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
897 |
arguments: (Array with: a1 with: a2 with: a3 with: a4) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
898 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
899 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
900 |
"Created: / 19-08-2010 / 22:06:56 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
901 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
902 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
903 |
ambiguousMessageSendWith: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
904 |
with: a5 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
905 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
906 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
907 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
908 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
909 |
arguments: (Array with: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
910 |
with: a5) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
911 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
912 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
913 |
"Created: / 19-08-2010 / 22:07:15 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
914 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
915 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
916 |
ambiguousMessageSendWith: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
917 |
with: a5 with: a6 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
918 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
919 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
920 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
921 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
922 |
arguments: (Array with: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
923 |
with: a5 with: a6) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
924 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
925 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
926 |
"Created: / 19-08-2010 / 22:07:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
927 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
928 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
929 |
ambiguousMessageSendWith: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
930 |
with: a5 with: a6 with: a7 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
931 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
932 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
933 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
934 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
935 |
arguments: (Array with: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
936 |
with: a5 with: a6 with: a7) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
937 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
938 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
939 |
"Created: / 19-08-2010 / 22:07:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
940 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
941 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
942 |
ambiguousMessageSendWith: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
943 |
with: a5 with: a6 with: a7 with: a8 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
944 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
945 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
946 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
947 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
948 |
arguments: (Array with: a1 with: a2 with: a3 with: a4 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
949 |
with: a5 with: a6 with: a7 with: a8) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
950 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
951 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
952 |
"Created: / 19-08-2010 / 22:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
953 |
! ! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
954 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
955 |
!JavaLookup::S2J methodsFor:'utilities'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
956 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
957 |
addSelector:selector withMethod:proxy toClass:class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
958 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
959 |
ProxyMethod installProxies ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
960 |
Class withoutUpdatingChangesDo:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
961 |
class addSelector:selector withMethod:proxy. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
962 |
proxy mclass: class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
963 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
964 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
965 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
966 |
"Created: / 01-01-2012 / 17:41:46 / 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:
2293
diff
changeset
|
967 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
968 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
969 |
compileProxyWithSelector:selector in:class accessing: field |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
970 |
"For given field, create a proxy getter/setter" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
971 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
972 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
973 |
|compiler proxy body isSetter | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
974 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
975 |
class theNonMetaclass classInit. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
976 |
isSetter := selector last == $:. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
977 |
compiler := ProxyMethodCompiler new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
978 |
isSetter ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
979 |
body := compiler newJavaFieldSetter: field. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
980 |
proxy := compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
981 |
compile:body |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
982 |
arguments: 1 |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
983 |
selector:selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
984 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
985 |
body := compiler newJavaFieldGetter: field. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
986 |
proxy := compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
987 |
compile:body |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
988 |
arguments: 0 |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
989 |
selector:selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
990 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
991 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
992 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
993 |
^ proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
994 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
995 |
"Modified: / 30-12-2011 / 14:44:11 / kursjan <kursjan@fit.cvut.cz>" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
996 |
"Created: / 17-03-2012 / 16:54:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 997 |
! |
998 |
||
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
999 |
compileProxyWithSelector:selector in:class candidates:candidates |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1000 |
"For given set of methods, create a dispatching proxy with given selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1001 |
This method performs typechecks on arguments and dispatch to proper method" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1002 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1003 |
|compiler proxy body fallback| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1004 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1005 |
compiler := ProxyMethodCompiler new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1006 |
fallback := self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1007 |
fallbackWithSelector:selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1008 |
in:class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1009 |
compiler:compiler. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1010 |
"Generate and install dispatching tree..." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1011 |
selector numArgs == 0 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1012 |
"If method has no arguments, no dynamic method dispatch is |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1013 |
required (method cannot be overloaded) Therefore, no fallback is |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1014 |
needed. In theory, there is no need for proxy method at all..." |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1015 |
self assert:candidates size == 1. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1016 |
body := compiler newJavaMethodInvocation:candidates anyOne. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1017 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1018 |
"JV@2012-01-01: Based on discussion with JK, if there is no overloaded method |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1019 |
DO NOT compile guard, call the method directly. We'll see..." |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1020 |
"JV@2014-03-19: NO, DON'T DO THAT, that's fundamentally wrong. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1021 |
A new overloaded method may come in future, for example |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1022 |
a new subclass may get loaded or a new method is added to |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1023 |
some class along the chain..." |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1024 |
"/ methods size == 1 ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1025 |
"/ body := (compiler newJavaMethodInvocation:methods anElement). |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1026 |
"/ ] ifFalse:[ |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1027 |
"For every method, create a guard and add it" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1028 |
body := fallback. |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1029 |
"/ ] |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1030 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1031 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1032 |
"/Create and install proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1033 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1034 |
proxy := compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1035 |
compile:body |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1036 |
arguments:selector numArgs |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1037 |
selector:selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1038 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1039 |
"/ self halt. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1040 |
"/ JK: do NOT install here, just compile and return the proxy. Let someone else to install |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1041 |
"/ self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1042 |
"/ addSelector:selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1043 |
"/ withMethod:proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1044 |
"/ toClasS:class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1045 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1046 |
^ proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1047 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1048 |
"Created: / 19-03-2014 / 17:28:03 / 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:
2293
diff
changeset
|
1049 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1050 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1051 |
compileProxyWithSelector: selector in: class receiver: receiver arguments: arguments |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1052 |
"For given receiver and arguments, selects apropriate method from methods |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1053 |
and compile guard" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1054 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1055 |
| compiler candidates method proxy condition invocation fallback guard | |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1056 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1057 |
compiler := ProxyMethodCompiler new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1058 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1059 |
proxy := class compiledMethodAt: selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1060 |
proxy notNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1061 |
fallback := proxy body |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1062 |
] ifFalse:[ |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1063 |
fallback := self fallbackWithSelector: selector in: class compiler: compiler. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1064 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1065 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1066 |
candidates := self lookupMethodsForSelector: selector in: receiver class static: receiver isBehavior. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1067 |
method := self selectMethodFrom: candidates arguments: arguments. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1068 |
invocation := compiler newJavaMethodInvocation:method. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1069 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1070 |
condition := nil. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1071 |
arguments withIndexDo:[:arg :index| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1072 |
condition isNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1073 |
condition := compiler newTypeCheck: arg class argument: index. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1074 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1075 |
condition := condition and: (compiler newTypeCheck: arg class argument: index). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1076 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1077 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1078 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1079 |
guard := compiler newGuard |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1080 |
condition: condition; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1081 |
action: invocation; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1082 |
fallback: fallback; |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1083 |
yourself. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1084 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1085 |
proxy := compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1086 |
compile:guard |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1087 |
arguments:selector numArgs |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1088 |
selector:selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1089 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1090 |
self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1091 |
addSelector:selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1092 |
withMethod:proxy |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1093 |
toClass:receiver class. |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1094 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1095 |
"Created: / 19-03-2014 / 17:27:26 / 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:
2293
diff
changeset
|
1096 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1097 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1098 |
fallbackWithSelector:selector in:class compiler:compiler |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1099 |
^ compiler |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1100 |
newJavaBlockInvocation:[:receiver :arguments | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1101 |
self |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1102 |
compileProxyWithSelector:selector |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1103 |
in:class |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1104 |
receiver:receiver |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1105 |
arguments:arguments. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1106 |
"/self breakPoint:#jv. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1107 |
receiver perform:selector withArguments:arguments. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1108 |
] |
749 | 1109 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1110 |
"Created: / 19-03-2014 / 17:25:38 / 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:
2293
diff
changeset
|
1111 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1112 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1113 |
selectMethodFrom: methods arguments: arguments |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1114 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1115 |
| candidates | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1116 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1117 |
methods size == 1 ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1118 |
^ methods anElement. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1119 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1120 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1121 |
candidates := methods. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1122 |
arguments withIndexDo:[:arg :index| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1123 |
| cls | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1124 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1125 |
cls := arg class. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1126 |
candidates := candidates select:[:m| |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1127 |
self breakPoint:#mh. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1128 |
self type: cls matches: (m descriptor parameters at: index) javaClass |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1129 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1130 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1131 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1132 |
candidates size == 0 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1133 |
self halt: 'Unfinished - no matching method' |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1134 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1135 |
candidates size == 1 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1136 |
^candidates anElement |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1137 |
]. |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1138 |
self breakPoint: #jv."/ This is a timed bomb... |
2729
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1139 |
^ candidates first |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1140 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1141 |
"Created: / 03-01-2012 / 21:40: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:
2293
diff
changeset
|
1142 |
"Modified: / 03-04-2012 / 13:59:13 / Marcel Hlopko <hlopkmar@fel.cvut.cz>" |
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
1143 |
"Modified: / 19-03-2014 / 16:41: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:
2293
diff
changeset
|
1144 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1145 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1146 |
type: actual matches: formal |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1147 |
"Return true, if actual (parameter) type matches given formal (parameter) type" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1148 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1149 |
formal isJavaPrimitiveType ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1150 |
actual == SmallInteger ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1151 |
^ formal == Integer or: [ actual == formal ]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1152 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1153 |
formal == Boolean ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1154 |
^ actual == True or: [ actual == False or: [ actual == Boolean ] ]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1155 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1156 |
^ actual == formal. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1157 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1158 |
"nil matches any formal type (to follow undocumented |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1159 |
feature of JVM (also seen in CHECKCAST instruction :))" |
2729
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1160 |
actual == UndefinedObject ifTrue: [ ^ true ]. |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1161 |
|
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1162 |
"char[] matches smalltal string..." |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1163 |
formal == Unicode16String ifTrue:[ |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1164 |
^ actual inheritsFrom: CharacterArray |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1165 |
]. |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1166 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1167 |
actual isJavaPrimitiveType ifTrue: [ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1168 |
^ formal isJavaWrapperClass and: [ formal == actual javaWrapperClass ] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1169 |
]. |
2981
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1170 |
(actual includesBehavior: String) ifTrue: [ |
2841
6fa1bcf9c997
JavaClass>>#name vs. #binaryName refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2792
diff
changeset
|
1171 |
^ formal binaryName == #'java/lang/String' |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1172 |
]. |
2981
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1173 |
|
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1174 |
(actual includesBehavior: Unicode16String) ifTrue: [ |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1175 |
^ formal binaryName == #'java/lang/String' |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1176 |
]. |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1177 |
|
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1178 |
(actual includesBehavior: Unicode32String) ifTrue: [ |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1179 |
^ formal binaryName == #'java/lang/String' |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1180 |
]. |
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1181 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1182 |
^ JavaVM canCast: actual to: formal |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1183 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1184 |
"Created: / 03-01-2012 / 22: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:
2293
diff
changeset
|
1185 |
"Modified: / 03-04-2012 / 13:59:28 / 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:
2293
diff
changeset
|
1186 |
"Modified: / 16-12-2012 / 11:44:17 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>" |
2981
5c86c719a79b
Fix in JavaLookup::Smalltalk2Java: match Unicode16/32String to java.lang.String when calling Java method from Smalltalk.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
1187 |
"Modified: / 21-01-2014 / 14:42:30 / 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:
2293
diff
changeset
|
1188 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1189 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
1190 |
!JavaLookup::S2J methodsFor:'utilities (old)'! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1191 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1192 |
old_compileProxyWithSelector: selector descriptor: descriptor in: class calling: callee |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1193 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1194 |
| proxy invocation fallback | |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1195 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1196 |
"This method might (indirectly) be invoked by guarded method itself, |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1197 |
when all guards fails and method gets recompiled during fallback action. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1198 |
In that case, we should not throw away existing proxy, but just extend it." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1199 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1200 |
proxy := class compiledMethodAt: selector. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1201 |
proxy isNil ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1202 |
"No method exists, create one..." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1203 |
proxy := ProxyMethod new. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1204 |
proxy numberOfArgs: callee descriptor numPhysicalArgs. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1205 |
proxy source:'I''m a proxy method, please inspect my body'. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1206 |
"Create default fallback" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1207 |
fallback := ProxyMethod newJavaBlockInvocation: [ self halt: 'Launch recompile, not yet implemented']. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1208 |
"Install it..." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1209 |
Class withoutUpdatingChangesDo:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1210 |
class addSelector: selector withMethod: proxy. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1211 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1212 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1213 |
"Method already exists, then the fallback is currently |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1214 |
installed body" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1215 |
fallback := proxy body. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1216 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1217 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1218 |
"Now, create and install a node that invokes given method" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1219 |
callee numArgs == 0 ifTrue:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1220 |
"If method has no arguments, no dynamic method dispatch is |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1221 |
required. Therefore, no fallback is needed. In theory, there is |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1222 |
no need for proxy method at all..." |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1223 |
self assert: descriptor numArgs size == 0. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1224 |
invocation := ProxyMethod newJavaMethodInvocation: callee. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1225 |
"Install it" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1226 |
proxy body: invocation |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1227 |
] ifFalse:[ |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1228 |
"Create a guard" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1229 |
invocation := ProxyMethod newGuard. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1230 |
invocation condition: callee descriptor guardCondition. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1231 |
invocation action: (ProxyMethod newJavaMethodInvocation: callee). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1232 |
invocation fallback: fallback. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1233 |
"Install it" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1234 |
proxy addGuard: invocation. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1235 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1236 |
"/Finally, return the method |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1237 |
^ proxy |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1238 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1239 |
"Created: / 16-12-2011 / 23:06:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 1240 |
! ! |
1241 |
||
1242 |
!JavaLookup class methodsFor:'documentation'! |
|
1243 |
||
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1244 |
version_CVS |
3412
df11bb428463
Merged with mercurial revision 4f3cc813be4 (8 changesets total)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3360
diff
changeset
|
1245 |
^ '$Header: /cvs/stx/stx/libjava/JavaLookup.st,v 1.8 2015-03-20 12:08:00 vrany Exp $' |
2293
d272dc6897a6
fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents:
2224
diff
changeset
|
1246 |
! |
d272dc6897a6
fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents:
2224
diff
changeset
|
1247 |
|
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1248 |
version_HG |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1249 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1250 |
^ '$Changeset: <not expanded> $' |
2224 | 1251 |
! |
1252 |
||
749 | 1253 |
version_SVN |
2731
13f5be2bf83b
Merged d87e89dd5276 and fe83a843a7bf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
diff
changeset
|
1254 |
^ 'Id' |
2152 | 1255 |
! ! |
2353
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1256 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
1257 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
1258 |
JavaLookup initialize! |
3551
f8304e321df7
JavaLookup: make Java-to-Java lookup returning a trampoline when method is not found.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3550
diff
changeset
|
1259 |
JavaLookup::J2J initialize! |