MethodWithBreakpoints.st
author Stefan Vogel <sv@exept.de>
Tue, 28 Apr 2020 16:22:26 +0200
changeset 25375 b784fc06a5eb
parent 24787 da4c7b37af78
permissions -rw-r--r--
#REFACTORING by stefan class: KeyedCollection class added: #newWithCapacity:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24787
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
     1
"{ Encoding: utf8 }"
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
     2
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2012 by Claus Gittinger
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
17342
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
    16
"{ NameSpace: Smalltalk }"
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
    17
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
Method variableSubclass:#MethodWithBreakpoints
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'originalMethod'
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    20
	classVariableNames:'BreakpointedMethods'
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Kernel-Methods'
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!MethodWithBreakpoints class methodsFor:'documentation'!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2012 by Claus Gittinger
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 hereby transferred.
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    support for line-Breakpoints
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    instances of me are created when line-breakpoints are placed.
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    The only function I serve is to provide the originalMethod information,
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    and an easy way to check for having a breakpoint (is breakpointed).
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    [author:]
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
        Claus Gittinger
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    [see also:]
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
        Tools::BreakpointService
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
! !
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    57
!MethodWithBreakpoints class methodsFor:'instance creation'!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    58
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    59
new
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    60
    |newMethod|
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    61
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    62
    newMethod := super new.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    63
    BreakpointedMethods add:newMethod.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    64
    ^ newMethod
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    65
!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    66
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    67
new:numLiterals
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    68
    |newMethod|
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    69
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    70
    newMethod := super new:numLiterals.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    71
    BreakpointedMethods add:newMethod.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    72
    ^ newMethod
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    73
! !
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    74
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    75
!MethodWithBreakpoints class methodsFor:'class initialization'!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    76
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    77
initialize
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    78
    BreakpointedMethods := WeakIdentitySet new.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    79
! !
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    80
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    81
!MethodWithBreakpoints class methodsFor:'misc'!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    82
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    83
removeAllBreakpoints
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    84
    "remove all statement breakpoints on any method in the whole system"
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    85
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    86
    MethodWithBreakpoints allBreakpointedMethods do:[:m | m restoreOriginalMethod]
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    87
! !
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    88
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    89
!MethodWithBreakpoints class methodsFor:'queries'!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    90
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    91
allBreakpointedMethods
16790
3d7753eeb111 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16603
diff changeset
    92
    |invalidBreakpoints|
3d7753eeb111 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16603
diff changeset
    93
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    94
    BreakpointedMethods isNil ifTrue:[^ #() ].
16790
3d7753eeb111 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16603
diff changeset
    95
    invalidBreakpoints := BreakpointedMethods select:[:m | m mclass isNil].
17107
03c9aab4bbb3 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16790
diff changeset
    96
    invalidBreakpoints do:[:each | BreakpointedMethods remove:each ifAbsent:nil].
16790
3d7753eeb111 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16603
diff changeset
    97
    ^ BreakpointedMethods asOrderedCollection
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    98
! !
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
    99
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!MethodWithBreakpoints methodsFor:'accessing'!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
originalMethod
24787
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   103
    "return the original method; the one without breakpoints"
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   104
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    ^ originalMethod
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
originalMethod:something
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    originalMethod := something.
24787
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   110
!
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   111
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   112
originalMethodIfWrapped
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   113
    "return the original method; the one without breakpoints"
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   114
da4c7b37af78 #BUGFIX by exept
Claus Gittinger <cg@exept.de>
parents: 23741
diff changeset
   115
    ^ originalMethod ? self
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
! !
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
15928
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   118
!MethodWithBreakpoints methodsFor:'enumeration'!
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   119
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   120
breakpointsDo:aBlock
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   121
    self literalsDo:[:lit | 
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   122
        lit class == Breakpoint ifTrue:[
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   123
            aBlock value:lit 
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   124
        ]
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   125
    ].
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   126
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   127
    "Created: / 03-02-2014 / 10:34:45 / cg"
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   128
! !
c73eba7ee86c class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15718
diff changeset
   129
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   130
!MethodWithBreakpoints methodsFor:'misc'!
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   131
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   132
disableAllBreakpoints
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   133
    "disable all of my breakpoints"
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   134
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   135
    self breakpointsDo:[:bp | bp disable].
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   136
!
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   137
19851
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   138
disableBreakpointInLine:lineNr
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   139
    "disable one of my breakpoints"
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   140
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   141
    self breakpointsDo:[:bp | 
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   142
        bp line == lineNr ifTrue:[
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   143
            bp disable
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   144
        ].
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   145
    ].
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   146
!
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   147
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   148
restoreOriginalMethod
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   149
    "remove myself - i.e. replace by the original method 
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   150
     (i.e. the one without line breakpoints)"
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   151
16413
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   152
    | cls selector original |
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   153
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   154
    (cls := self mclass) notNil ifTrue:[
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   155
        (selector := self selector) notNil ifTrue:[
15718
061ac6f47a57 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15505
diff changeset
   156
            self breakPoint:#cg.
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   157
            "/ disable my breakpoints, in case it is currently active
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   158
            self disableAllBreakpoints.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   159
            
16413
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   160
            originalMethod notNil ifTrue:[ 
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   161
                original := originalMethod
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   162
            ] ifFalse:[
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   163
                original := self programmingLanguage compilerClass
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   164
                                        compile: self source 
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   165
                                        in: self mclass 
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   166
                                        notifying:nil 
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   167
                                        install:false 
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   168
                                        ifFail:[ self error:'Failed to recompile method' ].
16415
8edd95b72ac5 Oops, when creating new method for restore, preserve package and category.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16413
diff changeset
   169
                original setPackage: self package.
8edd95b72ac5 Oops, when creating new method for restore, preserve package and category.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16413
diff changeset
   170
                original setCategory: self category  .
16413
74b15e61126e Fixed MethodWithBreakpoints>>#restoreOriginalMethod
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15928
diff changeset
   171
            ].
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   172
            cls basicAddSelector:selector withMethod:original.
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   173
            BreakpointedMethods remove:self ifAbsent:[].
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   174
        ]
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   175
    ]
15718
061ac6f47a57 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15505
diff changeset
   176
061ac6f47a57 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 15505
diff changeset
   177
    "Modified: / 29-08-2013 / 01:17:05 / cg"
16415
8edd95b72ac5 Oops, when creating new method for restore, preserve package and category.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16413
diff changeset
   178
    "Modified: / 10-05-2014 / 11:03:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   179
! !
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   180
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
!MethodWithBreakpoints methodsFor:'queries'!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
17342
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   183
hasEnabledBreakpoints
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   184
    "true if any of my breakpoints is actually enabled"
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   185
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   186
    self breakpointsDo:[:any | 
20530
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   187
        any isEnabled ifTrue:[
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   188
            any isTracepoint ifFalse:[ ^ true].
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   189
        ].    
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   190
    ].
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   191
    ^ false.
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   192
!
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   193
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   194
hasEnabledTracepoints
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   195
    "true if any of my tracepoints is actually enabled"
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   196
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   197
    self breakpointsDo:[:any | 
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   198
        any isEnabled ifTrue:[
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   199
            any isTracepoint ifTrue:[
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   200
                ^ true
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   201
            ].
0afdf503f735 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 19851
diff changeset
   202
        ].
17342
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   203
    ].
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   204
    ^ false.
23741
4311c7105e0e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 20530
diff changeset
   205
! !
4311c7105e0e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 20530
diff changeset
   206
4311c7105e0e #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 20530
diff changeset
   207
!MethodWithBreakpoints methodsFor:'testing'!
17342
0cbab4ee5dc8 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 17107
diff changeset
   208
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
isMethodWithBreakpoints
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    ^ true
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    "Created: / 01-08-2012 / 17:26:59 / cg"
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
! !
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
!MethodWithBreakpoints class methodsFor:'documentation'!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
version
19851
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   218
    ^ '$Header$'
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
!
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
version_CVS
19851
2c2776c3a827 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 17342
diff changeset
   222
    ^ '$Header$'
14273
feb20a9d7b13 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
! !
15505
4c46f8a71f52 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 14273
diff changeset
   224
16603
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   225
f416f263fe99 class: MethodWithBreakpoints
Claus Gittinger <cg@exept.de>
parents: 16415
diff changeset
   226
MethodWithBreakpoints initialize!