author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 22 Mar 2016 23:42:40 +0000 | |
changeset 3550 | 81ee3d2cc629 |
parent 3549 | 4a492755dd1f |
child 3551 | f8304e321df7 |
permissions | -rw-r--r-- |
749 | 1 |
" |
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
|
2 |
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
|
3 |
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
|
4 |
in Prague |
749 | 5 |
|
6 |
Permission is hereby granted, free of charge, to any person |
|
7 |
obtaining a copy of this software and associated documentation |
|
8 |
files (the 'Software'), to deal in the Software without |
|
9 |
restriction, including without limitation the rights to use, |
|
10 |
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
11 |
copies of the Software, and to permit persons to whom the |
|
12 |
Software is furnished to do so, subject to the following |
|
13 |
conditions: |
|
14 |
||
15 |
The above copyright notice and this permission notice shall be |
|
16 |
included in all copies or substantial portions of the Software. |
|
17 |
||
18 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, |
|
19 |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|
20 |
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
21 |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
22 |
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|
23 |
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
24 |
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|
25 |
OTHER DEALINGS IN THE SOFTWARE. |
|
26 |
" |
|
27 |
"{ Package: 'stx:libjava' }" |
|
28 |
||
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
29 |
"{ 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
|
30 |
|
749 | 31 |
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
|
32 |
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
|
33 |
classVariableNames:'Instance InvokeRSelectors' |
749 | 34 |
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
|
35 |
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
|
36 |
! |
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 |
|
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
38 |
Lookup subclass:#J2J |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
39 |
instanceVariableNames:'' |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
40 |
classVariableNames:'' |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
41 |
poolDictionaries:'' |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
42 |
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
|
43 |
! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
44 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
45 |
Lookup subclass:#J2S |
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
|
46 |
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
|
47 |
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
|
48 |
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
|
49 |
privateIn:JavaLookup |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
50 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
51 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
52 |
Lookup 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
|
53 |
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
|
54 |
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
|
55 |
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
|
56 |
privateIn:JavaLookup |
749 | 57 |
! |
58 |
||
59 |
!JavaLookup class methodsFor:'documentation'! |
|
60 |
||
61 |
copyright |
|
62 |
" |
|
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
|
63 |
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
|
64 |
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
|
65 |
in Prague |
749 | 66 |
|
67 |
Permission is hereby granted, free of charge, to any person |
|
68 |
obtaining a copy of this software and associated documentation |
|
69 |
files (the 'Software'), to deal in the Software without |
|
70 |
restriction, including without limitation the rights to use, |
|
71 |
copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
72 |
copies of the Software, and to permit persons to whom the |
|
73 |
Software is furnished to do so, subject to the following |
|
74 |
conditions: |
|
75 |
||
76 |
The above copyright notice and this permission notice shall be |
|
77 |
included in all copies or substantial portions of the Software. |
|
78 |
||
79 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, |
|
80 |
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
|
81 |
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
82 |
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
83 |
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
|
84 |
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
|
85 |
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
|
86 |
OTHER DEALINGS IN THE SOFTWARE. |
|
87 |
||
88 |
" |
|
89 |
! ! |
|
90 |
||
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
91 |
!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
|
92 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
93 |
initialize |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
94 |
"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
|
95 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
96 |
"/ 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
|
97 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
98 |
InvokeRSelectors := |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
99 |
#( |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
100 |
" 0" #'_INVOKEVIRTUAL_R:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
101 |
" 1" #'_INVOKEVIRTUAL_R:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
102 |
" 2" #'_INVOKEVIRTUAL_R:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
103 |
" 3" #'_INVOKEVIRTUAL_R:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
104 |
" 4" #'_INVOKEVIRTUAL_R:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
105 |
" 5" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
106 |
" 6" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
107 |
" 7" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
108 |
" 8" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
109 |
" 9" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
110 |
"10" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
111 |
"11" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
112 |
"12" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
113 |
"13" #'_INVOKEVIRTUAL_R:_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
114 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
115 |
" 0" #'_INVOKEINTERFACE_R:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
116 |
" 1" #'_INVOKEINTERFACE_R:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
117 |
" 2" #'_INVOKEINTERFACE_R:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
118 |
" 3" #'_INVOKEINTERFACE_R:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
119 |
" 4" #'_INVOKEINTERFACE_R:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
120 |
" 5" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
121 |
" 6" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
122 |
" 7" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
123 |
" 8" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
124 |
" 9" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
125 |
"10" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
126 |
"11" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
127 |
"12" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
128 |
"13" #'_INVOKEINTERFACE_R:_:_:_:_:_:_:_:_:_:_:_:_:_:_:' |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
129 |
) |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
130 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
131 |
"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
|
132 |
! ! |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
133 |
|
749 | 134 |
!JavaLookup class methodsFor:'instance creation'! |
135 |
||
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
|
136 |
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
|
137 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
138 |
Instance := nil. |
749 | 139 |
|
140 |
"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
|
141 |
"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
|
142 |
"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
|
143 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
144 |
|
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 |
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
|
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 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
|
148 |
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
|
149 |
]. |
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 |
^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
|
151 |
|
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 |
"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
|
153 |
"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
|
154 |
"Modified: / 15-12-2011 / 23:05:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 155 |
! |
156 |
||
157 |
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
|
158 |
^ self shouldNeverBeSent. |
749 | 159 |
|
160 |
"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
|
161 |
"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
|
162 |
! ! |
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 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
164 |
!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
|
165 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
166 |
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
|
167 |
"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
|
168 |
|
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
169 |
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
|
170 |
j2s := J2S new. |
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
171 |
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
|
172 |
|
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
173 |
"Modified: / 22-03-2016 / 22:39:19 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 174 |
! ! |
175 |
||
176 |
!JavaLookup methodsFor:'lookup'! |
|
177 |
||
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
|
178 |
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
|
179 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
180 |
"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
|
181 |
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
|
182 |
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
|
183 |
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
|
184 |
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
|
185 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
186 |
|
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 |
"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
|
188 |
order of 2 magnitudes. However, it breaks Java reflection. |
749 | 189 |
|
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
|
190 |
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
|
191 |
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
|
192 |
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
|
193 |
|
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 |
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
|
195 |
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
|
196 |
" |
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
197 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
198 |
| sender | |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
199 |
|
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
|
200 |
%{ |
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 |
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
|
202 |
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
|
203 |
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
|
204 |
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
|
205 |
__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
|
206 |
} |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
207 |
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
|
208 |
} |
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 |
%}. |
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
210 |
"/ 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
|
211 |
"/ 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
|
212 |
"/ (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
|
213 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
214 |
"/ (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
|
215 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
216 |
"/ 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
|
217 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
218 |
"/ (0) performWith:withArguments: |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
219 |
"/ (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
|
220 |
"/ (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
|
221 |
"/ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
222 |
"/ 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
|
223 |
"/ 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
|
224 |
sender := sendingContext. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
225 |
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
|
226 |
sender := sender sender. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
227 |
(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
|
228 |
sender := sender sender. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
229 |
] ifFalse:[ |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
230 |
sender := sendingContext. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
231 |
]. |
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
232 |
]. |
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
|
233 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
234 |
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
|
235 |
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
|
236 |
^s2j lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
749 | 237 |
]. |
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
|
238 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
239 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
240 |
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
|
241 |
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
|
242 |
"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
|
243 |
^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
|
244 |
]. |
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 |
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
|
246 |
"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
|
247 |
^j2j lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache. |
749 | 248 |
]. |
3550
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
249 |
self breakPoint: #jv. |
749 | 250 |
]. |
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
|
251 |
|
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 |
^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
|
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 |
"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
|
255 |
"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
|
256 |
"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
|
257 |
! ! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
258 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
259 |
!JavaLookup::J2J methodsFor:'lookup'! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
260 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
261 |
lookupMethodForSelector: selector directedTo: initialSearchClass |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
262 |
"This method performs standard Java lookup as required JVM spec. See |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
263 |
- JVM spec, 5.4.2.1 Method overriding |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
264 |
- JVM spec, 6.4 invokevirtual |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
265 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
266 |
This is hacky because of those stupid package-private methods. Sigh." |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
267 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
268 |
| method superMethod | |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
269 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
270 |
method := super lookupMethodForSelector: selector directedTo: initialSearchClass. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
271 |
method isNil ifTrue:[ ^ nil ]. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
272 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
273 |
superMethod := super lookupMethodForSelector: selector directedTo: method mclass superclass. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
274 |
[ superMethod notNil ] whileTrue:[ |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
275 |
(method overrides: superMethod) ifFalse:[ |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
276 |
method := superMethod |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
277 |
]. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
278 |
superMethod := super lookupMethodForSelector: selector directedTo: superMethod mclass superclass. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
279 |
]. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
280 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
281 |
^method |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
282 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
283 |
"Created: / 05-07-2012 / 11:06:07 / 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
|
284 |
! |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
285 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
286 |
lookupMethodForSelector:selector directedTo:initialSearchClass for:aReceiver withArguments:argArrayOrNil from:sendingContext ilc: ilcCache |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
287 |
| method | |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
288 |
method := self lookupMethodForSelector: selector directedTo: initialSearchClass. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
289 |
ilcCache notNil ifTrue:[ |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
290 |
ilcCache bindTo: method forClass: initialSearchClass. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
291 |
]. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
292 |
^ method. |
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
293 |
|
81ee3d2cc629
JavaLookuo: code for Java-to-Java lookup moved to JavaLookuo::J2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3549
diff
changeset
|
294 |
"Created: / 22-03-2016 / 22:43: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
|
295 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
296 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
297 |
!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
|
298 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
299 |
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
|
300 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
301 |
| 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
|
302 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
303 |
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
|
304 |
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
|
305 |
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
|
306 |
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
|
307 |
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
|
308 |
^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
|
309 |
] 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
|
310 |
^ 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
|
311 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
312 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
313 |
"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
|
314 |
"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
|
315 |
"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
|
316 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
317 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
318 |
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
|
319 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
320 |
| 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
|
321 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
322 |
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
|
323 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
324 |
"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
|
325 |
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
|
326 |
[ 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
|
327 |
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
|
328 |
| jdescriptor | |
749 | 329 |
|
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
|
330 |
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
|
331 |
(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
|
332 |
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
|
333 |
^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
|
334 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
335 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
336 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
337 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
338 |
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
|
339 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
340 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
341 |
"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
|
342 |
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
|
343 |
[ 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
|
344 |
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
|
345 |
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
|
346 |
(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
|
347 |
^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
|
348 |
] |
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 |
]. |
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 |
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
|
352 |
]. |
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 |
|
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 |
^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
|
355 |
|
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 |
"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
|
357 |
! ! |
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 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
359 |
!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
|
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 |
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
|
362 |
|
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 |
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
|
364 |
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
|
365 |
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
|
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 |
] |
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 |
"Modified: / 23-12-2011 / 13:09:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 370 |
! |
371 |
||
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
|
372 |
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
|
373 |
|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
|
374 |
|
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 |
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
|
376 |
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
|
377 |
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
|
378 |
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
|
379 |
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
|
380 |
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
|
381 |
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
|
382 |
"/ 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
|
383 |
"/ 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
|
384 |
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
|
385 |
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
|
386 |
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
|
387 |
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
|
388 |
^ 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
|
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 |
"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
|
391 |
"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
|
392 |
"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
|
393 |
! ! |
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 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
395 |
!JavaLookup::S2J methodsFor:'lookup'! |
749 | 396 |
|
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
|
397 |
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
|
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 |
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
|
400 |
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
|
401 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
402 |
| name candidates m | |
2791
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
403 |
|
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
|
404 |
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
|
405 |
candidates := OrderedCollection new. |
2792
662204c99509
Oops, fixed interop for extensions defined on interfaces.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2791
diff
changeset
|
406 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
407 |
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
|
408 |
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
|
409 |
"/ 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
|
410 |
"/ 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
|
411 |
"/ ambiguous method trampoline... |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
412 |
(candidates size == 1 and:[ (m := candidates anElement) isJavaMethod not]) ifTrue:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
413 |
ilc notNil ifTrue: [ ilc bindTo: m forClass: receiver class ]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
414 |
^ m. |
2792
662204c99509
Oops, fixed interop for extensions defined on interfaces.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2791
diff
changeset
|
415 |
]. |
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
|
416 |
m := 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
|
417 |
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
|
418 |
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
|
419 |
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
|
420 |
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
|
421 |
"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
|
422 |
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
|
423 |
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
|
424 |
withMethod: 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
|
425 |
toClass: 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
|
426 |
^ 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
|
427 |
]. |
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 |
"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
|
429 |
(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
|
430 |
| 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
|
431 |
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
|
432 |
lookupFieldFor: 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
|
433 |
static: initialSearchClass isMetaclass |
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 |
onlyPublic: 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
|
435 |
field 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
|
436 |
m := 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
|
437 |
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
|
438 |
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
|
439 |
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
|
440 |
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
|
441 |
"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
|
442 |
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
|
443 |
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
|
444 |
withMethod: 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
|
445 |
toClass: 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
|
446 |
^ 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
|
447 |
] |
749 | 448 |
]. |
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
|
449 |
^ 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
|
450 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
451 |
"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
|
452 |
"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
|
453 |
"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
|
454 |
"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
|
455 |
"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
|
456 |
"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
|
457 |
"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
|
458 |
"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
|
459 |
"Modified: / 16-12-2012 / 13:59:55 / Marcel Hlopko <marcel.hlopko@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
|
460 |
"Modified: / 19-03-2014 / 17:27:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
461 |
! |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
462 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
463 |
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
|
464 |
"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
|
465 |
`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
|
466 |
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
|
467 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
468 |
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
|
469 |
" |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
470 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
471 |
| 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
|
472 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
473 |
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
|
474 |
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
|
475 |
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
|
476 |
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
|
477 |
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
|
478 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
479 |
"/ 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
|
480 |
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
|
481 |
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
|
482 |
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
|
483 |
[ 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
|
484 |
| 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
|
485 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
486 |
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
|
487 |
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
|
488 |
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
|
489 |
(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
|
490 |
| m | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
491 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
492 |
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
|
493 |
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
|
494 |
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
|
495 |
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
|
496 |
"/ 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
|
497 |
| sel | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
498 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
499 |
sel := |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
500 |
#( ambiguousMessageSend |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
501 |
ambiguousMessageSendWith: |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
502 |
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
|
503 |
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
|
504 |
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
|
505 |
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
|
506 |
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
|
507 |
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
|
508 |
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
|
509 |
) 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
|
510 |
^ 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
|
511 |
] ifFalse:[ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
512 |
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
|
513 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
514 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
515 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
516 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
517 |
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
|
518 |
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
|
519 |
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
|
520 |
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
|
521 |
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
|
522 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
523 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
524 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
525 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
526 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
527 |
"/ 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
|
528 |
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
|
529 |
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
|
530 |
"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
|
531 |
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
|
532 |
(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
|
533 |
(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
|
534 |
and: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
535 |
((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
|
536 |
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
|
537 |
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
|
538 |
]) |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
539 |
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
|
540 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
541 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
542 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
543 |
"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
|
544 |
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
|
545 |
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
|
546 |
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
|
547 |
] ifFalse: [ |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
548 |
[ 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
|
549 |
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
|
550 |
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
|
551 |
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
|
552 |
] |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
553 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
554 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
555 |
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
|
556 |
"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
|
557 |
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
|
558 |
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
|
559 |
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
|
560 |
((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
|
561 |
| candidatesPerNameAndArg | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
562 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
563 |
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
|
564 |
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
|
565 |
| nameAndArgs | |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
566 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
567 |
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
|
568 |
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
|
569 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
570 |
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
|
571 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
572 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
573 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
574 |
^ candidates. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
575 |
|
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
576 |
"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
|
577 |
! ! |
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 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
579 |
!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
|
580 |
|
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 |
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
|
582 |
" |
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 |
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
|
584 |
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
|
585 |
" |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
586 |
|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
|
587 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
588 |
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
|
589 |
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
|
590 |
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
|
591 |
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
|
592 |
(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
|
593 |
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
|
594 |
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
|
595 |
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
|
596 |
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
|
597 |
] 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
|
598 |
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
|
599 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
600 |
]). |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
601 |
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
|
602 |
[ 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
|
603 |
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
|
604 |
"/(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
|
605 |
(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
|
606 |
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
|
607 |
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
|
608 |
] 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
|
609 |
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
|
610 |
"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
|
611 |
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
|
612 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
613 |
"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
|
614 |
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
|
615 |
^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
|
616 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
617 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
618 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
619 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
620 |
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
|
621 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
622 |
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
|
623 |
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
|
624 |
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
|
625 |
^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
|
626 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
627 |
^nil |
749 | 628 |
|
629 |
"Created: / 21-02-2011 / 13:38:55 / kursjan <kursjan@fit.cvut.cz>" |
|
630 |
"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
|
631 |
"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
|
632 |
"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
|
633 |
"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
|
634 |
"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
|
635 |
"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
|
636 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
637 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
638 |
!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
|
639 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
640 |
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
|
641 |
^ 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
|
642 |
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
|
643 |
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
|
644 |
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
|
645 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
646 |
"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
|
647 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
648 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
649 |
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
|
650 |
^ 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
|
651 |
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
|
652 |
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
|
653 |
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
|
654 |
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
|
655 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
656 |
"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
|
657 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
658 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
659 |
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
|
660 |
| 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
|
661 |
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
|
662 |
^ 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
|
663 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
664 |
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
|
665 |
^ 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
|
666 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
667 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
668 |
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
|
669 |
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
|
670 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
671 |
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
|
672 |
^ 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
|
673 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
674 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
675 |
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
|
676 |
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
|
677 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
678 |
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
|
679 |
^ 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
|
680 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
681 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
682 |
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
|
683 |
^ 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
|
684 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
685 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
686 |
^ 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
|
687 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
688 |
"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
|
689 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
690 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
691 |
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
|
692 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
693 |
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
|
694 |
((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
|
695 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
696 |
^ 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
|
697 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
698 |
"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
|
699 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
700 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
701 |
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
|
702 |
| 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
|
703 |
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
|
704 |
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
|
705 |
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
|
706 |
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
|
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 |
[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
|
709 |
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
|
710 |
(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
|
711 |
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
|
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 |
]. |
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 |
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
|
715 |
]. |
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 |
^ 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
|
717 |
|
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 |
"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
|
719 |
! ! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
720 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
721 |
!JavaLookup::S2J methodsFor:'trampolines'! |
2791
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
722 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
723 |
ambiguousMessageSend |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
724 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
725 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
726 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
727 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
728 |
arguments: #() |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
729 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
730 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
731 |
"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
|
732 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
733 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
734 |
ambiguousMessageSendWith: a1 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
735 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
736 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
737 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
738 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
739 |
arguments: (Array with: a1) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
740 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
741 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
742 |
"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
|
743 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
744 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
745 |
ambiguousMessageSendWith: a1 with: a2 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
746 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
747 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
748 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
749 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
750 |
arguments: (Array with: a1 with: a2) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
751 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
752 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
753 |
"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
|
754 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
755 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
756 |
ambiguousMessageSendWith: a1 with: a2 with: a3 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
757 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
758 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
759 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
760 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
761 |
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
|
762 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
763 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
764 |
"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
|
765 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
766 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
767 |
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
|
768 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
769 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
770 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
771 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
772 |
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
|
773 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
774 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
775 |
"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
|
776 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
777 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
778 |
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
|
779 |
with: a5 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
780 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
781 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
782 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
783 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
784 |
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
|
785 |
with: a5) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
786 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
787 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
788 |
"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
|
789 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
790 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
791 |
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
|
792 |
with: a5 with: a6 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
793 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
794 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
795 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
796 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
797 |
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
|
798 |
with: a5 with: a6) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
799 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
800 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
801 |
"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
|
802 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
803 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
804 |
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
|
805 |
with: a5 with: a6 with: a7 |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
806 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
807 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
808 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
809 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
810 |
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
|
811 |
with: a5 with: a6 with: a7) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
812 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
813 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
814 |
"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
|
815 |
! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
816 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
817 |
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
|
818 |
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
|
819 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
820 |
^self ambiguousMessage: |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
821 |
(Message |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
822 |
selector: thisContext selector |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
823 |
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
|
824 |
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
|
825 |
) |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
826 |
|
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
827 |
"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
|
828 |
! ! |
6a57107d168a
Improvement in interop/java extensions.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2732
diff
changeset
|
829 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
830 |
!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
|
831 |
|
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 |
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
|
833 |
|
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 |
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
|
835 |
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
|
836 |
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
|
837 |
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
|
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 |
] |
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 |
"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
|
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 |
|
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 |
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
|
845 |
"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
|
846 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
847 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
848 |
|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
|
849 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
850 |
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
|
851 |
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
|
852 |
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
|
853 |
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
|
854 |
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
|
855 |
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
|
856 |
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
|
857 |
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
|
858 |
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
|
859 |
] 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
|
860 |
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
|
861 |
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
|
862 |
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
|
863 |
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
|
864 |
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
|
865 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
866 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
867 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
868 |
^ 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
|
869 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
870 |
"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
|
871 |
"Created: / 17-03-2012 / 16:54:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 872 |
! |
873 |
||
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
874 |
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
|
875 |
"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
|
876 |
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
|
877 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
878 |
|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
|
879 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
880 |
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
|
881 |
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
|
882 |
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
|
883 |
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
|
884 |
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
|
885 |
"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
|
886 |
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
|
887 |
"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
|
888 |
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
|
889 |
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
|
890 |
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
|
891 |
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
|
892 |
] 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
|
893 |
"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
|
894 |
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
|
895 |
"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
|
896 |
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
|
897 |
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
|
898 |
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
|
899 |
"/ 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
|
900 |
"/ 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
|
901 |
"/ ] 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
|
902 |
"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
|
903 |
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
|
904 |
"/ ] |
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
|
905 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
906 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
907 |
"/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
|
908 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
909 |
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
|
910 |
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
|
911 |
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
|
912 |
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
|
913 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
914 |
"/ 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
|
915 |
"/ 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
|
916 |
"/ 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
|
917 |
"/ 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
|
918 |
"/ 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
|
919 |
"/ 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
|
920 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
921 |
^ 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
|
922 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
923 |
"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
|
924 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
925 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
926 |
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
|
927 |
"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
|
928 |
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
|
929 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
930 |
| 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
|
931 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
932 |
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
|
933 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
934 |
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
|
935 |
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
|
936 |
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
|
937 |
] 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
|
938 |
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
|
939 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
940 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
941 |
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
|
942 |
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
|
943 |
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
|
944 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
945 |
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
|
946 |
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
|
947 |
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
|
948 |
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
|
949 |
] 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
|
950 |
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
|
951 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
952 |
]. |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
953 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
954 |
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
|
955 |
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
|
956 |
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
|
957 |
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
|
958 |
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
|
959 |
|
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 |
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
|
961 |
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
|
962 |
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
|
963 |
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
|
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 |
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
|
966 |
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
|
967 |
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
|
968 |
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
|
969 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
970 |
"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
|
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 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
973 |
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
|
974 |
^ 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
|
975 |
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
|
976 |
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
|
977 |
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
|
978 |
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
|
979 |
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
|
980 |
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
|
981 |
"/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
|
982 |
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
|
983 |
] |
749 | 984 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
985 |
"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
|
986 |
! |
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 |
|
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 |
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
|
989 |
|
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 |
| 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
|
991 |
|
3041
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
992 |
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
|
993 |
^ 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
|
994 |
]. |
7a326f9f8aad
Bug fix in interop with respect to overloaded methods in subclasses.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2981
diff
changeset
|
995 |
|
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
|
996 |
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
|
997 |
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
|
998 |
| 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
|
999 |
|
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 |
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
|
1001 |
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
|
1002 |
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
|
1003 |
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
|
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 |
]. |
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 |
|
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 |
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
|
1008 |
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
|
1009 |
]. |
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 |
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
|
1011 |
^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
|
1012 |
]. |
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 |
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
|
1014 |
^ 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
|
1015 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1016 |
"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
|
1017 |
"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
|
1018 |
"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
|
1019 |
! |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1020 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1021 |
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
|
1022 |
"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
|
1023 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1024 |
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
|
1025 |
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
|
1026 |
^ 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
|
1027 |
]. |
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 |
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
|
1029 |
^ 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
|
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 |
^ 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
|
1032 |
]. |
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 |
"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
|
1034 |
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
|
1035 |
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
|
1036 |
|
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1037 |
"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
|
1038 |
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
|
1039 |
^ 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
|
1040 |
]. |
ac412f6ea6d4
More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2588
diff
changeset
|
1041 |
|
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
|
1042 |
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
|
1043 |
^ 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
|
1044 |
]. |
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
|
1045 |
(actual includesBehavior: String) ifTrue: [ |
2841
6fa1bcf9c997
JavaClass>>#name vs. #binaryName refactoring
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2792
diff
changeset
|
1046 |
^ 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
|
1047 |
]. |
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
|
1048 |
|
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
|
1049 |
(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
|
1050 |
^ 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
|
1051 |
]. |
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
|
1052 |
|
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
|
1053 |
(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
|
1054 |
^ 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
|
1055 |
]. |
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
|
1056 |
|
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
|
1057 |
^ 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
|
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 |
"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
|
1060 |
"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
|
1061 |
"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
|
1062 |
"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
|
1063 |
! ! |
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 |
|
3549
4a492755dd1f
JavaLookup: renamed JavaLookup::Smalltalk2Java to shorter JavaLookup::S2J
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3412
diff
changeset
|
1065 |
!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
|
1066 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1067 |
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
|
1068 |
|
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 |
| 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
|
1070 |
|
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 |
"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
|
1072 |
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
|
1073 |
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
|
1074 |
|
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 |
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
|
1076 |
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
|
1077 |
"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
|
1078 |
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
|
1079 |
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
|
1080 |
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
|
1081 |
"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
|
1082 |
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
|
1083 |
"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
|
1084 |
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
|
1085 |
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
|
1086 |
] |
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1087 |
] 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
|
1088 |
"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
|
1089 |
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
|
1090 |
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
|
1091 |
]. |
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 |
|
fa7400d022a0
Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2293
diff
changeset
|
1093 |
"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
|
1094 |
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
|
1095 |
"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
|
1096 |
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
|
1097 |
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
|
1098 |
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
|
1099 |
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
|
1100 |
"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
|
1101 |
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
|
1102 |
] 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
|
1103 |
"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
|
1104 |
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
|
1105 |
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
|
1106 |
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
|
1107 |
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
|
1108 |
"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
|
1109 |
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
|
1110 |
]. |
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 |
"/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
|
1112 |
^ 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
|
1113 |
|
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 |
"Created: / 16-12-2011 / 23:06:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
749 | 1115 |
! ! |
1116 |
||
1117 |
!JavaLookup class methodsFor:'documentation'! |
|
1118 |
||
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
|
1119 |
version_CVS |
3412
df11bb428463
Merged with mercurial revision 4f3cc813be4 (8 changesets total)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3360
diff
changeset
|
1120 |
^ '$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
|
1121 |
! |
d272dc6897a6
fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents:
2224
diff
changeset
|
1122 |
|
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
|
1123 |
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
|
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 |
^ '$Changeset: <not expanded> $' |
2224 | 1126 |
! |
1127 |
||
749 | 1128 |
version_SVN |
2731
13f5be2bf83b
Merged d87e89dd5276 and fe83a843a7bf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
diff
changeset
|
1129 |
^ 'Id' |
2152 | 1130 |
! ! |
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
|
1131 |
|
2976
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
1132 |
|
a384a02381c0
Update JavaLookup to work with new JIT-compilation scheme...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2841
diff
changeset
|
1133 |
JavaLookup initialize! |