UnaryNode.st
changeset 4270 0b40e4987029
parent 4159 c4e6052f03c7
equal deleted inserted replaced
4269:fb59cef471ec 4270:0b40e4987029
   149                  limit optimizations to those that will never change
   149                  limit optimizations to those that will never change
   150                  (or, if you change them, it will crash badly anyway ...)
   150                  (or, if you change them, it will crash badly anyway ...)
   151                 "
   151                 "
   152                 recVal respondsToArithmetic ifTrue:[
   152                 recVal respondsToArithmetic ifTrue:[
   153                     (#( negated abs asPoint degreesToRadians radiansToDegrees
   153                     (#( negated abs asPoint degreesToRadians radiansToDegrees
   154                         exp ln log sqrt reciprocal
   154                         reciprocal) includes:selector)
   155                         arcCos arcSin arcTan sin cos tan) includes:selector)
       
   156                     ifTrue:[
   155                     ifTrue:[
   157                         canFold := true
   156                         canFold := true
   158                     ]
   157                     ] ifFalse:[
       
   158                         (#(exp ln log sqrt
       
   159                             arcCos arcSin arcTan sin cos tan) includes:selector)
       
   160                         ifTrue:[
       
   161                             (recVal isKindOf:LargeInteger) ifFalse:[
       
   162                                 canFold := true
       
   163                             ]
       
   164                         ]
       
   165                     ].
   159                 ].
   166                 ].
   160                 recVal isCharacter ifTrue:[
   167                 recVal isCharacter ifTrue:[
   161                     (#( asciiValue asInteger digitValue asString) includes:selector)
   168                     (#( asciiValue asInteger digitValue asString) includes:selector)
   162                     ifTrue:[
   169                     ifTrue:[
   163                         canFold := true
   170                         canFold := true
   204     ].
   211     ].
   205 
   212 
   206     ^ (self basicNew) receiver:r selector:selectorString args:nil lineno:0
   213     ^ (self basicNew) receiver:r selector:selectorString args:nil lineno:0
   207 
   214 
   208     "Modified: / 03-07-2017 / 13:56:31 / cg"
   215     "Modified: / 03-07-2017 / 13:56:31 / cg"
       
   216     "Modified: / 25-05-2018 / 16:05:52 / Claus Gittinger"
   209 ! !
   217 ! !
   210 
   218 
   211 !UnaryNode methodsFor:'accessing'!
   219 !UnaryNode methodsFor:'accessing'!
   212 
   220 
   213 selectorPartPositions
   221 selectorPartPositions