MessageNode.st
changeset 386 2f66de89a89b
parent 371 d806c4bfe4a1
child 389 8aa5f9f08139
equal deleted inserted replaced
385:425fc425516b 386:2f66de89a89b
  1398 "/    valueNeeded ifTrue:[aStream nextPut:#pushNil].
  1398 "/    valueNeeded ifTrue:[aStream nextPut:#pushNil].
  1399 "/
  1399 "/
  1400     needLineNr := true.
  1400     needLineNr := true.
  1401 
  1401 
  1402     pos := aStream position.
  1402     pos := aStream position.
       
  1403 
       
  1404     aCompiler lineNumberInfo == #full ifTrue:[
       
  1405         ParseNode codeLineNumber:lineNr on:aStream for:aCompiler.
       
  1406     ].
       
  1407 
  1403     optByteCode notNil ifTrue:[
  1408     optByteCode notNil ifTrue:[
  1404         theReceiver codeOn:aStream inBlock:b for:aCompiler.
  1409         theReceiver codeOn:aStream inBlock:b for:aCompiler.
  1405         theArg notNil ifTrue:[
  1410         theArg notNil ifTrue:[
  1406             theArg codeOn:aStream inBlock:b for:aCompiler
  1411             theArg codeOn:aStream inBlock:b for:aCompiler
  1407         ]
  1412         ]
  1440         "/
  1445         "/
  1441         "/ cannot enable code below 
  1446         "/ cannot enable code below 
  1442         "/ (tiny loops would not be debuggable with next, since lineNo remains the same)
  1447         "/ (tiny loops would not be debuggable with next, since lineNo remains the same)
  1443         "/ think about it ...
  1448         "/ think about it ...
  1444         "/
  1449         "/
  1445 "/        blockExpr := theReceiver simpleSendBlockReceiver.
  1450         blockExpr := theReceiver simpleSendBlockExpression.
  1446 "/        blockExpr notNil ifTrue:[
  1451         blockExpr notNil ifTrue:[
  1447 "/            blockExpr isMessage ifTrue:[
  1452             blockExpr isMessage ifTrue:[
  1448 "/                (aCompiler hasLineNumber:(blockExpr selector)) ifTrue:[
  1453                 (aCompiler hasLineNumber:(blockExpr selector)) ifTrue:[
  1449 "/                    blockExpr lineNumber == lineNr ifTrue:[
  1454                     blockExpr lineNumber == lineNr ifTrue:[
  1450 "/                        needLineNr := false
  1455                         needLineNr := false
  1451 "/                    ]
  1456                     ]
  1452 "/                ]
  1457                 ]
  1453 "/            ]
  1458             ]
  1454 "/        ].
  1459         ].
  1455     ].
  1460     ].
  1456 
  1461 
  1457     needLineNr ifTrue:[
  1462     needLineNr ifTrue:[
  1458         (lineNr between:1 and:255) ifTrue:[
  1463         ParseNode codeLineNumber:lineNr on:aStream for:aCompiler.
  1459             aStream nextPut:#lineno; nextPut:lineNr.
       
  1460         ]
       
  1461     ].
  1464     ].
  1462 
  1465 
  1463     hasLoopBlock ifFalse:[
  1466     hasLoopBlock ifFalse:[
  1464         "/ simple [...] whileXXX
  1467         "/ simple [...] whileXXX
  1465         theByteCode ~~ #never ifTrue:[
  1468         theByteCode ~~ #never ifTrue:[
  1484         (aStream contents) at:pos2 put:(aStream position).
  1487         (aStream contents) at:pos2 put:(aStream position).
  1485     ].
  1488     ].
  1486 
  1489 
  1487     valueNeeded ifTrue:[aStream nextPut:#pushNil].
  1490     valueNeeded ifTrue:[aStream nextPut:#pushNil].
  1488 
  1491 
  1489     "Modified: 21.10.1996 / 10:28:39 / cg"
  1492     "Modified: 21.10.1996 / 17:05:40 / cg"
  1490 !
  1493 !
  1491 
  1494 
  1492 optimizedConditionFor:aReceiver with:aByteCode
  1495 optimizedConditionFor:aReceiver with:aByteCode
  1493     |rec sel stats|
  1496     |rec sel stats|
  1494 
  1497 
  1754 ! !
  1757 ! !
  1755 
  1758 
  1756 !MessageNode class methodsFor:'documentation'!
  1759 !MessageNode class methodsFor:'documentation'!
  1757 
  1760 
  1758 version
  1761 version
  1759     ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.55 1996-10-21 09:28:59 cg Exp $'
  1762     ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.56 1996-10-21 16:15:08 cg Exp $'
  1760 ! !
  1763 ! !