equal
deleted
inserted
replaced
7 inclusion of the above copyright notice. This software may not |
7 inclusion of the above copyright notice. This software may not |
8 be provided or otherwise made available to, or used by, any |
8 be provided or otherwise made available to, or used by, any |
9 other person. No title to or ownership of the software is |
9 other person. No title to or ownership of the software is |
10 hereby transferred. |
10 hereby transferred. |
11 " |
11 " |
|
12 |
|
13 'From Smalltalk/X, Version:3.1.9 on 29-aug-1997 at 8:24:43 pm' ! |
12 |
14 |
13 ParseNode subclass:#MessageNode |
15 ParseNode subclass:#MessageNode |
14 instanceVariableNames:'receiver selector argArray lineNr selectorPosition' |
16 instanceVariableNames:'receiver selector argArray lineNr selectorPosition' |
15 classVariableNames:'' |
17 classVariableNames:'' |
16 poolDictionaries:'' |
18 poolDictionaries:'' |
304 (selector == #value) ifTrue:[ |
306 (selector == #value) ifTrue:[ |
305 receiver isBlock ifTrue:[ |
307 receiver isBlock ifTrue:[ |
306 receiver possiblyInlined:true |
308 receiver possiblyInlined:true |
307 ]. |
309 ]. |
308 ]. |
310 ]. |
|
311 (selector == #repeat) ifTrue:[ |
|
312 receiver isBlock ifTrue:[ |
|
313 receiver possiblyInlined:true |
|
314 ]. |
|
315 ]. |
309 ]. |
316 ]. |
310 |
317 |
311 numArgs == 1 ifTrue:[ |
318 numArgs == 1 ifTrue:[ |
312 (selector == #or: |
319 (selector == #or: |
313 or:[selector == #and:]) ifTrue:[ |
320 or:[selector == #and:]) ifTrue:[ |
370 ^ self |
377 ^ self |
371 ]. |
378 ]. |
372 ^ self |
379 ^ self |
373 |
380 |
374 "Created: 2.7.1997 / 17:01:10 / cg" |
381 "Created: 2.7.1997 / 17:01:10 / cg" |
375 "Modified: 2.7.1997 / 18:26:45 / cg" |
382 "Modified: 29.8.1997 / 08:20:57 / cg" |
376 ! |
383 ! |
377 |
384 |
378 plausibilityCheck |
385 plausibilityCheck |
379 |rec arg operand| |
386 |rec arg operand| |
380 |
387 |
924 ((selector == #whileTrue) or:[selector == #whileFalse]) ifTrue:[ |
931 ((selector == #whileTrue) or:[selector == #whileFalse]) ifTrue:[ |
925 receiver isInlinable ifTrue:[ |
932 receiver isInlinable ifTrue:[ |
926 ^ self codeWhileOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler. |
933 ^ self codeWhileOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler. |
927 ] |
934 ] |
928 ]. |
935 ]. |
|
936 (selector == #repeat) ifTrue:[ |
|
937 receiver isInlinable ifTrue:[ |
|
938 valueNeeded ifFalse:[ |
|
939 ^ self codeRepeatOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler. |
|
940 ] |
|
941 ] |
|
942 ]. |
929 ]. |
943 ]. |
930 |
944 |
931 isBuiltIn := aCompiler isBuiltInUnarySelector:selector forReceiver:receiver. |
945 isBuiltIn := aCompiler isBuiltInUnarySelector:selector forReceiver:receiver. |
932 ]. |
946 ]. |
933 |
947 |
1171 valueNeeded ifFalse:[ |
1185 valueNeeded ifFalse:[ |
1172 aStream nextPut:#drop |
1186 aStream nextPut:#drop |
1173 ]. |
1187 ]. |
1174 |
1188 |
1175 "Modified: 3.9.1995 / 12:55:42 / claus" |
1189 "Modified: 3.9.1995 / 12:55:42 / claus" |
1176 "Modified: 2.7.1997 / 18:54:09 / cg" |
1190 "Modified: 29.8.1997 / 08:19:45 / cg" |
1177 ! |
1191 ! |
1178 |
1192 |
1179 codeOrIfElseOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler |
1193 codeOrIfElseOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler |
1180 "generate code for (x or:[y]) ifxxx:[ ... ] ifyyy:[ ... ]" |
1194 "generate code for (x or:[y]) ifxxx:[ ... ] ifyyy:[ ... ]" |
1181 |
1195 |
1372 |
1386 |
1373 code := aStream contents. |
1387 code := aStream contents. |
1374 code at:pos put:(aStream position) |
1388 code at:pos put:(aStream position) |
1375 |
1389 |
1376 "Created: 10.11.1996 / 18:28:57 / cg" |
1390 "Created: 10.11.1996 / 18:28:57 / cg" |
|
1391 ! |
|
1392 |
|
1393 codeRepeatOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler |
|
1394 "generate code for [ ... ] repeat" |
|
1395 |
|
1396 |pos| |
|
1397 |
|
1398 pos := aStream position. |
|
1399 receiver codeInlineOn:aStream inBlock:b valueNeeded:false for:aCompiler. |
|
1400 aStream nextPut:#jump; nextPut:pos. |
|
1401 |
|
1402 "Created: 29.8.1997 / 08:14:58 / cg" |
1377 ! |
1403 ! |
1378 |
1404 |
1379 codeSendOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler |
1405 codeSendOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler |
1380 "like code on, but assumes that receiver has already been |
1406 "like code on, but assumes that receiver has already been |
1381 coded onto stack - needed for cascade" |
1407 coded onto stack - needed for cascade" |
2229 ! ! |
2255 ! ! |
2230 |
2256 |
2231 !MessageNode class methodsFor:'documentation'! |
2257 !MessageNode class methodsFor:'documentation'! |
2232 |
2258 |
2233 version |
2259 version |
2234 ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.80 1997-08-05 14:34:57 cg Exp $' |
2260 ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.81 1997-09-02 18:17:10 cg Exp $' |
2235 ! ! |
2261 ! ! |