UnaryNode.st
changeset 2001 fd1703cee96f
parent 1998 6d71aa027bc4
child 2036 989b8836fc32
--- a/UnaryNode.st	Mon Mar 05 15:13:41 2007 +0100
+++ b/UnaryNode.st	Mon Mar 05 15:14:07 2007 +0100
@@ -77,19 +77,28 @@
                 recVal := r evaluate.
 
                 (globalName = 'Character') ifTrue:[
-                    ( #( tab cr space backspace esc ) includes:selector)
+                    ( #( tab cr lf return space backspace esc ) includes:selector)
                     ifTrue:[
                         canFold := true
                     ]
                 ].
                 (globalName = 'Float') ifTrue:[
-                    ( #( pi unity zero ) includes:selector)
+                    ( #( pi e NaN unity zero ) includes:selector)
                     ifTrue:[
                         (recVal respondsTo:selector) ifTrue:[
                             canFold := true
                         ]
                     ]
                 ].
+                (globalName = 'String') ifTrue:[
+                    ( #( cr crlf lf ) includes:selector)
+                    ifTrue:[
+                        (recVal respondsTo:selector) ifTrue:[
+                            canFold := true
+                        ]
+                    ]
+                ].
+
 "/ no, this 'optimization' is not good -
 "/ if bytecode is transported to another machine.
 "/ However, the JIT compiler compensates for this ;-)
@@ -181,7 +190,7 @@
 
     ^ (self basicNew) receiver:r selector:selectorString args:nil lineno:0
 
-    "Modified: / 16.11.1999 / 21:49:17 / cg"
+    "Modified: / 05-03-2007 / 15:11:26 / cg"
 ! !
 
 !UnaryNode methodsFor:'checks'!
@@ -253,24 +262,9 @@
         ]
     ].
 
-    "
-     optimize 
-        Float pi / NaN / e / unity / zero
-    "
-    ( #(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: / 05-03-2007 / 13:35:59 / cg"
+    "Modified: / 05-03-2007 / 15:11:35 / cg"
 ! !
 
 !UnaryNode methodsFor:'evaluation'!
@@ -299,33 +293,6 @@
 
 !UnaryNode methodsFor:'queries'!
 
-isConstant
-    "return true, if this node evaluates to a constant value"
-
-"/ not worth it ...
-"/ (and might lead to trouble whenever a common bytecode standard
-"/  is ever available)
-"/
-"/    receiver isGlobal ifTrue:[
-"/        receiver name = 'Smalltalk' ifTrue:[
-"/            selector == #isSmalltalkX ifTrue:[
-"/                ^ true
-"/            ].
-"/            selector == #isSqueak ifTrue:[
-"/                ^ true
-"/            ].
-"/            selector == #isVisualWorks ifTrue:[
-"/                ^ true
-"/            ].
-"/            selector == #isVisualAge ifTrue:[
-"/                ^ true
-"/            ].
-"/        ]
-"/    ].
-
-    ^ false
-!
-
 isUnaryMessage
     "return true, if this node is one for a unary message"
 
@@ -343,5 +310,5 @@
 !UnaryNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.48 2007-03-05 12:36:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.49 2007-03-05 14:14:07 cg Exp $'
 ! !