diff -r b1184649edb3 -r 522c116f86d9 ReturnNode.st --- a/ReturnNode.st Thu Apr 22 14:07:18 1999 +0200 +++ b/ReturnNode.st Sat Apr 24 23:39:42 1999 +0200 @@ -46,86 +46,12 @@ !ReturnNode class methodsFor:'code generation helper'! codeSimpleReturnFor:expression inBlock:b on:aStream inLine:lineNrOrNil for:aCompiler - |type value index code code2| - - expression isPrimary ifTrue:[ - type := expression type. - (type == #Nil) ifTrue:[ - code := #retNil - ] ifFalse:[ - (type == #True) ifTrue:[ - code := #retTrue - ] ifFalse:[ - (type == #False) ifTrue:[ - code := #retFalse - ] ifFalse:[ - (type == #Self) ifTrue:[ - code := #retSelf - ] ifFalse:[ - (type == #Integer) ifTrue:[ - value := expression evaluate. - (value between: -128 and:127) ifTrue:[ - (value == 0) ifTrue:[ - code := #ret0 - ] ifFalse:[ - code := #retNum. - code2 := value. - ] - ] - ] ifFalse:[ - (type == #InstanceVariable) ifTrue:[ - index := expression index. - (index <= 8) ifTrue:[ - code := #( retInstVar1 - retInstVar2 - retInstVar3 - retInstVar4 - retInstVar5 - retInstVar6 - retInstVar7 - retInstVar8) at:index - ] - ] ifFalse:[ - (type == #MethodVariable) ifTrue:[ - index := expression index. - (index <= 6) ifTrue:[ - code := #( retMethodVar1 - retMethodVar2 - retMethodVar3 - retMethodVar4 - retMethodVar5 - retMethodVar6) at:index - ] - ] ifFalse:[ - (type == #MethodArg) ifTrue:[ - index := expression index. - (index <= 2) ifTrue:[ - code := #(retMethodArg1 - retMethodArg2) at:index - ] - ] - ] - ] - ] - ] - ] - ] - ] - ]. - - code isNil ifTrue:[ - expression codeOn:aStream inBlock:b for:aCompiler. - code := #retTop - ]. - - lineNrOrNil notNil ifTrue:[ - self codeLineNumber:lineNrOrNil on:aStream for:aCompiler - ]. - - aStream nextPut:code. - code2 notNil ifTrue:[ - aStream nextPut:code2 - ]. + "/ 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" @@ -211,5 +137,5 @@ !ReturnNode class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libcomp/ReturnNode.st,v 1.21 1999-02-25 14:49:00 cg Exp $' + ^ '$Header: /cvs/stx/stx/libcomp/ReturnNode.st,v 1.22 1999-04-24 21:38:55 cg Exp $' ! !