--- 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 $'
! !