ObjMem.st
author claus
Mon, 08 Nov 1993 03:32:43 +0100
changeset 10 4f1f9a91e406
parent 5 67342904af11
child 13 62303f84ff5f
permissions -rw-r--r--
2.8.1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     1
"
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1992 by Claus Gittinger
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
     4
a27a279701f8 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
a27a279701f8 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
a27a279701f8 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a27a279701f8 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a27a279701f8 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
a27a279701f8 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    11
"
a27a279701f8 Initial revision
claus
parents:
diff changeset
    12
a27a279701f8 Initial revision
claus
parents:
diff changeset
    13
Object subclass:#ObjectMemory
a27a279701f8 Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:''
2
claus
parents: 1
diff changeset
    15
       classVariableNames:'InternalErrorHandler UserInterruptHandler TimerInterruptHandler
claus
parents: 1
diff changeset
    16
                           SpyInterruptHandler StepInterruptHandler ExceptionInterruptHandler
claus
parents: 1
diff changeset
    17
                           ErrorInterruptHandler MemoryInterruptHandler SignalInterruptHandler
claus
parents: 1
diff changeset
    18
                           ChildSignalInterruptHandler DisposeInterruptHandler
claus
parents: 1
diff changeset
    19
                           RecursionInterruptHandler IOInterruptHandler
claus
parents: 1
diff changeset
    20
claus
parents: 1
diff changeset
    21
                           AllocationFailureSignal
10
claus
parents: 5
diff changeset
    22
                           IncrementalGCLimit
claus
parents: 5
diff changeset
    23
                           Dependents'
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    24
       poolDictionaries:''
a27a279701f8 Initial revision
claus
parents:
diff changeset
    25
       category:'System-Support'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    26
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
    27
a27a279701f8 Initial revision
claus
parents:
diff changeset
    28
ObjectMemory comment:'
a27a279701f8 Initial revision
claus
parents:
diff changeset
    29
5
67342904af11 *** empty log message ***
claus
parents: 3
diff changeset
    30
COPYRIGHT (c) 1992 by Claus Gittinger
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    31
             All Rights Reserved
a27a279701f8 Initial revision
claus
parents:
diff changeset
    32
10
claus
parents: 5
diff changeset
    33
$Header: /cvs/stx/stx/libbasic/Attic/ObjMem.st,v 1.5 1993-11-08 02:31:07 claus Exp $
2
claus
parents: 1
diff changeset
    34
'!
claus
parents: 1
diff changeset
    35
claus
parents: 1
diff changeset
    36
!ObjectMemory class methodsFor:'documentation'!
claus
parents: 1
diff changeset
    37
claus
parents: 1
diff changeset
    38
documentation
claus
parents: 1
diff changeset
    39
"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    40
This class contains access methods to the system memory -
a27a279701f8 Initial revision
claus
parents:
diff changeset
    41
in previous versions this stuff used to be in the Smalltalk class.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    42
It has been separated for better overall structure.
a27a279701f8 Initial revision
claus
parents:
diff changeset
    43
2
claus
parents: 1
diff changeset
    44
kludge:
claus
parents: 1
diff changeset
    45
The InterruptHandler variables are known by the runtime system -
claus
parents: 1
diff changeset
    46
they are the objects that get an interrupt message when the event
claus
parents: 1
diff changeset
    47
occurs.
claus
parents: 1
diff changeset
    48
claus
parents: 1
diff changeset
    49
ClassVariables:
claus
parents: 1
diff changeset
    50
claus
parents: 1
diff changeset
    51
InternalErrorHandler            gets informed, when some runtime error occurs
claus
parents: 1
diff changeset
    52
                                (usually fatal)
claus
parents: 1
diff changeset
    53
claus
parents: 1
diff changeset
    54
UserInterruptHandler            gets informed when CNTL-C is pressed
claus
parents: 1
diff changeset
    55
TimerInterruptHandler           gets alarm timer interrupts
claus
parents: 1
diff changeset
    56
SpyInterruptHandler             another alarm timer
claus
parents: 1
diff changeset
    57
StepInterruptHandler            gets single step interrupts
claus
parents: 1
diff changeset
    58
ExceptionInterruptHandler       gets floating point exceptions
claus
parents: 1
diff changeset
    59
ErrorInterruptHandler           gets graphic device errors
claus
parents: 1
diff changeset
    60
MemoryInterruptHandler          gets out of memory conditions
claus
parents: 1
diff changeset
    61
SignalInterruptHandler          gets unix signals
claus
parents: 1
diff changeset
    62
ChildSignalInterruptHandler     gets child death signals
claus
parents: 1
diff changeset
    63
DisposeInterruptHandler         gets informed, when an object is disposed from 
claus
parents: 1
diff changeset
    64
                                a shadowArray
claus
parents: 1
diff changeset
    65
RecursionInterruptHandler       gets recursion limit violations
claus
parents: 1
diff changeset
    66
IOInterruptHandler              get SIGIO unix signals
claus
parents: 1
diff changeset
    67
claus
parents: 1
diff changeset
    68
AllocationFailureSignal         signal raised when a new fails (see Behavior)
claus
parents: 1
diff changeset
    69
IngrementalGCLimit              number of bytes, that must be allocated since
claus
parents: 1
diff changeset
    70
                                last full garbage collect to turn on incremental
claus
parents: 1
diff changeset
    71
                                collector.
10
claus
parents: 5
diff changeset
    72
Dependents                      keep my dependents locally (its faster) for
claus
parents: 5
diff changeset
    73
                                all those registries
2
claus
parents: 1
diff changeset
    74
"
claus
parents: 1
diff changeset
    75
! !
claus
parents: 1
diff changeset
    76
claus
parents: 1
diff changeset
    77
!ObjectMemory class methodsFor:'initialization'!
claus
parents: 1
diff changeset
    78
claus
parents: 1
diff changeset
    79
initialize
claus
parents: 1
diff changeset
    80
    AllocationFailureSignal isNil ifTrue:[
claus
parents: 1
diff changeset
    81
        AllocationFailureSignal := (Signal new) mayProceed:true.
claus
parents: 1
diff changeset
    82
        AllocationFailureSignal notifierString:'allocation failure'.
claus
parents: 1
diff changeset
    83
    ].
claus
parents: 1
diff changeset
    84
    IncrementalGCLimit := 500000.
claus
parents: 1
diff changeset
    85
! !
claus
parents: 1
diff changeset
    86
claus
parents: 1
diff changeset
    87
!ObjectMemory class methodsFor:'signal access'!
claus
parents: 1
diff changeset
    88
claus
parents: 1
diff changeset
    89
allocationFailureSignal
claus
parents: 1
diff changeset
    90
    ^ AllocationFailureSignal
claus
parents: 1
diff changeset
    91
! !
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
    92
10
claus
parents: 5
diff changeset
    93
!ObjectMemory class methodsFor:'dependents access'!
claus
parents: 5
diff changeset
    94
claus
parents: 5
diff changeset
    95
dependents
claus
parents: 5
diff changeset
    96
    "return the colleciton of my dependents"
claus
parents: 5
diff changeset
    97
claus
parents: 5
diff changeset
    98
    ^ Dependents
claus
parents: 5
diff changeset
    99
!
claus
parents: 5
diff changeset
   100
claus
parents: 5
diff changeset
   101
dependents:aCollection
claus
parents: 5
diff changeset
   102
    "set the dependents collection"
claus
parents: 5
diff changeset
   103
claus
parents: 5
diff changeset
   104
    Dependents := aCollection
claus
parents: 5
diff changeset
   105
! !
claus
parents: 5
diff changeset
   106
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   107
!ObjectMemory class methodsFor:'cache management'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   108
a27a279701f8 Initial revision
claus
parents:
diff changeset
   109
flushInlineCachesForClass:aClass
a27a279701f8 Initial revision
claus
parents:
diff changeset
   110
    "flush inlinecaches for calls to aClass"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   111
a27a279701f8 Initial revision
claus
parents:
diff changeset
   112
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   113
    __flushInlineCachesFor(aClass);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   114
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   115
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   116
a27a279701f8 Initial revision
claus
parents:
diff changeset
   117
flushInlineCachesWithArgs:nargs
a27a279701f8 Initial revision
claus
parents:
diff changeset
   118
    "flush inlinecaches for calls with nargs arguments"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   119
a27a279701f8 Initial revision
claus
parents:
diff changeset
   120
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   121
    __flushInlineCaches(_intVal(nargs));
a27a279701f8 Initial revision
claus
parents:
diff changeset
   122
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   123
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   124
a27a279701f8 Initial revision
claus
parents:
diff changeset
   125
flushInlineCachesFor:aClass withArgs:nargs
a27a279701f8 Initial revision
claus
parents:
diff changeset
   126
    "flush inlinecaches for calls to aClass with nargs arguments"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   127
a27a279701f8 Initial revision
claus
parents:
diff changeset
   128
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   129
    __flushInlineCachesForAndNargs(aClass, _intVal(nargs));
a27a279701f8 Initial revision
claus
parents:
diff changeset
   130
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   131
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   132
a27a279701f8 Initial revision
claus
parents:
diff changeset
   133
flushInlineCaches
a27a279701f8 Initial revision
claus
parents:
diff changeset
   134
    "flush all inlinecaches"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   135
a27a279701f8 Initial revision
claus
parents:
diff changeset
   136
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   137
    __flushAllInlineCaches();
a27a279701f8 Initial revision
claus
parents:
diff changeset
   138
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   139
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   140
a27a279701f8 Initial revision
claus
parents:
diff changeset
   141
flushMethodCacheFor:aClass
a27a279701f8 Initial revision
claus
parents:
diff changeset
   142
    "flush the method cache for sends to aClass"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   143
a27a279701f8 Initial revision
claus
parents:
diff changeset
   144
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   145
    __flushMethodCacheFor(aClass);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   146
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   147
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   148
a27a279701f8 Initial revision
claus
parents:
diff changeset
   149
flushMethodCache
a27a279701f8 Initial revision
claus
parents:
diff changeset
   150
    "flush the method cache"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   151
a27a279701f8 Initial revision
claus
parents:
diff changeset
   152
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   153
    __flushMethodCache();
a27a279701f8 Initial revision
claus
parents:
diff changeset
   154
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   155
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   156
2
claus
parents: 1
diff changeset
   157
flushCachesFor:aClass
claus
parents: 1
diff changeset
   158
    "flush method and inline caches for aClass"
claus
parents: 1
diff changeset
   159
claus
parents: 1
diff changeset
   160
%{  /* NOCONTEXT */
claus
parents: 1
diff changeset
   161
    __flushMethodCacheFor(aClass);
claus
parents: 1
diff changeset
   162
    __flushInlineCachesFor(aClass);
claus
parents: 1
diff changeset
   163
%}
claus
parents: 1
diff changeset
   164
!
claus
parents: 1
diff changeset
   165
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   166
flushCaches
2
claus
parents: 1
diff changeset
   167
    "flush method and inline caches for all classes"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   168
a27a279701f8 Initial revision
claus
parents:
diff changeset
   169
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   170
    __flushMethodCache();
a27a279701f8 Initial revision
claus
parents:
diff changeset
   171
    __flushAllInlineCaches();
a27a279701f8 Initial revision
claus
parents:
diff changeset
   172
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   173
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   174
a27a279701f8 Initial revision
claus
parents:
diff changeset
   175
!ObjectMemory class methodsFor:'enumeration'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   176
a27a279701f8 Initial revision
claus
parents:
diff changeset
   177
allObjectsDo:aBlock
a27a279701f8 Initial revision
claus
parents:
diff changeset
   178
    "evaluate the argument, aBlock for all objects in the system"
2
claus
parents: 1
diff changeset
   179
claus
parents: 1
diff changeset
   180
    |work|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   181
%{
2
claus
parents: 1
diff changeset
   182
    nonTenuringScavenge(__context);
claus
parents: 1
diff changeset
   183
    /*
claus
parents: 1
diff changeset
   184
     * allObjectsDo needs a temporary to hold newSpace objects
claus
parents: 1
diff changeset
   185
     */
claus
parents: 1
diff changeset
   186
    __allObjectsDo(&aBlock, &work COMMA_CON);
claus
parents: 1
diff changeset
   187
%}
claus
parents: 1
diff changeset
   188
!
claus
parents: 1
diff changeset
   189
claus
parents: 1
diff changeset
   190
allOldObjectsDo:aBlock
claus
parents: 1
diff changeset
   191
    "evaluate the argument, aBlock for all old objects in the system.
claus
parents: 1
diff changeset
   192
     For debugging and tests only - do not use"
claus
parents: 1
diff changeset
   193
%{
claus
parents: 1
diff changeset
   194
    __allObjectsDo(&aBlock, (OBJ *)0 COMMA_CON);
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   195
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   196
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   197
2
claus
parents: 1
diff changeset
   198
!ObjectMemory class methodsFor:'handler access'!
claus
parents: 1
diff changeset
   199
claus
parents: 1
diff changeset
   200
internalErrorHandler
claus
parents: 1
diff changeset
   201
    ^ InternalErrorHandler
claus
parents: 1
diff changeset
   202
!
claus
parents: 1
diff changeset
   203
claus
parents: 1
diff changeset
   204
userInterruptHandler
claus
parents: 1
diff changeset
   205
    ^ UserInterruptHandler
claus
parents: 1
diff changeset
   206
!
claus
parents: 1
diff changeset
   207
claus
parents: 1
diff changeset
   208
userInterruptHandler:aHandler
claus
parents: 1
diff changeset
   209
    UserInterruptHandler := aHandler
claus
parents: 1
diff changeset
   210
!
claus
parents: 1
diff changeset
   211
claus
parents: 1
diff changeset
   212
timerInterruptHandler
claus
parents: 1
diff changeset
   213
    ^ TimerInterruptHandler
claus
parents: 1
diff changeset
   214
!
claus
parents: 1
diff changeset
   215
10
claus
parents: 5
diff changeset
   216
timerInterruptHandler:aHandler
claus
parents: 5
diff changeset
   217
    TimerInterruptHandler := aHandler
claus
parents: 5
diff changeset
   218
!
claus
parents: 5
diff changeset
   219
2
claus
parents: 1
diff changeset
   220
spyInterruptHandler
claus
parents: 1
diff changeset
   221
    ^ SpyInterruptHandler
claus
parents: 1
diff changeset
   222
!
claus
parents: 1
diff changeset
   223
claus
parents: 1
diff changeset
   224
spyInterruptHandler:aHandler
claus
parents: 1
diff changeset
   225
    SpyInterruptHandler := aHandler
claus
parents: 1
diff changeset
   226
!
claus
parents: 1
diff changeset
   227
claus
parents: 1
diff changeset
   228
stepInterruptHandler
claus
parents: 1
diff changeset
   229
    ^ StepInterruptHandler
claus
parents: 1
diff changeset
   230
!
claus
parents: 1
diff changeset
   231
claus
parents: 1
diff changeset
   232
stepInterruptHandler:aHandler
claus
parents: 1
diff changeset
   233
    StepInterruptHandler := aHandler
claus
parents: 1
diff changeset
   234
!
claus
parents: 1
diff changeset
   235
claus
parents: 1
diff changeset
   236
exceptionInterruptHandler
claus
parents: 1
diff changeset
   237
    ^ ExceptionInterruptHandler
claus
parents: 1
diff changeset
   238
!
claus
parents: 1
diff changeset
   239
claus
parents: 1
diff changeset
   240
errorInterruptHandler
claus
parents: 1
diff changeset
   241
    ^ ErrorInterruptHandler
claus
parents: 1
diff changeset
   242
!
claus
parents: 1
diff changeset
   243
claus
parents: 1
diff changeset
   244
errorInterruptHandler:aHandler
claus
parents: 1
diff changeset
   245
    ErrorInterruptHandler := aHandler
claus
parents: 1
diff changeset
   246
!
claus
parents: 1
diff changeset
   247
claus
parents: 1
diff changeset
   248
memoryInterruptHandler
claus
parents: 1
diff changeset
   249
    ^ MemoryInterruptHandler
claus
parents: 1
diff changeset
   250
!
claus
parents: 1
diff changeset
   251
claus
parents: 1
diff changeset
   252
signalInterruptHandler
claus
parents: 1
diff changeset
   253
    ^ SignalInterruptHandler
claus
parents: 1
diff changeset
   254
!
claus
parents: 1
diff changeset
   255
claus
parents: 1
diff changeset
   256
childSignalInterruptHandler
claus
parents: 1
diff changeset
   257
    ^ ChildSignalInterruptHandler
claus
parents: 1
diff changeset
   258
!
claus
parents: 1
diff changeset
   259
claus
parents: 1
diff changeset
   260
disposeInterruptHandler
claus
parents: 1
diff changeset
   261
    ^ DisposeInterruptHandler
claus
parents: 1
diff changeset
   262
!
claus
parents: 1
diff changeset
   263
claus
parents: 1
diff changeset
   264
disposeInterruptHandler:aHandler
claus
parents: 1
diff changeset
   265
    DisposeInterruptHandler := aHandler
claus
parents: 1
diff changeset
   266
!
claus
parents: 1
diff changeset
   267
claus
parents: 1
diff changeset
   268
recursionInterruptHandler
claus
parents: 1
diff changeset
   269
    ^ RecursionInterruptHandler
claus
parents: 1
diff changeset
   270
!
claus
parents: 1
diff changeset
   271
claus
parents: 1
diff changeset
   272
ioInterruptHandler
claus
parents: 1
diff changeset
   273
    ^ IOInterruptHandler
claus
parents: 1
diff changeset
   274
!
claus
parents: 1
diff changeset
   275
claus
parents: 1
diff changeset
   276
ioInterruptHandler:aHandler
claus
parents: 1
diff changeset
   277
    IOInterruptHandler := aHandler
claus
parents: 1
diff changeset
   278
! !
claus
parents: 1
diff changeset
   279
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   280
!ObjectMemory class methodsFor:'queries'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   281
a27a279701f8 Initial revision
claus
parents:
diff changeset
   282
newSpaceUsed
10
claus
parents: 5
diff changeset
   283
    "return the number of bytes allocated for new objects.
claus
parents: 5
diff changeset
   284
     The returned value is usually obsolete as soon as you do
claus
parents: 5
diff changeset
   285
     something ..."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   286
a27a279701f8 Initial revision
claus
parents:
diff changeset
   287
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   288
    RETURN ( _MKSMALLINT(__newSpaceUsed()) );
a27a279701f8 Initial revision
claus
parents:
diff changeset
   289
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   290
    "ObjectMemory newSpaceUsed"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   291
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   292
a27a279701f8 Initial revision
claus
parents:
diff changeset
   293
oldSpaceUsed
10
claus
parents: 5
diff changeset
   294
    "return the number of bytes allocated for old objects.
claus
parents: 5
diff changeset
   295
     (This includes the free lists)"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   296
a27a279701f8 Initial revision
claus
parents:
diff changeset
   297
%{  /* NOCONTEXT */
a27a279701f8 Initial revision
claus
parents:
diff changeset
   298
    RETURN ( _MKSMALLINT(__oldSpaceUsed()) );
a27a279701f8 Initial revision
claus
parents:
diff changeset
   299
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   300
    "ObjectMemory oldSpaceUsed"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   301
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   302
10
claus
parents: 5
diff changeset
   303
freeSpace
claus
parents: 5
diff changeset
   304
    "return the number of bytes in the free lists.
claus
parents: 5
diff changeset
   305
     (which is included in oldSpaceUsed)"
claus
parents: 5
diff changeset
   306
claus
parents: 5
diff changeset
   307
%{  /* NOCONTEXT */
claus
parents: 5
diff changeset
   308
    RETURN ( _MKSMALLINT(__freeSpace()) );
claus
parents: 5
diff changeset
   309
%}
claus
parents: 5
diff changeset
   310
    "ObjectMemory freeSpace"
claus
parents: 5
diff changeset
   311
!
claus
parents: 5
diff changeset
   312
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   313
bytesUsed
a27a279701f8 Initial revision
claus
parents:
diff changeset
   314
    "return the number of bytes allocated for objects -
a27a279701f8 Initial revision
claus
parents:
diff changeset
   315
     this number is not exact, since some objects may be dead"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   316
a27a279701f8 Initial revision
claus
parents:
diff changeset
   317
%{  /* NOCONTEXT */
10
claus
parents: 5
diff changeset
   318
    RETURN ( _MKSMALLINT(__oldSpaceUsed() + __newSpaceUsed() - __freeSpace()) );
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   319
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   320
    "ObjectMemory bytesUsed"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   321
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   322
2
claus
parents: 1
diff changeset
   323
oldSpaceAllocatedSinceLastGC
claus
parents: 1
diff changeset
   324
    "return the number of bytes allocated for old objects since the
claus
parents: 1
diff changeset
   325
     last garbage collect occured"
claus
parents: 1
diff changeset
   326
claus
parents: 1
diff changeset
   327
%{  /* NOCONTEXT */
claus
parents: 1
diff changeset
   328
    RETURN ( _MKSMALLINT(__oldSpaceAllocatedSinceLastGC()) );
claus
parents: 1
diff changeset
   329
%}
claus
parents: 1
diff changeset
   330
    "ObjectMemory oldSpaceAllocatedSinceLastGC"
claus
parents: 1
diff changeset
   331
!
claus
parents: 1
diff changeset
   332
claus
parents: 1
diff changeset
   333
incrementalGCLimit
claus
parents: 1
diff changeset
   334
    "return the limit for incremental GC activation"
claus
parents: 1
diff changeset
   335
claus
parents: 1
diff changeset
   336
    ^ IncrementalGCLimit
claus
parents: 1
diff changeset
   337
claus
parents: 1
diff changeset
   338
    "ObjectMemory incrementalGCLimit"
claus
parents: 1
diff changeset
   339
!
claus
parents: 1
diff changeset
   340
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   341
numberOfObjects
a27a279701f8 Initial revision
claus
parents:
diff changeset
   342
    "return the number of objects in the system"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   343
a27a279701f8 Initial revision
claus
parents:
diff changeset
   344
    |tally|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   345
a27a279701f8 Initial revision
claus
parents:
diff changeset
   346
    tally := 0.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   347
    self allObjectsDo:[:obj | tally := tally + 1].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   348
    ^ tally
a27a279701f8 Initial revision
claus
parents:
diff changeset
   349
a27a279701f8 Initial revision
claus
parents:
diff changeset
   350
    "ObjectMemory numberOfObjects"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   351
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   352
a27a279701f8 Initial revision
claus
parents:
diff changeset
   353
printReferences:anObject
a27a279701f8 Initial revision
claus
parents:
diff changeset
   354
    "debugging: print referents to anObject"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   355
a27a279701f8 Initial revision
claus
parents:
diff changeset
   356
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   357
    _printRefChain(__context, anObject);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   358
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   359
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   360
a27a279701f8 Initial revision
claus
parents:
diff changeset
   361
whoReferences:anObject
a27a279701f8 Initial revision
claus
parents:
diff changeset
   362
    "return a collection of objects referencing the argument, anObject"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   363
a27a279701f8 Initial revision
claus
parents:
diff changeset
   364
    |aCollection|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   365
a27a279701f8 Initial revision
claus
parents:
diff changeset
   366
    aCollection := IdentitySet new.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   367
    self allObjectsDo:[:o |
a27a279701f8 Initial revision
claus
parents:
diff changeset
   368
        (o references:anObject) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   369
            aCollection add:o
a27a279701f8 Initial revision
claus
parents:
diff changeset
   370
        ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   371
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   372
    (aCollection size == 0) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   373
        "actually this cannot happen - there is always one"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   374
        ^ nil
a27a279701f8 Initial revision
claus
parents:
diff changeset
   375
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   376
    ^ aCollection
a27a279701f8 Initial revision
claus
parents:
diff changeset
   377
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   378
a27a279701f8 Initial revision
claus
parents:
diff changeset
   379
!ObjectMemory class methodsFor:'garbage collector control'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   380
a27a279701f8 Initial revision
claus
parents:
diff changeset
   381
garbageCollect
a27a279701f8 Initial revision
claus
parents:
diff changeset
   382
    "search for and free garbage in the oldSpace
a27a279701f8 Initial revision
claus
parents:
diff changeset
   383
     (newSpace is cleaned automatically)
a27a279701f8 Initial revision
claus
parents:
diff changeset
   384
     - can take a long time if paging is involved
a27a279701f8 Initial revision
claus
parents:
diff changeset
   385
     - when no paging is involved, its faster than I thought :-)"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   386
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   387
    __garbageCollect(__context);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   388
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   389
a27a279701f8 Initial revision
claus
parents:
diff changeset
   390
    "ObjectMemory garbageCollect"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   391
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   392
a27a279701f8 Initial revision
claus
parents:
diff changeset
   393
scavenge
a27a279701f8 Initial revision
claus
parents:
diff changeset
   394
    "for debugging only - collect newspace stuff"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   395
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   396
    nonTenuringScavenge(__context);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   397
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   398
a27a279701f8 Initial revision
claus
parents:
diff changeset
   399
    "ObjectMemory scavenge"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   400
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   401
a27a279701f8 Initial revision
claus
parents:
diff changeset
   402
tenure
2
claus
parents: 1
diff changeset
   403
    "force all new stuff into old-space"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   404
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   405
    tenure(__context);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   406
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   407
a27a279701f8 Initial revision
claus
parents:
diff changeset
   408
    "ObjectMemory tenure"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   409
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   410
a27a279701f8 Initial revision
claus
parents:
diff changeset
   411
markAndSweep
a27a279701f8 Initial revision
claus
parents:
diff changeset
   412
    "mark/sweep garbage collector"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   413
a27a279701f8 Initial revision
claus
parents:
diff changeset
   414
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   415
    markAndSweep(__context);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   416
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   417
a27a279701f8 Initial revision
claus
parents:
diff changeset
   418
    "ObjectMemory markAndSweep"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   419
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   420
a27a279701f8 Initial revision
claus
parents:
diff changeset
   421
gcStep
a27a279701f8 Initial revision
claus
parents:
diff changeset
   422
    "one incremental garbage collect step"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   423
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   424
    incrGCstep(__context);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   425
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   426
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   427
2
claus
parents: 1
diff changeset
   428
incrementalGCLimit:aNumber
claus
parents: 1
diff changeset
   429
    "set the limit for incremental GC activation"
claus
parents: 1
diff changeset
   430
claus
parents: 1
diff changeset
   431
    IncrementalGCLimit := aNumber
claus
parents: 1
diff changeset
   432
claus
parents: 1
diff changeset
   433
    "ObjectMemory incrementalGCLimit:100000"
claus
parents: 1
diff changeset
   434
!
claus
parents: 1
diff changeset
   435
claus
parents: 1
diff changeset
   436
turnGarbageCollectorOff
claus
parents: 1
diff changeset
   437
    "turn off garbage collector by forcing new objects to be
claus
parents: 1
diff changeset
   438
     allocated in oldSpace (instead of newSpace)
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   439
     this method is somewhat dangerous: if collector is turned off,
a27a279701f8 Initial revision
claus
parents:
diff changeset
   440
     and too many objects are created, the system may run into trouble.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   441
     Use this only for measurement purposes or when realtime behavior
2
claus
parents: 1
diff changeset
   442
     is required for a limited time period. No warranty"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   443
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   444
    allocForceSpace(0);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   445
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   446
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   447
2
claus
parents: 1
diff changeset
   448
turnGarbageCollectorOn
claus
parents: 1
diff changeset
   449
    "turn garbage collector on again"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   450
a27a279701f8 Initial revision
claus
parents:
diff changeset
   451
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   452
    allocForceSpace(1);
a27a279701f8 Initial revision
claus
parents:
diff changeset
   453
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   454
! !
a27a279701f8 Initial revision
claus
parents:
diff changeset
   455
a27a279701f8 Initial revision
claus
parents:
diff changeset
   456
!ObjectMemory class methodsFor:'system management'!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   457
a27a279701f8 Initial revision
claus
parents:
diff changeset
   458
loadClassBinary:aClassName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   459
    "find the object file for aClassName and -if found - load it;
a27a279701f8 Initial revision
claus
parents:
diff changeset
   460
     this one loads precompiled object files"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   461
a27a279701f8 Initial revision
claus
parents:
diff changeset
   462
    |fName newClass upd|
a27a279701f8 Initial revision
claus
parents:
diff changeset
   463
a27a279701f8 Initial revision
claus
parents:
diff changeset
   464
    fName := self fileNameForClass:aClassName.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   465
    fName notNil ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   466
        upd := Class updateChanges:false.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   467
        [
a27a279701f8 Initial revision
claus
parents:
diff changeset
   468
            self loadBinary:(fName , '.o')
a27a279701f8 Initial revision
claus
parents:
diff changeset
   469
        ] valueNowOrOnUnwindDo:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   470
            Class updateChanges:upd
a27a279701f8 Initial revision
claus
parents:
diff changeset
   471
        ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   472
        newClass := self at:(aClassName asSymbol).
a27a279701f8 Initial revision
claus
parents:
diff changeset
   473
        (newClass notNil and:[newClass implements:#initialize]) ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   474
            newClass initialize
a27a279701f8 Initial revision
claus
parents:
diff changeset
   475
        ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   476
    ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   477
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   478
a27a279701f8 Initial revision
claus
parents:
diff changeset
   479
snapShot
a27a279701f8 Initial revision
claus
parents:
diff changeset
   480
    "create a snapshot"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   481
a27a279701f8 Initial revision
claus
parents:
diff changeset
   482
    ImageName isNil ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   483
        ImageName := 'st.img'
a27a279701f8 Initial revision
claus
parents:
diff changeset
   484
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   485
    self snapShotOn:ImageName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   486
a27a279701f8 Initial revision
claus
parents:
diff changeset
   487
    "ObjectMemory snapShot"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   488
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   489
a27a279701f8 Initial revision
claus
parents:
diff changeset
   490
snapShotOn:aFileName
a27a279701f8 Initial revision
claus
parents:
diff changeset
   491
    "create a snapshot in the given file"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   492
a27a279701f8 Initial revision
claus
parents:
diff changeset
   493
    "give others a chance to fix things"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   494
    self changed:#save.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   495
%{
a27a279701f8 Initial revision
claus
parents:
diff changeset
   496
    OBJ __snapShotOn();
a27a279701f8 Initial revision
claus
parents:
diff changeset
   497
a27a279701f8 Initial revision
claus
parents:
diff changeset
   498
    if (_isString(aFileName)) {
a27a279701f8 Initial revision
claus
parents:
diff changeset
   499
        RETURN ( __snapShotOn(__context, _stringVal(aFileName)) );
a27a279701f8 Initial revision
claus
parents:
diff changeset
   500
    }
a27a279701f8 Initial revision
claus
parents:
diff changeset
   501
%}
a27a279701f8 Initial revision
claus
parents:
diff changeset
   502
.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   503
    ^ self primitiveFailed
a27a279701f8 Initial revision
claus
parents:
diff changeset
   504
a27a279701f8 Initial revision
claus
parents:
diff changeset
   505
    "ObjectMemory snapShotOn:'myimage.img'"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   506
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   507
a27a279701f8 Initial revision
claus
parents:
diff changeset
   508
applicationImageOn:aFileName for:startupClass selector:startupSelector
a27a279701f8 Initial revision
claus
parents:
diff changeset
   509
    "create a snapshot which will come up without any views 
a27a279701f8 Initial revision
claus
parents:
diff changeset
   510
     but starts up an application by sending startupClass the startupSelector"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   511
2
claus
parents: 1
diff changeset
   512
    |viewsKnown savedIdleBlocks savedTimeoutBlocks savedTranscript
claus
parents: 1
diff changeset
   513
     savedRoot|
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   514
a27a279701f8 Initial revision
claus
parents:
diff changeset
   515
    viewsKnown := Display knownViews.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   516
    savedIdleBlocks := Display idleBlocks.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   517
    savedTimeoutBlocks := Display timeOutBlocks.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   518
    savedTranscript := Transcript.
2
claus
parents: 1
diff changeset
   519
    savedRoot := RootView.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   520
10
claus
parents: 5
diff changeset
   521
    "a kludge: save image with modified knownViews, no idle- and timeoutblocks
claus
parents: 5
diff changeset
   522
     and also Transcript set to StdErr ..."
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   523
a27a279701f8 Initial revision
claus
parents:
diff changeset
   524
    Display knownViews:nil.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   525
    Display idleBlocks:nil.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   526
    Display timeOutBlocks:nil.
2
claus
parents: 1
diff changeset
   527
    RootView := nil.
claus
parents: 1
diff changeset
   528
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   529
    Transcript := Stderr.
10
claus
parents: 5
diff changeset
   530
    Smalltalk startupClass:startupClass selector:startupSelector arguments:nil.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   531
    self snapShotOn:aFileName.
10
claus
parents: 5
diff changeset
   532
    Smalltalk startupClass:nil selector:nil arguments:nil.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   533
2
claus
parents: 1
diff changeset
   534
    RootView := savedRoot.
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   535
    Transcript := savedTranscript.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   536
    Display knownViews:viewsKnown.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   537
    Display idleBlocks:savedIdleBlocks.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   538
    Display timeOutBlocks:savedTimeoutBlocks
a27a279701f8 Initial revision
claus
parents:
diff changeset
   539
a27a279701f8 Initial revision
claus
parents:
diff changeset
   540
    "ObjectMemory applicationImageOn:'draw.img' for:DrawTool selector:#start"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   541
    "ObjectMemory applicationImageOn:'pm.img' for:PMSimulator selector:#start"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   542
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   543
a27a279701f8 Initial revision
claus
parents:
diff changeset
   544
minimumApplicationImageOn:aFileName for:startupClass selector:startupSelector
a27a279701f8 Initial revision
claus
parents:
diff changeset
   545
    "create a snapshot which will come up without any views 
a27a279701f8 Initial revision
claus
parents:
diff changeset
   546
     but starts up an application by sending startupClass the startupSelector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   547
     All unneeded info is stripped from the saved image."
a27a279701f8 Initial revision
claus
parents:
diff changeset
   548
a27a279701f8 Initial revision
claus
parents:
diff changeset
   549
    "create a temporary image, for continuation"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   550
    self snapShotOn:'temp.img'.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   551
a27a279701f8 Initial revision
claus
parents:
diff changeset
   552
    Display knownViews do:[:aView |
a27a279701f8 Initial revision
claus
parents:
diff changeset
   553
        aView notNil ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   554
            aView superView isNil ifTrue:[
a27a279701f8 Initial revision
claus
parents:
diff changeset
   555
                aView destroy
a27a279701f8 Initial revision
claus
parents:
diff changeset
   556
            ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   557
        ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   558
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   559
a27a279701f8 Initial revision
claus
parents:
diff changeset
   560
    self stripImage.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   561
a27a279701f8 Initial revision
claus
parents:
diff changeset
   562
    self applicationImageOn:aFileName for:startupClass selector:startupSelector.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   563
a27a279701f8 Initial revision
claus
parents:
diff changeset
   564
    "continue in old image"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   565
a27a279701f8 Initial revision
claus
parents:
diff changeset
   566
    OperatingSystem exec:(Arguments at:1)
a27a279701f8 Initial revision
claus
parents:
diff changeset
   567
           withArguments:#('smalltalk' '-i' 'temp.img') , (Arguments copyFrom:2)
a27a279701f8 Initial revision
claus
parents:
diff changeset
   568
a27a279701f8 Initial revision
claus
parents:
diff changeset
   569
    "ObjectMemory minimumApplicationImageOn:'clock1.img' for:Clock selector:#start"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   570
    "ObjectMemory applicationImageOn:'clock2.img' for:Clock selector:#start"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   571
!
a27a279701f8 Initial revision
claus
parents:
diff changeset
   572
a27a279701f8 Initial revision
claus
parents:
diff changeset
   573
stripImage
a27a279701f8 Initial revision
claus
parents:
diff changeset
   574
    "remove all unneeded stuff from the image - much more is possible here"
a27a279701f8 Initial revision
claus
parents:
diff changeset
   575
2
claus
parents: 1
diff changeset
   576
    "remove all class comments & source"
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   577
2
claus
parents: 1
diff changeset
   578
    Smalltalk allBehaviorsDo:[:aClass |
1
a27a279701f8 Initial revision
claus
parents:
diff changeset
   579
        aClass setComment:nil.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   580
        aClass methodDictionary do:[:aMethod |
a27a279701f8 Initial revision
claus
parents:
diff changeset
   581
            aMethod source:''.
a27a279701f8 Initial revision
claus
parents:
diff changeset
   582
            aMethod category:#none 
a27a279701f8 Initial revision
claus
parents:
diff changeset
   583
        ]
a27a279701f8 Initial revision
claus
parents:
diff changeset
   584
    ].
a27a279701f8 Initial revision
claus
parents:
diff changeset
   585
    self garbageCollect
a27a279701f8 Initial revision
claus
parents:
diff changeset
   586
! !