VDBInstructionPresenter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 25 Jan 2019 13:33:51 +0000
changeset 143 df7f89efd39d
parent 91 c9da2e1b0327
child 146 c037aa4ce54f
permissions -rw-r--r--
A complete rewrite of simple console ..that is not using `TerminalView`. The original (previous) implementation had various problems that were hard to fix, namely loosing some stream output in some cases. New (current) implementation uses custom console view (1VDBSimpleDebuggerConsoleView`) based on `TextCollector` rather than `TerminalView`. The resulting code is much much simpler, it does not use internal pipes nor REPL / pipe reader processes. Whole REPL runs completely in UI process.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:vdb - Visual / VM Debugger
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
"{ Package: 'jv:vdb' }"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"{ NameSpace: Smalltalk }"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
VDBAbstractPresenter subclass:#VDBInstructionPresenter
80
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    14
	instanceVariableNames:'instruction basicBlock'
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	classVariableNames:''
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	poolDictionaries:''
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	category:'VDB-Presentation'
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!VDBInstructionPresenter class methodsFor:'documentation'!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
copyright
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
jv:vdb - Visual / VM Debugger
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
Copyright (C) 2015-now Jan Vrany
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
! !
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!VDBInstructionPresenter methodsFor:'accessing'!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
80
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    35
address
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    36
    ^instruction address
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    37
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    38
    "Created: / 26-06-2018 / 12:42:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    39
!
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    40
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    41
basicBlock
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    42
    ^ basicBlock
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    43
!
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    44
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
instruction
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    ^ instruction
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
subject
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Return an instance of GDB object that this presenter displays."
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    ^ instruction
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    "Created: / 22-06-2018 / 15:10:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
! !
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!VDBInstructionPresenter methodsFor:'initialization'!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
80
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    59
setBasicBlock: aVDBBasicBLock
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    60
    basicBlock := aVDBBasicBLock
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    61
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    62
    "Created: / 26-06-2018 / 12:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    63
!
7a9cf1d6be50 UX: improvements in disasembly view (`VDBInstructionListApplication`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
    64
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
setInstruction: aGDBInstruction
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    instruction := aGDBInstruction
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Created: / 22-06-2018 / 12:19:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
! !
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
!VDBInstructionPresenter methodsFor:'protocol-accessing'!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
label
91
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    74
    ^String streamContents:[ :s |
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    75
        (parent notNil and:[ parent askFor: #isInstructionsAndSourcePresenter ]) ifTrue:[
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    76
            s next: parent lineDigitsToDisplay put: Character space.   
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    77
        ].
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    78
        instruction address printOn: s base: 16 size: 16 fill: $0.
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    79
        s space.
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    80
        s nextPutAll: instruction assembly
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    81
    ]
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 22-06-2018 / 12:21:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
91
c9da2e1b0327 UX: show original source line in disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
    84
    "Modified: / 09-08-2018 / 11:15:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
77
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!VDBInstructionPresenter methodsFor:'testing'!
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
isInstructionPresenter
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    ^ true
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
! !
163d914fae79 Add initial support for disassembly view
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92