MessageNode.st
changeset 6 0cd4e7480440
parent 4 f6fd83437415
child 12 80f627afdd4e
--- a/MessageNode.st	Wed Oct 27 00:21:59 1993 +0100
+++ b/MessageNode.st	Sat Dec 11 02:07:55 1993 +0100
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
               All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.3 1993-10-13 02:41:26 claus Exp $
+$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.4 1993-12-11 01:07:40 claus Exp $
 '!
 
 !MessageNode class methodsFor:'instance creation'!
@@ -126,6 +126,10 @@
     ^ argArray at:1
 !
 
+lineNumber
+     ^ lineNr
+!
+
 lineNumber:num
      lineNr := num
 ! !
@@ -138,6 +142,15 @@
 
 !MessageNode class methodsFor:'queries'!
 
+hasLineNumber:sel
+    "return true, if special send code needs lineNr"
+
+    (sel == #==) ifTrue:[^ false].
+    (sel == #~~) ifTrue:[^ false].
+    (sel == #class) ifTrue:[^ false].
+    ^ true
+!
+
 isBuiltInUnarySelector:sel
     "return true, if unary selector sel is built in"
 
@@ -152,6 +165,8 @@
     (sel == #height) ifTrue:[^ true].
     (sel == #origin) ifTrue:[^ true].
     (sel == #extent) ifTrue:[^ true].
+    (sel == #asInteger) ifTrue:[^ true].
+    (sel == #rounded) ifTrue:[^ true].
     ^ false
 !
 
@@ -516,12 +531,14 @@
     aStream nextPut:#dup.
     aStream nextPut:#push0.
     aStream nextPut:#>.
+    aStream nextPut:lineNr.
     aStream nextPut:#falseJump.
     pos2 := aStream position.
     aStream nextPut:0.
 
     (argArray at:1) codeInlineOn:aStream inBlock:b valueNeeded:false.
     aStream nextPut:#minus1.
+    aStream nextPut:lineNr.
     aStream nextPut:#jump.
     aStream nextPut:pos.
 
@@ -817,7 +834,7 @@
             ].
 "
             receiver isConstant ifTrue:[
-                (receiver evaluate isKindOf:Number) ifTrue:[
+                receiver evaluate isNumber ifTrue:[
                     self codeTimesRepeatOn:aStream inBlock:b valueNeeded:valueNeeded.
                     ^ self
                 ]
@@ -860,6 +877,9 @@
                 ]
             ].
             aStream nextPut:selector.
+            (self class hasLineNumber:selector) ifTrue:[
+                aStream nextPut:lineNr.
+            ].
             valueNeeded ifFalse:[
                 aStream nextPut:#drop
             ].
@@ -1014,6 +1034,9 @@
                 ]
             ].
             aStream nextPut:selector.
+            (self class hasLineNumber:selector) ifTrue:[
+                aStream nextPut:lineNr.
+            ].
             valueNeeded ifFalse:[
                 aStream nextPut:#drop
             ].
@@ -1133,6 +1156,7 @@
                 ]
             ].
             aStream nextPut:selector.
+            aStream nextPut:lineNr.
             aStream nextPut:#drop.
             ^ self
         ]