extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 15 Jul 2018 18:18:34 +0200
branchjv
changeset 4384 aee25576d864
parent 3841 a22f33410bdf
child 4385 16741aa9dc2e
permissions -rw-r--r--
DBG: teach `ByteCodeCompiler` to generate Smalltalk/X debug info

"{ Package: 'stx:libcomp' }"!

!Block methodsFor:'accessing'!

dbgVariableTableBlock
    "Return a variable table block describing variables of
     this method (including those of inlined blocks)."     

    | varTable |

    varTable := self homeMethod dbgVariableTable.
    ^ varTable lookupBlock:sourcePos.

    "Created: / 15-07-2018 / 11:54:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (comment): / 15-07-2018 / 17:12:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!Context methodsFor:'accessing'!

dbgVariableTableBlock
    "Returns a table describing variables of this context (as `DIVariableBlock`)"
    
    ^ method dbgVariableTableBlock

    "Created: / 15-07-2018 / 11:52:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 15-07-2018 / 16:09:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!Method methodsFor:'accessing'!

dbgInfo
    "Returns debug info for this method or `nil` if not debug info
     available."

    | l |

    l := self at: 1.
    ^ l isByteArray ifTrue:[ DIInfo decode: l readStream ] ifFalse:[ nil ].

    "
    (Smalltalk class >> #loadPackage:asAutoloaded:) dbgInfo
    "

    "Created: / 10-07-2018 / 13:11:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (comment): / 15-07-2018 / 17:10:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!Method methodsFor:'accessing'!

dbgVariableTable
    ^ self dbgInfo dbgVariableTable

    "Created: / 15-07-2018 / 11:52:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!Method methodsFor:'accessing'!

dbgVariableTableBlock
    "Return a variable table block describing variables of
     this method (including those of inlined blocks)."

    | varTable |

    varTable := self dbgVariableTable.
    ^ varTable lookupBlock:0.

    "Created: / 15-07-2018 / 11:53:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified (comment): / 15-07-2018 / 17:12:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!Object methodsFor:'user interaction & notifications'!

notifyTodo:msg position:position
         className:className selector:selector
         severity:severityOrSeveritySymbol priority:priorityOrPrioritySymbol
         equalityParameter:equalityParameter checkAction:checkAction

    "this is a message from the compiler system, to allow for a hook to remember
     things to do. Can aslo used by other subsystems to add entries to the toDoList"

    (Tools::CompilerWarningToDoListEntry notNil
    and:[Tools::CompilerWarningToDoListEntry isLoaded]) ifFalse:[^ self ].

    Tools::CompilerWarningToDoListEntry
        notifyTodo:msg position:position
        className:className selector:selector
        severity:severityOrSeveritySymbol priority:priorityOrPrioritySymbol
        equalityParameter:equalityParameter checkAction:checkAction

    "Modified: / 15-03-2007 / 20:29:23 / cg"
! !

!stx_libcomp class methodsFor:'documentation'!

extensionsVersion_HG

    ^ '$Changeset: <not expanded> $'
! !