--- a/ReturnNode.st Fri Apr 25 18:42:16 2003 +0200
+++ b/ReturnNode.st Fri Apr 25 18:52:21 2003 +0200
@@ -45,20 +45,6 @@
"
! !
-!ReturnNode class methodsFor:'code generation helpers'!
-
-codeSimpleReturnFor:expression inBlock:b on:aStream inLine:lineNrOrNil for:aCompiler
- "/ let expression decide how to do it efficiently.
- expression
- codeForSimpleReturnOn:aStream
- inBlock:b
- lineNumber:lineNrOrNil
- for:aCompiler
-
- "Created: 21.10.1996 / 14:37:35 / cg"
- "Modified: 21.10.1996 / 14:43:11 / cg"
-! !
-
!ReturnNode methodsFor:'accessing'!
expression:e
@@ -84,21 +70,30 @@
^ self codeOn:aStream inBlock:b for:aCompiler
!
+codeForSimpleReturnOn:aStream inBlock:b lineNumber:lineNrOrNil for:aCompiler
+ "generate code to return myself as a simple method return"
+
+ self codeOn:aStream inBlock:b for:aCompiler.
+
+ "as a ReturnNode, I did return, so retTop is not needed"
+"/ aStream nextPut:#retTop.
+!
+
codeOn:aStream inBlock:b for:aCompiler
b isNil ifTrue:[
expression isNil ifTrue:[
aStream nextPut:#retNil.
] ifFalse:[
- self class
- codeSimpleReturnFor:expression
- inBlock:nil
- on:aStream
- inLine:lineNr
- for:aCompiler.
+ expression
+ codeForSimpleReturnOn:aStream
+ inBlock:b
+ lineNumber:lineNr
+ for:aCompiler
].
^ self.
].
+ "special: return from homeContext in a block"
expression codeOn:aStream inBlock:b for:aCompiler.
lineNr notNil ifTrue:[
@@ -154,5 +149,5 @@
!ReturnNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ReturnNode.st,v 1.28 2003-03-28 14:39:23 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ReturnNode.st,v 1.29 2003-04-25 16:52:21 stefan Exp $'
! !