UnaryNode.st
changeset 626 7192fcd0a851
parent 625 0b93edcf1116
child 711 25b9a501b97d
--- a/UnaryNode.st	Wed Oct 22 15:54:04 1997 +0200
+++ b/UnaryNode.st	Thu Oct 23 16:33:29 1997 +0200
@@ -10,7 +10,7 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:3.2.1 on 21-oct-1997 at 7:10:34 pm'                  !
+'From Smalltalk/X, Version:3.2.1 on 23-oct-1997 at 2:05:56 pm'                  !
 
 MessageNode subclass:#UnaryNode
 	instanceVariableNames:''
@@ -187,44 +187,49 @@
 codeOn:aStream inBlock:b for:aCompiler
     "append bytecode for the receiver to aStream."
 
+    |rSel notSelector|
+
     "
      optimize 
-	(a == b) not -> (a ~~ b)
-	(a ~~ b) not -> (a == b)
+        (a == b) not -> (a ~~ b)
+        (a ~~ b) not -> (a == b)
     "
     (selector == #not) ifTrue:[
-	(receiver class == BinaryNode) ifTrue:[
-	    (receiver selector == #==) ifTrue:[
-		(BinaryNode receiver:(receiver receiver)
-			    selector:#~~
-				 arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
-		^ self
-	    ].
-	    (receiver selector == #~~) ifTrue:[
-		(BinaryNode receiver:(receiver receiver)
-			    selector:#==
-				 arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
-		^ self
-	    ]
-	]
+        (receiver class == BinaryNode) ifTrue:[
+            ((rSel := receiver selector) == #==) ifTrue:[
+                notSelector := #~~
+            ] ifFalse:[
+                (rSel == #~~) ifTrue:[
+                    notSelector := #==
+                ]
+            ].
+            notSelector notNil ifTrue:[
+                (BinaryNode receiver:(receiver receiver)
+                            selector:notSelector
+                                 arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
+                ^ self
+            ]
+        ]
     ].
 
     "
      optimize 
-	Float pi
+        Float pi
     "
     (selector == #pi) ifTrue:[
-	(receiver isGlobal) ifTrue:[
-	    receiver name = 'Float' ifTrue:[
-		aCompiler addLiteral:#Float; addLiteral:selector.
-		(ConstantNode type:#Float value:(Float pi))
-		    codeOn:aStream inBlock:b for:aCompiler.
-		^ self
-	    ]
-	]
+        (receiver isGlobal) ifTrue:[
+            receiver name = 'Float' ifTrue:[
+                aCompiler addLiteral:#Float; addLiteral:selector.
+                (ConstantNode type:#Float value:(Float pi))
+                    codeOn:aStream inBlock:b for:aCompiler.
+                ^ self
+            ]
+        ]
     ].
 
     ^ super codeOn:aStream inBlock:b for:aCompiler
+
+    "Modified: 23.10.1997 / 02:04:51 / cg"
 ! !
 
 !UnaryNode methodsFor:'evaluating'!
@@ -267,11 +272,14 @@
 
 isUnaryMessage
     "return true, if this node is one for a unary message"
+
     ^ true
+
+    "Modified: 23.10.1997 / 02:05:18 / cg"
 ! !
 
 !UnaryNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.23 1997-10-22 13:54:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.24 1997-10-23 14:33:29 cg Exp $'
 ! !