ConstantNode.st
changeset 1348 d7cc3ebd5312
parent 1080 bd3f19f6009a
child 1381 695fa03a5795
--- 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 $'
 ! !