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