UnaryNode.st
changeset 1998 6d71aa027bc4
parent 1777 242e89fa2170
child 2001 fd1703cee96f
--- a/UnaryNode.st	Mon Mar 05 13:35:32 2007 +0100
+++ b/UnaryNode.st	Mon Mar 05 13:36:06 2007 +0100
@@ -9,7 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
 "{ Package: 'stx:libcomp' }"
 
 MessageNode subclass:#UnaryNode
@@ -242,9 +241,13 @@
             notSelector notNil ifTrue:[
                 aCompiler addLiteral:selector; addLiteral:rSel.
 
-                (BinaryNode receiver:(receiver receiver)
-                            selector:notSelector
-                                 arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
+                (BinaryNode 
+                        receiver:(receiver receiver)
+                        selector:notSelector
+                        arg:(receiver arg)) 
+                    codeOn:aStream 
+                    inBlock:b 
+                    for:aCompiler.
                 ^ self
             ]
         ]
@@ -252,22 +255,22 @@
 
     "
      optimize 
-        Float pi
+        Float pi / NaN / e / unity / zero
     "
-    (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
-            ]
+    ( #(pi NaN e unity zero) includes:selector) ifTrue:[
+        (receiver isGlobalNamed:#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"
+    "Modified: / 05-03-2007 / 13:35:59 / cg"
 ! !
 
 !UnaryNode methodsFor:'evaluation'!
@@ -340,5 +343,5 @@
 !UnaryNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.47 2006-07-17 11:34:14 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.48 2007-03-05 12:36:06 cg Exp $'
 ! !