MessageNode.st
changeset 602 1be5dd333adc
parent 595 a90e8d8bf417
child 624 e71abe9654e6
--- 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 $'
 ! !