--- a/ConstantNode.st Tue Nov 26 10:51:53 2002 +0100
+++ b/ConstantNode.st Tue Nov 26 11:47:04 2002 +0100
@@ -50,44 +50,47 @@
type:t value:val
"some constant nodes are used so often, its worth caching them"
(t == #True) ifTrue:[
- TrueNode isNil ifTrue:[
- TrueNode := (self basicNew) type:t value:val
- ].
- ^ TrueNode
+ TrueNode isNil ifTrue:[
+ TrueNode := (self basicNew) type:t value:val
+ ].
+ ^ TrueNode
].
(t == #False) ifTrue:[
- FalseNode isNil ifTrue:[
- FalseNode := (self basicNew) type:t value:val
- ].
- ^ FalseNode
+ FalseNode isNil ifTrue:[
+ FalseNode := (self basicNew) type:t value:val
+ ].
+ ^ FalseNode
].
(t == #Nil) ifTrue:[
- NilNode isNil ifTrue:[
- NilNode := (self basicNew) type:t value:val
- ].
- ^ NilNode
+ NilNode isNil ifTrue:[
+ NilNode := (self basicNew) type:t value:val
+ ].
+ ^ NilNode
].
(t == #Integer) ifTrue:[
- (val == 0) ifTrue:[
- Const0Node isNil ifTrue:[
- Const0Node := (self basicNew) type:t value:val
- ].
- ^ Const0Node
- ].
- (val == 1) ifTrue:[
- Const1Node isNil ifTrue:[
- Const1Node := (self basicNew) type:t value:val
- ].
- ^ Const1Node
- ]
+ (val == 0) ifTrue:[
+ Const0Node isNil ifTrue:[
+ Const0Node := (self basicNew) type:t value:val
+ ].
+ ^ Const0Node
+ ].
+ (val == 1) ifTrue:[
+ Const1Node isNil ifTrue:[
+ Const1Node := (self basicNew) type:t value:val
+ ].
+ ^ Const1Node
+ ]
].
(t == #Float) ifTrue:[
- (val = 0.0) ifTrue:[
- Float0Node isNil ifTrue:[
- Float0Node := (self basicNew) type:t value:val
- ].
- ^ Float0Node
- ]
+ (val = 0.0) ifTrue:[
+ "/ care for negative0 (which compares = to 0.0)
+ val isNegativeZero ifFalse:[
+ Float0Node isNil ifTrue:[
+ Float0Node := (self basicNew) type:t value:val
+ ].
+ ^ Float0Node
+ ]
+ ]
].
^ (self basicNew) type:t value:val
!
@@ -326,5 +329,5 @@
!ConstantNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/ConstantNode.st,v 1.29 2000-08-31 10:02:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/ConstantNode.st,v 1.30 2002-11-26 10:47:04 cg Exp $'
! !