--- a/UnaryNode.st Wed Oct 22 15:54:04 1997 +0200
+++ b/UnaryNode.st Thu Oct 23 16:33:29 1997 +0200
@@ -10,7 +10,7 @@
hereby transferred.
"
-'From Smalltalk/X, Version:3.2.1 on 21-oct-1997 at 7:10:34 pm' !
+'From Smalltalk/X, Version:3.2.1 on 23-oct-1997 at 2:05:56 pm' !
MessageNode subclass:#UnaryNode
instanceVariableNames:''
@@ -187,44 +187,49 @@
codeOn:aStream inBlock:b for:aCompiler
"append bytecode for the receiver to aStream."
+ |rSel notSelector|
+
"
optimize
- (a == b) not -> (a ~~ b)
- (a ~~ b) not -> (a == b)
+ (a == b) not -> (a ~~ b)
+ (a ~~ b) not -> (a == b)
"
(selector == #not) ifTrue:[
- (receiver class == BinaryNode) ifTrue:[
- (receiver selector == #==) ifTrue:[
- (BinaryNode receiver:(receiver receiver)
- selector:#~~
- arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
- ^ self
- ].
- (receiver selector == #~~) ifTrue:[
- (BinaryNode receiver:(receiver receiver)
- selector:#==
- arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
- ^ self
- ]
- ]
+ (receiver class == BinaryNode) ifTrue:[
+ ((rSel := receiver selector) == #==) ifTrue:[
+ notSelector := #~~
+ ] ifFalse:[
+ (rSel == #~~) ifTrue:[
+ notSelector := #==
+ ]
+ ].
+ notSelector notNil ifTrue:[
+ (BinaryNode receiver:(receiver receiver)
+ selector:notSelector
+ arg:(receiver arg)) codeOn:aStream inBlock:b for:aCompiler.
+ ^ self
+ ]
+ ]
].
"
optimize
- Float pi
+ Float pi
"
(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
- ]
- ]
+ (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
+ ]
+ ]
].
^ super codeOn:aStream inBlock:b for:aCompiler
+
+ "Modified: 23.10.1997 / 02:04:51 / cg"
! !
!UnaryNode methodsFor:'evaluating'!
@@ -267,11 +272,14 @@
isUnaryMessage
"return true, if this node is one for a unary message"
+
^ true
+
+ "Modified: 23.10.1997 / 02:05:18 / cg"
! !
!UnaryNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.23 1997-10-22 13:54:04 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.24 1997-10-23 14:33:29 cg Exp $'
! !