GDBThreadState.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 12 Jul 2017 16:27:29 +0200
changeset 86 7f53d51a0a65
parent 67 c4ac76afe03d
child 91 472a4841a8b6
permissions -rw-r--r--
Cache thread status and update it on `=stopped` and `=running` events ...rather than asking thread info each time. This saves us the need to issue `-thread-info` each time *some* threas stops/runs.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:libgdbs' }"
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
     3
"{ NameSpace: Smalltalk }"
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
     4
50
61e8a7c86f38 Renamed GDBThreadStatus* to GDBThreadState*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
     5
Object subclass:#GDBThreadState
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'GDB-Core'
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    12
GDBThreadState class instanceVariableNames:'theOneAndOnlyInstance'
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    13
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    14
"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    15
 No other class instance variables are inherited by this class.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    16
"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    17
!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    18
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    19
!GDBThreadState class methodsFor:'instance creation'!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    20
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    21
flushSingleton
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    22
    "flushes the cached singleton"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    23
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    24
    theOneAndOnlyInstance := nil
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    25
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    26
    "
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    27
     self flushSingleton
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    28
    "
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    29
!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    30
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    31
fromString: aString
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    32
    aString = 'running' ifTrue:[ ^ GDBThreadStateRunning theOneAndOnlyInstance ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    33
    aString = 'stopped' ifTrue:[ ^ GDBThreadStateStopped theOneAndOnlyInstance ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    34
    aString = 'terminated' ifTrue:[ ^ GDBThreadStateTerminated theOneAndOnlyInstance ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    35
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    36
    self error: 'Inavlid thread state'
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    37
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    38
    "Created: / 08-03-2015 / 08:37:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    39
!
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    40
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    41
new
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    42
    "returns a singleton"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    43
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    44
    ^ self theOneAndOnlyInstance.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    45
!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    46
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    47
theOneAndOnlyInstance
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    48
    "returns a singleton"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    49
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    50
    self == GDBThreadState ifTrue:[ 
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    51
        self error: 'GDBThreadState is an abstract superclass'
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    52
    ].
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    53
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    54
    theOneAndOnlyInstance isNil ifTrue:[
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    55
        theOneAndOnlyInstance := self basicNew initialize.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    56
    ].
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    57
    ^ theOneAndOnlyInstance.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    58
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    59
    "Modified: / 01-10-2014 / 01:27:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    60
! !
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    61
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    62
!GDBThreadState class methodsFor:'testing'!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    63
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    64
isAbstract
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    65
    ^ self == GDBThreadState
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    66
! !
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 50
diff changeset
    67
50
61e8a7c86f38 Renamed GDBThreadStatus* to GDBThreadState*
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
    68
!GDBThreadState methodsFor:'testing'!
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
isRunning
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ^ false
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Created: / 07-09-2014 / 23:22:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
isStopped
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    ^ false
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "Created: / 07-09-2014 / 23:22:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
isTerminated
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    ^ false
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "Created: / 07-09-2014 / 23:22:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    86
!
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    87
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    88
isUnknown
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    89
    ^ false
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    90
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    91
    "Created: / 12-07-2017 / 13:35:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
! !
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93