MessageTally.st
author Patrik Svestka <patrik.svestka@gmail.com>
Wed, 14 Nov 2018 12:47:50 +0100
branchjv
changeset 4384 e28fcaaf93c7
parent 4097 6553a6479595
permissions -rw-r--r--
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present - All source *.st files are now Unicode UTF8 without BOM Files are in two groups (fileOut works this way in Smalltalk/X): - containing a unicode character have "{ Encoding: utf8 }" at the header - ASCII only are without the header
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
470788421600 Initial revision
claus
parents:
diff changeset
     1
"
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
     3
	      All Rights Reserved
0
470788421600 Initial revision
claus
parents:
diff changeset
     4
470788421600 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
470788421600 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
470788421600 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
470788421600 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
470788421600 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
470788421600 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
470788421600 Initial revision
claus
parents:
diff changeset
    11
"
957
54dade11e57f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 770
diff changeset
    12
"{ Package: 'stx:libbasic3' }"
54dade11e57f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 770
diff changeset
    13
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
    14
"{ NameSpace: Smalltalk }"
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
    15
120
950e4628d657 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 119
diff changeset
    16
Object subclass:#MessageTally
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
    17
	instanceVariableNames:'tree probes ntally theBlock spyInterval executing startTime
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
    18
		endTime'
236
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    19
	classVariableNames:''
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    20
	poolDictionaries:''
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    21
	category:'System-Debugging-Support'
0
470788421600 Initial revision
claus
parents:
diff changeset
    22
!
470788421600 Initial revision
claus
parents:
diff changeset
    23
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    24
!MessageTally class methodsFor:'documentation'!
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    25
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    26
copyright
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    27
"
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    28
 COPYRIGHT (c) 1995 by Claus Gittinger
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    29
	      All Rights Reserved
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    30
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    31
 This software is furnished under a license and may be used
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    32
 only in accordance with the terms of that license and with the
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    34
 be provided or otherwise made available to, or used by, any
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    35
 other person.  No title to or ownership of the software is
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    36
 hereby transferred.
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
    37
"
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    38
!
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    39
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    40
documentation
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    41
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    42
    MessageTally allows profiling excution of a block; 
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    43
    statistic of method evaluation is output on Transcript.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    44
    To get statistic, use 'MessageTally spyOn:aBlock'.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    45
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    46
    By default, probing is done every 10ms (i.e. the execution of the block is 
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    47
    interrupted every 10ms, and the context chain analyzed).
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    48
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    49
    For better resolution, use smaller clock ticks (if your OperatingSystem
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    50
    supports it). Try 'spyDetailedOn:aBlock', which tries to measure things
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    51
    every 1ms. 
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    52
    (Notice, that some OS's do not provide this timer resolution,
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    53
     so measuring may be less accurate.)
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    54
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    55
    For good results, make certain that the measured block runs for some
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    56
    time (say 5 seconds) - add a timesRepeat-loop around it if required.
236
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    57
561
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    58
    The displayed information is:
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    59
        - the calling tree augmented with total and leaf times.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    60
          the leaf time is the time spent in the method itself;
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    61
          the total time is the time spent in the method and all of its called
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    62
          methods.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    63
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    64
        - the leaf methods by receiver
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    65
          this lists the leaf nodes only, sorted by time spent there.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    66
          Here, method invocations for different receiver types are
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    67
          listed separately.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    68
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    69
        - the leaf methods
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    70
          this lists the leaf nodes only, sorted by time spent there.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    71
          Here, method invocations for different receiver types are
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    72
          summed up separately.
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    73
594
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    74
    The last list (leaf methods) is propably the most interesting;
Claus Gittinger <cg@exept.de>
parents: 589
diff changeset
    75
    if you are only interested in that (or the calling hierarchy is too
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    76
    deep for the list to be useful or the amount of data to be handled
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    77
    correctly), use a leaf-spy with:
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    78
        MessageTally spyLeafOn:aBlock
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    79
    This only accumulates statistics about methods where the cpu time
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    80
    is actually spent (not collecing hierarchy information).
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    81
561
4c7d7e58cc8a better printOut & comment.
Claus Gittinger <cg@exept.de>
parents: 559
diff changeset
    82
236
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    83
    [author:]
7f570e0a0a75 documentation
Claus Gittinger <cg@exept.de>
parents: 120
diff changeset
    84
        Claus Gittinger
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    85
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
    86
    [see also:]
261
2fb596a13d0c commentary
Claus Gittinger <cg@exept.de>
parents: 260
diff changeset
    87
        CallChain ProfileTree
2fb596a13d0c commentary
Claus Gittinger <cg@exept.de>
parents: 260
diff changeset
    88
        MessageTracer
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    89
"
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    90
!
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    91
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
    92
examples
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
    93
"
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    94
  the block must execute for a while;
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    95
  otherwise, no probes (and therefore no statistics) can
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
    96
  be gathered:
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
    97
                                                                        [exBegin]
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
    98
     MessageTally spyOn:[ #(6 5 4 3 2 1) copy sort ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
    99
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   100
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   101
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   102
  if required, execute the block in a loop;
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   103
  however, for the example below, a larger repeat count
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   104
  is required, for a reasonable measurement:
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   105
                                                                        [exBegin]
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   106
     MessageTally spyOn:[
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   107
        10000 timesRepeat:[ #(6 5 4 3 2 1) copy sort] 
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   108
     ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   109
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   110
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   111
4096
5535543c5db8 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4013
diff changeset
   112
  that's better:
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   113
                                                                        [exBegin]
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   114
     MessageTally spyOn:[
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   115
        100000 timesRepeat:[ #(6 5 4 3 2 1) copy sort] 
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   116
     ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   117
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   118
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   119
4096
5535543c5db8 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 4013
diff changeset
   120
  that's much better
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   121
                                                                        [exBegin]
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   122
     MessageTally spyOn:[
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   123
        500000 timesRepeat:[#(6 5 4 3 2 1) copy sort] 
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   124
     ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   125
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   126
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   127
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   128
  a smaller probing tick also helps:
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   129
                                                                        [exBegin]
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   130
     MessageTally spyDetailedOn:[
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   131
        500000 timesRepeat:[(10 to:1 by:-1) asArray reverse] 
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   132
     ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   133
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   134
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   135
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   136
  as usual, measurements add some extra overhead;
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   137
  compare the above time to the time given by:
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   138
                                                                        [exBegin]
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   139
     Transcript showCR:(
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   140
         Time millisecondsToRun:[
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   141
            500000 timesRepeat:[#(6 5 4 3 2 1) copy sort] 
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   142
         ]
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   143
     )
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   144
                                                                        [exEnd]
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   145
  probing the leafs only may help to reduce the overhead
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   146
  a bit:
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   147
                                                                        [exBegin]
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   148
     MessageTally spyLeafDetailedOn:[
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   149
        500000 timesRepeat:[#(6 5 4 3 2 1) copy sort] 
259
eb2d1a3e3b52 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 256
diff changeset
   150
     ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   151
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   152
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   153
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   154
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   155
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   156
                                                                        [exBegin]
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   157
     MessageTally spyOn:[SystemBrowser open ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   158
                                                                        [exEnd]
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   159
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   160
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   161
                                                                        [exBegin]
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   162
     MessageTally spyDetailedOn:[SystemBrowser open ]
244
42acac0f7b8c examples
Claus Gittinger <cg@exept.de>
parents: 236
diff changeset
   163
                                                                        [exEnd]
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   164
"
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 5
diff changeset
   165
! !
0
470788421600 Initial revision
claus
parents:
diff changeset
   166
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   167
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   168
!MessageTally class methodsFor:'constants'!
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   169
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   170
detailedSamplingIntervalMS
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   171
    ^ 1
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   172
!
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   173
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   174
normalSamplingIntervalMS
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   175
    ^ 10
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   176
! !
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   177
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   178
1280
f08fe6cf6348 category
Claus Gittinger <cg@exept.de>
parents: 1152
diff changeset
   179
!MessageTally class methodsFor:'spying-private'!
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   180
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   181
spyLeafOn:aBlock interval:ms to:outStream
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   182
    "evaluate aBlock and output leaf method statistics on outStream.
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   183
     Return the value from aBlock."
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   184
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   185
    |aTally retVal|
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   186
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   187
    aTally := self new.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   188
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   189
    [
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   190
        [
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   191
            retVal := aTally spyLeafOn:aBlock interval:ms.
1152
b1f95f16a0a4 Use #ifCurtailed: instead of #valueOnUnwindDo:
Stefan Vogel <sv@exept.de>
parents: 1139
diff changeset
   192
        ] ifCurtailed:[
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   193
            outStream nextPutLine:'TALLY: block returned'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   194
        ]
1139
56861678ff27 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 963
diff changeset
   195
    ] ensure:[
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   196
        aTally printLeafStatisticOn:outStream
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   197
    ].
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   198
    ^ retVal
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   199
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   200
    "Modified: 22.3.1997 / 16:50:47 / cg"
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   201
!
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   202
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   203
spyOn:aBlock interval:ms to:outStream
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   204
    "evaluate aBlock and output full statistics on outstream.
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   205
     Return the value from aBlock."
0
470788421600 Initial revision
claus
parents:
diff changeset
   206
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   207
    |aTally retVal|
0
470788421600 Initial revision
claus
parents:
diff changeset
   208
470788421600 Initial revision
claus
parents:
diff changeset
   209
    aTally := self new.
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   210
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   211
    [
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   212
        [
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   213
            retVal := aTally spyOn:aBlock interval:ms.
1152
b1f95f16a0a4 Use #ifCurtailed: instead of #valueOnUnwindDo:
Stefan Vogel <sv@exept.de>
parents: 1139
diff changeset
   214
        ] ifCurtailed:[
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   215
            outStream nextPutLine:'TALLY: block returned'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   216
        ]
1139
56861678ff27 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 963
diff changeset
   217
    ] ensure:[
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   218
        aTally printFullStatisticOn:outStream
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   219
    ].
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   220
    ^ retVal
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   221
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   222
    "Modified: 22.3.1997 / 16:54:36 / cg"
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   223
! !
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   224
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   225
1280
f08fe6cf6348 category
Claus Gittinger <cg@exept.de>
parents: 1152
diff changeset
   226
!MessageTally class methodsFor:'spying-public interface'!
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   227
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   228
spyDetailedOn:aBlock
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   229
    "evaluate aBlock and output full statistics on the Transcript.
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   230
     The Tick is 1ms for more detailed measurement.
1376
7feb7011cdc2 Fix typos
Stefan Vogel <sv@exept.de>
parents: 1280
diff changeset
   231
     Notice: not all architectures support such a small timer interval."
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   232
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   233
    ^ self spyOn:aBlock interval:(self detailedSamplingIntervalMS) to:Transcript
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   234
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   235
    "Modified: 22.3.1997 / 16:26:39 / cg"
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   236
!
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   237
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   238
spyLeafDetailedOn:aBlock
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   239
    "evaluate aBlock and output leaf method statistics on the Transcript.
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   240
     The Tick is 1ms for more detailed measurement.
1376
7feb7011cdc2 Fix typos
Stefan Vogel <sv@exept.de>
parents: 1280
diff changeset
   241
     Notice: not all architectures support such a small timer interval."
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   242
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   243
    ^ self spyLeafOn:aBlock interval:(self detailedSamplingIntervalMS) to:Transcript
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   244
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   245
    "Created: 20.3.1997 / 20:41:53 / cg"
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   246
    "Modified: 22.3.1997 / 16:26:47 / cg"
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   247
!
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   248
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   249
spyLeafOn:aBlock
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   250
    "evaluate aBlock and output leaf method statistics on the Transcript.
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   251
     The Tick is 10ms for less detailed measurements."
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   252
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   253
    ^ self spyLeafOn:aBlock interval:(self normalSamplingIntervalMS) to:Transcript
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   254
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   255
    "Created: 20.3.1997 / 20:41:40 / cg"
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   256
    "Modified: 22.3.1997 / 16:26:49 / cg"
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   257
!
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   258
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   259
spyOn:aBlock
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   260
    "evaluate aBlock and output full statistics on the Transcript.
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   261
     The Tick is 10ms for less detailed measurements."
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   262
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   263
    ^ self spyOn:aBlock interval:(self normalSamplingIntervalMS) to:Transcript
570
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   264
9c3efb856ee6 allow spy output to be sent to some stream
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
   265
    "Modified: 22.3.1997 / 16:26:51 / cg"
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   266
! !
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   267
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   268
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   269
!MessageTally methodsFor:'accessing'!
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   270
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   271
endTime
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   272
    "return the endTime of the run"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   273
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   274
    ^ endTime
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   275
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   276
    "Modified: 18.5.1996 / 18:47:47 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   277
    "Created: 22.3.1997 / 16:44:29 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   278
!
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   279
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   280
nTally 
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   281
    "return the number of accumulated probes"
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   282
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   283
    ^ ntally
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   284
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   285
    "Modified: 18.5.1996 / 18:47:47 / cg"
0
470788421600 Initial revision
claus
parents:
diff changeset
   286
!
470788421600 Initial revision
claus
parents:
diff changeset
   287
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   288
probes
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   289
    "return the accumulated collection of flat probes"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   290
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   291
    ^ probes
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   292
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   293
    "Modified: 18.5.1996 / 18:47:57 / cg"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   294
    "Created: 20.3.1997 / 20:54:19 / cg"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   295
!
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   296
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   297
startTime
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   298
    "return the startTime of the run"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   299
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   300
    ^ startTime
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   301
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   302
    "Modified: 18.5.1996 / 18:47:47 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   303
    "Created: 22.3.1997 / 16:44:33 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   304
!
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   305
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   306
tree
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   307
    "return the accumulated calling tree"
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   308
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   309
    ^ tree
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   310
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   311
    "Modified: 18.5.1996 / 18:47:57 / cg"
0
470788421600 Initial revision
claus
parents:
diff changeset
   312
! !
470788421600 Initial revision
claus
parents:
diff changeset
   313
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   314
963
a4fb4b9f7e72 category change
Claus Gittinger <cg@exept.de>
parents: 957
diff changeset
   315
!MessageTally methodsFor:'printing & storing'!
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   316
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   317
printFlatMethodLeafsOn:aStream
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   318
    "print all flat method leafNodes statistics on aStream"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   319
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   320
    |leafNodes|
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   321
567
180b5d0da74b combine multiple invocations of the same method
Claus Gittinger <cg@exept.de>
parents: 565
diff changeset
   322
    leafNodes := OrderedCollection new.
180b5d0da74b combine multiple invocations of the same method
Claus Gittinger <cg@exept.de>
parents: 565
diff changeset
   323
    probes do:[:aProbe | aProbe addMethodLeafNodesTo:leafNodes].
180b5d0da74b combine multiple invocations of the same method
Claus Gittinger <cg@exept.de>
parents: 565
diff changeset
   324
    leafNodes := leafNodes asSortedCollection:[:a :b |
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   325
                                        a leafTally < b leafTally].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   326
    leafNodes do:[:aNode |
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   327
        aNode leafTally ~= 0 ifTrue:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   328
            aNode printSingleMethodLeafOn:aStream.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   329
            aStream cr.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   330
        ]
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   331
    ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   332
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   333
    "Created: 20.3.1997 / 20:56:13 / cg"
567
180b5d0da74b combine multiple invocations of the same method
Claus Gittinger <cg@exept.de>
parents: 565
diff changeset
   334
    "Modified: 21.3.1997 / 10:18:31 / cg"
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   335
!
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   336
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   337
printFullStatisticOn:outStream
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   338
    "output full statistics on outstream"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   339
589
d2112d37ce36 removed unused variable
Claus Gittinger <cg@exept.de>
parents: 573
diff changeset
   340
    |runTime err|
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   341
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   342
    ntally == 0 ifTrue:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   343
        self printNoProbesOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   344
        ^ self
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   345
    ].
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   346
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   347
    tree computePercentage:ntally.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   348
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   349
    runTime := endTime - startTime.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   350
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   351
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   352
    err := (1000 // ntally / 10.0).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   353
    err > 0 ifTrue:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   354
        outStream nextPutLine:('total execution time: '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   355
                           , runTime printString , ' ms '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   356
                           , '(' , ntally printString , ' probes ;'
770
2edabfe333f1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 594
diff changeset
   357
                           , ' error ' 
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   358
                           , (1000 // ntally / 10.0) printString
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   359
                           , '%)'
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   360
                          ).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   361
    ] ifFalse:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   362
        outStream nextPutLine:('total execution time: '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   363
                           , runTime printString , ' ms '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   364
                           , '(' , ntally printString , ' probes)'
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   365
                          ).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   366
    ].
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   367
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   368
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   369
    tree printOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   370
    outStream cr; cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   371
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   372
    outStream nextPutLine:'leafs of calling tree (by receiver & implementing method):'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   373
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   374
    tree printLeafsOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   375
    outStream cr; cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   376
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   377
    outStream nextPutLine:'method leafs of calling tree (by implementing method only):'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   378
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   379
    tree printMethodLeafsOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   380
    outStream cr; cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   381
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   382
    "Created: 22.3.1997 / 16:52:09 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   383
    "Modified: 22.3.1997 / 16:53:38 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   384
!
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   385
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   386
printLeafStatisticOn:outStream
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   387
    "output leaf statistics on outstream"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   388
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   389
    |runTime err|
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   390
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   391
    ntally == 0 ifTrue:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   392
        self printNoProbesOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   393
        ^ self.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   394
    ].
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   395
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   396
    runTime := endTime - startTime.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   397
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   398
    probes do:[:aProbe |
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   399
        aProbe computePercentage:ntally
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   400
    ].
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   401
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   402
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   403
    err := (1000 // ntally / 10.0).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   404
    err > 0 ifTrue:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   405
        outStream nextPutLine:('total execution time: '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   406
                           , runTime printString , ' ms '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   407
                           , '(' , ntally printString , ' probes ;'
770
2edabfe333f1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 594
diff changeset
   408
                           , ' error ' 
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   409
                           , (1000 // ntally / 10.0) printString
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   410
                           , '%)'
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   411
                          ).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   412
    ] ifFalse:[
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   413
        outStream nextPutLine:('total execution time: '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   414
                           , runTime printString , ' ms '
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   415
                           , '(' , ntally printString , ' probes)'
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   416
                          ).
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   417
    ].
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   418
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   419
    outStream nextPutLine:'method leafs of calling tree:'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   420
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   421
    self printFlatMethodLeafsOn:outStream.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   422
    outStream cr; cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   423
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   424
    "Created: 22.3.1997 / 16:50:06 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   425
    "Modified: 22.3.1997 / 16:53:15 / cg"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   426
!
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   427
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   428
printNoProbesOn:outStream
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   429
    "output a message that no probes are present"
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   430
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   431
    outStream cr.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   432
    outStream nextPutLine:'TALLY: No probes - execution time too short;'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   433
    outStream nextPutLine:'TALLY: retry using: spyOn:[n timesRepeat:[...]]'.
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   434
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   435
    "Created: 22.3.1997 / 16:53:23 / cg"
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   436
! !
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   437
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   438
0
470788421600 Initial revision
claus
parents:
diff changeset
   439
!MessageTally methodsFor:'private'!
470788421600 Initial revision
claus
parents:
diff changeset
   440
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   441
execute
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   442
    "evaluate the target block"
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   443
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   444
    executing := true.
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   445
    ^ theBlock value
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   446
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   447
    "Modified: 20.3.1997 / 21:36:27 / cg"
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   448
! !
0
470788421600 Initial revision
claus
parents:
diff changeset
   449
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   450
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   451
!MessageTally methodsFor:'probing'!
21
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   452
c521be54a8e6 *** empty log message ***
claus
parents: 17
diff changeset
   453
count:aContext
260
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   454
    "entered whenever the probed block gets interrupted;
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   455
     look where it is, and remember in the calling tree"
bd12742cab04 commentary
Claus Gittinger <cg@exept.de>
parents: 259
diff changeset
   456
263
4c3889934577 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 262
diff changeset
   457
    "{ Pragma: +optSpeed }"
4c3889934577 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 262
diff changeset
   458
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   459
    |chain|
0
470788421600 Initial revision
claus
parents:
diff changeset
   460
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   461
    chain := CallChain 
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   462
                callChainTo:aContext 
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   463
                stopAtCallerForWhich:[:con |
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   464
                    (con receiver == self) and:[con selector == #execute]
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   465
                ].
0
470788421600 Initial revision
claus
parents:
diff changeset
   466
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   467
    "add chain to the tree"
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   468
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   469
    chain notNil ifTrue:[
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   470
        ntally := ntally + 1.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   471
        tree addChain:chain
0
470788421600 Initial revision
claus
parents:
diff changeset
   472
    ].
470788421600 Initial revision
claus
parents:
diff changeset
   473
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   474
    "Modified: / 04-07-2010 / 09:45:28 / cg"
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   475
!
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   476
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   477
countLeaf:aContext
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   478
    "entered whenever the probed block gets interrupted;
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   479
     look where it is, and remember in the flat profile"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   480
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   481
    "{ Pragma: +optSpeed }"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   482
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   483
    |con entry recClass selector mthdClass sender home existingEntry|
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   484
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   485
    con := aContext.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   486
    con isNil ifTrue:[^ self].
0
470788421600 Initial revision
claus
parents:
diff changeset
   487
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   488
    "walk up above the interrupt context"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   489
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   490
    [con receiver == Processor] whileTrue:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   491
        con := con sender
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   492
    ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   493
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   494
    "got it - collect info from contexts"
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   495
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   496
    con isNil ifTrue:[^ self].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   497
    ((con receiver == self) and:[con selector == #execute]) ifTrue:[^ self].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   498
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   499
    sender := con sender.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   500
    sender isNil ifTrue:[^ self].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   501
    ((sender receiver == self) and:[sender selector == #execute]) ifTrue:[^ self].
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   502
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   503
    home := con methodHome.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   504
    home isNil ifTrue:[
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   505
        recClass := UndefinedObject.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   506
        selector := 'optimized'.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   507
        mthdClass := UndefinedObject.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   508
    ] ifFalse:[
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   509
        recClass := home receiver class.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   510
        selector := home selector.
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   511
        mthdClass := home methodClass.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   512
    ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   513
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   514
    "add info to the probes collection"
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   515
565
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   516
    ntally := ntally + 1.
01241f73a7a0 dont increment tally for ignored contexts.
Claus Gittinger <cg@exept.de>
parents: 564
diff changeset
   517
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   518
    entry := ProfileTree new.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   519
    entry
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   520
        receiver:recClass
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   521
        selector:selector
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   522
        class:mthdClass
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   523
        isBlock:(con isBlockContext).
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   524
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   525
    existingEntry := probes elementAt:entry ifAbsent:nil.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   526
    existingEntry isNil ifTrue:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   527
        probes add:entry
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   528
    ] ifFalse:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   529
        existingEntry incrementLeafTally.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   530
    ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   531
2281
859191db074f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2249
diff changeset
   532
    "Modified: / 04-07-2010 / 09:47:06 / cg"
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   533
! !
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   534
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   535
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   536
!MessageTally methodsFor:'spy setup'!
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   537
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   538
spyLeafOn:aBlock interval:ms
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   539
    "spy on execution time; generate information on leaf nodes only
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   540
     (which generates slightly less sampling overhead)
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   541
     Return the value from aBlock."
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   542
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   543
    |probing delay probingProcess probedProcess retVal|
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   544
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   545
    theBlock := aBlock.
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   546
1439
b58fa0afec58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1376
diff changeset
   547
    Processor activeProcess withPriority:(Processor userInterruptPriority-1) do:[
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   548
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   549
        probingProcess := [
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   550
            |p|
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   551
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   552
            p := probedProcess.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   553
            [probing] whileTrue:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   554
                delay wait.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   555
                executing ifTrue:[
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   556
                    self countLeaf:p suspendedContext
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   557
                ]
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   558
            ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   559
        ] newProcess.
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   560
1439
b58fa0afec58 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1376
diff changeset
   561
        probingProcess priority:(Processor userInterruptPriority+1).
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   562
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   563
        delay := (Delay forMilliseconds:ms).
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   564
        ntally := 0.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   565
        probes := Set new:200.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   566
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   567
        probedProcess := Processor activeProcess.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   568
        
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   569
        executing := false.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   570
        probing := true.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   571
        probingProcess resume.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   572
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   573
        [
263
4c3889934577 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 262
diff changeset
   574
            startTime := OperatingSystem getMillisecondTime.
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   575
            retVal := self execute.
1139
56861678ff27 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 963
diff changeset
   576
        ] ensure:[
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   577
            probing := executing := false.
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   578
            theBlock := nil.
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   579
            endTime := OperatingSystem getMillisecondTime.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   580
        ].
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   581
    ].
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   582
    ^ retVal
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   583
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   584
    "Created: 20.3.1997 / 20:15:07 / cg"
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   585
    "Modified: 22.3.1997 / 16:46:42 / cg"
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   586
!
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   587
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   588
spyOn:aBlock interval:ms
2970
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   589
    "spy on execution time, generate a hierarchical call information on the output stream.
Claus Gittinger <cg@exept.de>
parents: 2932
diff changeset
   590
     Return the value from aBlock."
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   591
2932
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   592
    |probing delay probingProcess probedProcess retVal runPrio probePrio|
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   593
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   594
    theBlock := aBlock.
2932
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   595
    runPrio := (Processor activePriority-1 "userInterruptPriority-1").
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   596
    probePrio := (Processor activePriority"+1" "Processor userInterruptPriority+1").
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   597
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   598
    Processor activeProcess 
2932
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   599
        withPriority:runPrio 
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   600
        do:[
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   601
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   602
            probingProcess := [
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   603
                |p|
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   604
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   605
                p := probedProcess.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   606
                [probing] whileTrue:[
2932
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   607
                    delay wait. 
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   608
                    executing ifTrue:[
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   609
                        self count:p suspendedContext
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   610
                    ]
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   611
                ].
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   612
            ] newProcess.
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   613
2932
eed4e9fc5400 changed: #spyOn:interval:
Claus Gittinger <cg@exept.de>
parents: 2281
diff changeset
   614
            probingProcess priority:probePrio.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   615
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   616
            delay := (Delay forMilliseconds:ms).
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   617
            ntally := 0.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   618
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   619
            tree := ProfileTree new.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   620
            tree 
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   621
                receiver:MessageTally 
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   622
                selector:#execute 
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   623
                class:MessageTally
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   624
                isBlock:false.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   625
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   626
            probedProcess := Processor activeProcess.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   627
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   628
            executing := false.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   629
            probing := true.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   630
            probingProcess resume.
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   631
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   632
            [
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   633
                startTime := OperatingSystem getMillisecondTime.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   634
                retVal := self execute.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   635
            ] ensure:[
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   636
                probing := executing := false.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   637
                theBlock := nil.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   638
                endTime := OperatingSystem getMillisecondTime.
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   639
            ].
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   640
        ].
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   641
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   642
    ^ retVal
263
4c3889934577 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 262
diff changeset
   643
564
d549f0b9c2f2 tallied block now executes under thisProcess;
Claus Gittinger <cg@exept.de>
parents: 561
diff changeset
   644
    "Created: 20.3.1997 / 20:14:44 / cg"
571
58e603e1ce24 made all print stuff instance methods;
Claus Gittinger <cg@exept.de>
parents: 570
diff changeset
   645
    "Modified: 22.3.1997 / 16:45:42 / cg"
88
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   646
! !
070ba8eb911e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   647
3158
f8c56a311307 Merged 87750af738dc and 72ca7e81fbbf (branch default - CVS HEAD)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3128 2970
diff changeset
   648
98
123d948aacd1 version at the end
Claus Gittinger <cg@exept.de>
parents: 88
diff changeset
   649
!MessageTally class methodsFor:'documentation'!
123d948aacd1 version at the end
Claus Gittinger <cg@exept.de>
parents: 88
diff changeset
   650
261
2fb596a13d0c commentary
Claus Gittinger <cg@exept.de>
parents: 260
diff changeset
   651
version
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   652
    ^ '$Header$'
2249
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   653
!
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   654
b832323d4c13 changed:
Claus Gittinger <cg@exept.de>
parents: 1439
diff changeset
   655
version_CVS
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   656
    ^ '$Header$'
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   657
!
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   658
3121
19723298dd2c Bugfix: reading of Java class extensions methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3095
diff changeset
   659
version_HG
19723298dd2c Bugfix: reading of Java class extensions methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3095
diff changeset
   660
19723298dd2c Bugfix: reading of Java class extensions methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3095
diff changeset
   661
    ^ '$Changeset: <not expanded> $'
19723298dd2c Bugfix: reading of Java class extensions methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3095
diff changeset
   662
!
19723298dd2c Bugfix: reading of Java class extensions methods.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3095
diff changeset
   663
3012
4f40b8304d54 Added InvalidChange
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3011
diff changeset
   664
version_SVN
4022
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3158 4013
diff changeset
   665
    ^ 'Id: MessageTally.st 1981 2012-11-30 17:20:01Z vranyj1 '
98
123d948aacd1 version at the end
Claus Gittinger <cg@exept.de>
parents: 88
diff changeset
   666
! !
4013
50bc8d72e5b9 #DOCUMENTATION by stefan
Stefan Vogel <sv@exept.de>
parents: 2970
diff changeset
   667