diff -r 1e05076a2dbb -r 1be5dd333adc MessageNode.st --- a/MessageNode.st Thu Aug 21 15:41:42 1997 +0200 +++ b/MessageNode.st Tue Sep 02 20:17:10 1997 +0200 @@ -10,6 +10,8 @@ hereby transferred. " +'From Smalltalk/X, Version:3.1.9 on 29-aug-1997 at 8:24:43 pm' ! + ParseNode subclass:#MessageNode instanceVariableNames:'receiver selector argArray lineNr selectorPosition' classVariableNames:'' @@ -306,6 +308,11 @@ receiver possiblyInlined:true ]. ]. + (selector == #repeat) ifTrue:[ + receiver isBlock ifTrue:[ + receiver possiblyInlined:true + ]. + ]. ]. numArgs == 1 ifTrue:[ @@ -372,7 +379,7 @@ ^ self "Created: 2.7.1997 / 17:01:10 / cg" - "Modified: 2.7.1997 / 18:26:45 / cg" + "Modified: 29.8.1997 / 08:20:57 / cg" ! plausibilityCheck @@ -926,6 +933,13 @@ ^ self codeWhileOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler. ] ]. + (selector == #repeat) ifTrue:[ + receiver isInlinable ifTrue:[ + valueNeeded ifFalse:[ + ^ self codeRepeatOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler. + ] + ] + ]. ]. isBuiltIn := aCompiler isBuiltInUnarySelector:selector forReceiver:receiver. @@ -1173,7 +1187,7 @@ ]. "Modified: 3.9.1995 / 12:55:42 / claus" - "Modified: 2.7.1997 / 18:54:09 / cg" + "Modified: 29.8.1997 / 08:19:45 / cg" ! codeOrIfElseOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler @@ -1376,6 +1390,18 @@ "Created: 10.11.1996 / 18:28:57 / cg" ! +codeRepeatOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler + "generate code for [ ... ] repeat" + + |pos| + + pos := aStream position. + receiver codeInlineOn:aStream inBlock:b valueNeeded:false for:aCompiler. + aStream nextPut:#jump; nextPut:pos. + + "Created: 29.8.1997 / 08:14:58 / cg" +! + codeSendOn:aStream inBlock:b valueNeeded:valueNeeded for:aCompiler "like code on, but assumes that receiver has already been coded onto stack - needed for cascade" @@ -2231,5 +2257,5 @@ !MessageNode class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.80 1997-08-05 14:34:57 cg Exp $' + ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.81 1997-09-02 18:17:10 cg Exp $' ! !