Need Help with a Test

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Need Help with a Test

Travis Griggs
I'm trying to hunt down a problem with, or at least understand, some  
not-understood behavior regarding fixed space allocations. I've  
created a small parcel (attached) which runs the tests and then  
removes itself. I'm very interested in how non-linux systems behave.  
The "test" simply involves allocating 5, and then 10 very large (4MB)  
byte arrays in Fixed Space. It spits its results to the transcript,  
which then get shoved into the copy buffer, so that you can reply to  
me or the list.

Thanks to anyone who can run this and give me some feedback.

--
Travis Griggs
Objologist
"Every institution finally perishes by an excess of its own first  
principle." - Lord Acton




-----------------------------------------
DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm







-----------------------------------------
DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm

FixedMemoryTests.pst (4K) Download Attachment
FixedMemoryTests.pcl (7K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Need Help with a Test

Chris Winemiller
Travis Griggs wrote:

> I'm trying to hunt down a problem with, or at least understand, some  
> not-understood behavior regarding fixed space allocations. I've  created
> a small parcel (attached) which runs the tests and then  removes itself.
> I'm very interested in how non-linux systems behave.  The "test" simply
> involves allocating 5, and then 10 very large (4MB)  byte arrays in
> Fixed Space. It spits its results to the transcript,  which then get
> shoved into the copy buffer, so that you can reply to  me or the list.
>
> Thanks to anyone who can run this and give me some feedback.

Tried but failed (running on VW 7.4).  It produced a walkback.  Here's the stack.

Unhandled exception: Message not understood: #occupiesFixedSpace
MethodContext(Object)>>doesNotUnderstand:
optimized [] in ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
Array(SequenceableCollection)>>do:
ObjectMemory class>>allObjectsDo:
ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
ObjectMemory class>>showAllFixedInstanceSizeStats
ObjectMemory class>>runFixedMemoryTests
optimized [] in UndefinedObject>>unboundMethod
Parcel>>executeActionBlock:for:
Parcel(CodeComponent)>>runAction:
Parcel(CodeComponent)>>runPostLoad
Parcel(CodeComponent)>>runPostLoadInitializations
Parcel(CodeComponent)>>loadFrom:using:
Parcel(CodeComponent)>>loadFrom:
optimized [] in [] in [] in Parcel class>>loadParcelCachedFrom:
BlockClosure>>on:do:
optimized [] in [] in Parcel class>>loadParcelCachedFrom:
BlockClosure>>on:do:
[] in Parcel class>>loadParcelCachedFrom:
BlockClosure>>ensure:
Parcel class>>loadParcelCachedFrom:
optimized [] in [] in Parcel class>>loadParcelFrom:
BlockClosure>>ensure:
Parcel class>>withFileCachesDo:
optimized [] in Parcel class>>loadParcelFrom:
Cursor>>showWhile:
Parcel class>>loadParcelFrom:
optimized [] in [] in [] in ParcelManager>>loadParcels:
BlockClosure>>on:do:
optimized [] in [] in ParcelManager>>loadParcels:
OrderedCollection>>do:
optimized [] in ParcelManager>>loadParcels:
optimized [] in [] in Notice class>>show:while:
BlockClosure>>ensure:
Cursor>>showWhile:
optimized [] in Notice class>>show:while:
BlockClosure>>ensure:
Notice class>>show:while:
ParcelManager>>loadParcels:
ParcelListTool(ParcelSelectionTool)>>loadParcels
EmulatedSequenceController(SequenceController)>>dispatchMenuSymbol:
EmulatedSequenceController(SequenceController)>>dispatchMenuSelection:
EmulatedSequenceController(ControllerWithMenu)>>processMenu:at:centered:
EmulatedSequenceController(ControllerWithMenu)>>processMenuAt:centered:
EmulatedSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent:
EmulatedSequenceController(SequenceController)>>yellowButtonPressedEvent:
YellowButtonPressedEvent>>dispatchTo:
EmulatedSequenceController(ControllerWithMenu)>>handleEvent:
EventDispatcher>>dispatch:to:
EventDispatcher>>dispatchEvent:
YellowButtonPressedEvent(Event)>>dispatch
YellowButtonPressedEvent(Event)>>dispatchForWindowManager:
optimized [] in WindowManager>>safelyDispatchForWindowManager:
BlockClosure>>on:do:
WindowManager>>safelyDispatchForWindowManager:
WindowManager>>processNextEvent
optimized [] in [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in Process class>>forBlock:priority:

----------------------------------------------------------------------
MethodContext(Object)>>doesNotUnderstand:
Receiver:
        a MethodContext
Instance Variables:
        method = CompiledMethod ObjectMemory class>>allObjectsNoRetry:
        pc = -16
        sender = nil
        receiver = ObjectMemory
        stackp = 3
        stack = an Array[12]
Arguments:
        aMessage = a Message with selector: #occupiesFixedSpace and arguments: #()
Temporaries:
        excpt = a MessageNotUnderstood
        resumeValue = nil
Context PC = 25

----------------------------------------------------------------------
optimized [] in ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
Receiver:
        an UndefinedObject
Arguments:
        t3 = ObjectMemory class>>allObjectsNoRetry:
Temporaries:
        .t2 = a Dictionary[0]
        .self = ObjectMemory
Context PC = 5

----------------------------------------------------------------------
Array(SequenceableCollection)>>do:
Receiver:
        an Array
Arguments:
        aBlock = BlockClosure [] in ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
Temporaries:
        i = 1
Context PC = 19

----------------------------------------------------------------------
ObjectMemory class>>allObjectsDo:
Receiver:
        an ObjectMemory class
Instance Variables:
        superclass = Object
        methodDict = a MethodDictionary[92]
        format = 20542
        subclasses = nil
        instanceVariables = an Array[62]
        organization = ('incremental queries' #incrementalGCState
#percentOfFreeOldSpaceAllocated #percentOfFreeSpaceAllocated)
('space queries' #availableContiguousFixedSpace #availableContiguousOldSpace
#availableContiguousSpace)
('converting' #ftEntriesToBytes: #oopsToBytes: #otEntriesToBytes:)
('accessing-general' #bytesPerOOP #bytesPerOTE #enumerationCallsPerMillisecond)
('accessing-remembered table' #bytesPerRTE #rtEntries #rtUsedEntries)
('accessing-new space' #edenBytes #edenUsedBytes
#edenUsedBytesScavengeThreshold #survBytes #survUsedBytes
#survUsedBytesTenuringThreshold)
('accessing-fixed space' #fixedBytes #fixedSegments #showFixedSpaceStats)
('accessing-large space' #bytesPerFTE #bytesPerLTE #largeBytes
#largeFreeBytesTenuringThreshold #largeUsedBytes #largeUsedObjects)
('accessing-fragmentation/free list' #allocFailures #allocMatches #allocProbes
#allocSplits #threadedDataBytes #threadedDataEntries #threadedOTEntries)
('accessing-incremental' #incGCState #incMarkedBytes #incMarkedObjects
#incMarkedWeakBytes #incMarkedWeakObjects #incNilledBytes #incNilledObjects
#incReclaimedBytes #incReclaimedObjects #incSweepAllocatedBytes
#incSweepAllocatedObjects #incSweptObjects #incUnmarkedObjects)
('accessing-free space' #availableFreeBytes #availableFreeFixedSpaceBytes
#availableFreeLargeSpaceBytes #availableFreeOldSpaceBytes
#availableFreeOldSpaceBytesLimit #contiguousFreeBytes #freePermBytes #oopsLeft
#reservedContiguousFreeBytes)
('accessing-old space' #oldBytes #oldDataBytes #oldOTEs #oldSegments)
('accessing-segments' #contiguousFixedSpaceAt: #contiguousOldSpaceAt:
#contiguousSpaceAt: #fixedDataSizeAt: #fixedSegmentSizeAt: #fixedTableSizeAt:
#oldDataSizeAt: #oldOtSizeAt: #oldSegmentSizeAt:)
('accessing-reclamation stats' #numDataCompactions #numGCs #numGlobalGCs
#numIncGCs #numScavenges)
('accessing-fixed size spaces' #compCodeCacheBytes #emergencyDebuggingHeadroom
#stackBytes #stackZoneFlushBytes)
('utilities' #dynamicallyAllocatedFootprint #numOopsNumBytes
#numOopsNumBytesIn: #printSpaceReport)
('accessing-old remembered table' #oldRtEntries #oldRtUsedEntries)
('accessing-perm space' #permBytes #permDataBytes #permOTEs)
('WaveCompatibility' #noticeOfDeinstall #noticeOfInstall)

        name = #ObjectMemory
        classPool = a NameSpaceOfClass[14]
        environment = a NameSpace[237]
Arguments:
        aBlock = BlockClosure [] in ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
Temporaries:
        list = an Array[511276]
        obj = nil
Context PC = 41

----------------------------------------------------------------------
ObjectMemory class>>writeAllFixedInstanceSizeStatsOn:
Receiver:
        an ObjectMemory class
Instance Variables:
        superclass = Object
        methodDict = a MethodDictionary[92]
        format = 20542
        subclasses = nil
        instanceVariables = an Array[62]
        organization = ('incremental queries' #incrementalGCState
#percentOfFreeOldSpaceAllocated #percentOfFreeSpaceAllocated)
('space queries' #availableContiguousFixedSpace #availableContiguousOldSpace
#availableContiguousSpace)
('converting' #ftEntriesToBytes: #oopsToBytes: #otEntriesToBytes:)
('accessing-general' #bytesPerOOP #bytesPerOTE #enumerationCallsPerMillisecond)
('accessing-remembered table' #bytesPerRTE #rtEntries #rtUsedEntries)
('accessing-new space' #edenBytes #edenUsedBytes
#edenUsedBytesScavengeThreshold #survBytes #survUsedBytes
#survUsedBytesTenuringThreshold)
('accessing-fixed space' #fixedBytes #fixedSegments #showFixedSpaceStats)
('accessing-large space' #bytesPerFTE #bytesPerLTE #largeBytes
#largeFreeBytesTenuringThreshold #largeUsedBytes #largeUsedObjects)
('accessing-fragmentation/free list' #allocFailures #allocMatches #allocProbes
#allocSplits #threadedDataBytes #threadedDataEntries #threadedOTEntries)
('accessing-incremental' #incGCState #incMarkedBytes #incMarkedObjects
#incMarkedWeakBytes #incMarkedWeakObjects #incNilledBytes #incNilledObjects
#incReclaimedBytes #incReclaimedObjects #incSweepAllocatedBytes
#incSweepAllocatedObjects #incSweptObjects #incUnmarkedObjects)
('accessing-free space' #availableFreeBytes #availableFreeFixedSpaceBytes
#availableFreeLargeSpaceBytes #availableFreeOldSpaceBytes
#availableFreeOldSpaceBytesLimit #contiguousFreeBytes #freePermBytes #oopsLeft
#reservedContiguousFreeBytes)
('accessing-old space' #oldBytes #oldDataBytes #oldOTEs #oldSegments)
('accessing-segments' #contiguousFixedSpaceAt: #contiguousOldSpaceAt:
#contiguousSpaceAt: #fixedDataSizeAt: #fixedSegmentSizeAt: #fixedTableSizeAt:
#oldDataSizeAt: #oldOtSizeAt: #oldSegmentSizeAt:)
('accessing-reclamation stats' #numDataCompactions #numGCs #numGlobalGCs
#numIncGCs #numScavenges)
('accessing-fixed size spaces' #compCodeCacheBytes #emergencyDebuggingHeadroom
#stackBytes #stackZoneFlushBytes)
('utilities' #dynamicallyAllocatedFootprint #numOopsNumBytes
#numOopsNumBytesIn: #printSpaceReport)
('accessing-old remembered table' #oldRtEntries #oldRtUsedEntries)
('accessing-perm space' #permBytes #permDataBytes #permOTEs)
('WaveCompatibility' #noticeOfDeinstall #noticeOfInstall)

        name = #ObjectMemory
        classPool = a NameSpaceOfClass[14]
        environment = a NameSpace[237]
Arguments:
        t1 = a TextCollector on: Text for 'win32 V5.1 nt i386
Fixed Space Stats
        total bytes: 204800 used: 0 (0.0)
        total objects: 1 (avg size: 0.0)
        segments: 1
        overhead: 20
'
Temporaries:
        t2 = a Dictionary[0]
Context PC = 12

----------------------------------------------------------------------
ObjectMemory class>>showAllFixedInstanceSizeStats
Receiver:
        an ObjectMemory class
Instance Variables:
        superclass = Object
        methodDict = a MethodDictionary[92]
        format = 20542
        subclasses = nil
        instanceVariables = an Array[62]
        organization = ('incremental queries' #incrementalGCState
#percentOfFreeOldSpaceAllocated #percentOfFreeSpaceAllocated)
('space queries' #availableContiguousFixedSpace #availableContiguousOldSpace
#availableContiguousSpace)
('converting' #ftEntriesToBytes: #oopsToBytes: #otEntriesToBytes:)
('accessing-general' #bytesPerOOP #bytesPerOTE #enumerationCallsPerMillisecond)
('accessing-remembered table' #bytesPerRTE #rtEntries #rtUsedEntries)
('accessing-new space' #edenBytes #edenUsedBytes
#edenUsedBytesScavengeThreshold #survBytes #survUsedBytes
#survUsedBytesTenuringThreshold)
('accessing-fixed space' #fixedBytes #fixedSegments #showFixedSpaceStats)
('accessing-large space' #bytesPerFTE #bytesPerLTE #largeBytes
#largeFreeBytesTenuringThreshold #largeUsedBytes #largeUsedObjects)
('accessing-fragmentation/free list' #allocFailures #allocMatches #allocProbes
#allocSplits #threadedDataBytes #threadedDataEntries #threadedOTEntries)
('accessing-incremental' #incGCState #incMarkedBytes #incMarkedObjects
#incMarkedWeakBytes #incMarkedWeakObjects #incNilledBytes #incNilledObjects
#incReclaimedBytes #incReclaimedObjects #incSweepAllocatedBytes
#incSweepAllocatedObjects #incSweptObjects #incUnmarkedObjects)
('accessing-free space' #availableFreeBytes #availableFreeFixedSpaceBytes
#availableFreeLargeSpaceBytes #availableFreeOldSpaceBytes
#availableFreeOldSpaceBytesLimit #contiguousFreeBytes #freePermBytes #oopsLeft
#reservedContiguousFreeBytes)
('accessing-old space' #oldBytes #oldDataBytes #oldOTEs #oldSegments)
('accessing-segments' #contiguousFixedSpaceAt: #contiguousOldSpaceAt:
#contiguousSpaceAt: #fixedDataSizeAt: #fixedSegmentSizeAt: #fixedTableSizeAt:
#oldDataSizeAt: #oldOtSizeAt: #oldSegmentSizeAt:)
('accessing-reclamation stats' #numDataCompactions #numGCs #numGlobalGCs
#numIncGCs #numScavenges)
('accessing-fixed size spaces' #compCodeCacheBytes #emergencyDebuggingHeadroom
#stackBytes #stackZoneFlushBytes)
('utilities' #dynamicallyAllocatedFootprint #numOopsNumBytes
#numOopsNumBytesIn: #printSpaceReport)
('accessing-old remembered table' #oldRtEntries #oldRtUsedEntries)
('accessing-perm space' #permBytes #permDataBytes #permOTEs)
('WaveCompatibility' #noticeOfDeinstall #noticeOfInstall)

        name = #ObjectMemory
        classPool = a NameSpaceOfClass[14]
        environment = a NameSpace[237]
Context PC = 5

----------------------------------------------------------------------
ObjectMemory class>>runFixedMemoryTests
Receiver:
        an ObjectMemory class
Instance Variables:
        superclass = Object
        methodDict = a MethodDictionary[92]
        format = 20542
        subclasses = nil
        instanceVariables = an Array[62]
        organization = ('incremental queries' #incrementalGCState
#percentOfFreeOldSpaceAllocated #percentOfFreeSpaceAllocated)
('space queries' #availableContiguousFixedSpace #availableContiguousOldSpace
#availableContiguousSpace)
('converting' #ftEntriesToBytes: #oopsToBytes: #otEntriesToBytes:)
('accessing-general' #bytesPerOOP #bytesPerOTE #enumerationCallsPerMillisecond)
('accessing-remembered table' #bytesPerRTE #rtEntries #rtUsedEntries)
('accessing-new space' #edenBytes #edenUsedBytes
#edenUsedBytesScavengeThreshold #survBytes #survUsedBytes
#survUsedBytesTenuringThreshold)
('accessing-fixed space' #fixedBytes #fixedSegments #showFixedSpaceStats)
('accessing-large space' #bytesPerFTE #bytesPerLTE #largeBytes
#largeFreeBytesTenuringThreshold #largeUsedBytes #largeUsedObjects)
('accessing-fragmentation/free list' #allocFailures #allocMatches #allocProbes
#allocSplits #threadedDataBytes #threadedDataEntries #threadedOTEntries)
('accessing-incremental' #incGCState #incMarkedBytes #incMarkedObjects
#incMarkedWeakBytes #incMarkedWeakObjects #incNilledBytes #incNilledObjects
#incReclaimedBytes #incReclaimedObjects #incSweepAllocatedBytes
#incSweepAllocatedObjects #incSweptObjects #incUnmarkedObjects)
('accessing-free space' #availableFreeBytes #availableFreeFixedSpaceBytes
#availableFreeLargeSpaceBytes #availableFreeOldSpaceBytes
#availableFreeOldSpaceBytesLimit #contiguousFreeBytes #freePermBytes #oopsLeft
#reservedContiguousFreeBytes)
('accessing-old space' #oldBytes #oldDataBytes #oldOTEs #oldSegments)
('accessing-segments' #contiguousFixedSpaceAt: #contiguousOldSpaceAt:
#contiguousSpaceAt: #fixedDataSizeAt: #fixedSegmentSizeAt: #fixedTableSizeAt:
#oldDataSizeAt: #oldOtSizeAt: #oldSegmentSizeAt:)
('accessing-reclamation stats' #numDataCompactions #numGCs #numGlobalGCs
#numIncGCs #numScavenges)
('accessing-fixed size spaces' #compCodeCacheBytes #emergencyDebuggingHeadroom
#stackBytes #stackZoneFlushBytes)
('utilities' #dynamicallyAllocatedFootprint #numOopsNumBytes
#numOopsNumBytesIn: #printSpaceReport)
('accessing-old remembered table' #oldRtEntries #oldRtUsedEntries)
('accessing-perm space' #permBytes #permDataBytes #permOTEs)
('WaveCompatibility' #noticeOfDeinstall #noticeOfInstall)

        name = #ObjectMemory
        classPool = a NameSpaceOfClass[14]
        environment = a NameSpace[237]
Temporaries:
        reference = nil
Context PC = 28

----------------------------------------------------------------------
optimized [] in UndefinedObject>>unboundMethod
Receiver:
        an UndefinedObject
Arguments:
        package = Parcel parcelNamed: 'FixedMemoryTests'
Context PC = 3

----------------------------------------------------------------------
Parcel>>executeActionBlock:for:
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Arguments:
        blk = BlockClosure [] in UndefinedObject>>unboundMethod
        aDescription = #postLoadBlock
Context PC = 13

----------------------------------------------------------------------
Parcel(CodeComponent)>>runAction:
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Arguments:
        aSymbol = #postLoadBlock
Temporaries:
        blk = BlockClosure [] in UndefinedObject>>unboundMethod
Context PC = 16

----------------------------------------------------------------------
Parcel(CodeComponent)>>runPostLoad
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Context PC = 5

----------------------------------------------------------------------
Parcel(CodeComponent)>>runPostLoadInitializations
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Context PC = 17

----------------------------------------------------------------------
Parcel(CodeComponent)>>loadFrom:using:
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Arguments:
        aSource = a PortableFilename('.\FixedMemoryTests.pcl')
        aCodeReader = a CodeReader
Context PC = 48

----------------------------------------------------------------------
Parcel(CodeComponent)>>loadFrom:
Receiver:
        a Parcel
Instance Variables:
        name = 'FixedMemoryTests'
        properties = an IdentityDictionary[10]
        definedObjects = an IdentitySet[0]
        definedClasses = an IdentitySet[0]
        definedBindings = an IdentityDictionary[0]
        classSelectors = an IdentityDictionary[2]
        namedObjects = a Dictionary[0]
        dirty = true
        loaded = false
Arguments:
        aSource = a PortableFilename('.\FixedMemoryTests.pcl')
Context PC = 7

----------------------------------------------------------------------
optimized [] in [] in [] in Parcel class>>loadParcelCachedFrom:
Receiver:
        an UndefinedObject
Temporaries:
        loadedParcel = Parcel parcelNamed: 'FixedMemoryTests'
        .aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
Context PC = 7

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in [] in Parcel class>>loadParcelCachedFrom:
        outerContext = nil
        copiedValues = an Array[2]
Arguments:
        anExceptionSelector = QueryNotification
        handlerBlock = BlockClosure [] in [] in [] in Parcel class>>loadParcelCachedFrom:
Context PC = 18

----------------------------------------------------------------------
optimized [] in [] in Parcel class>>loadParcelCachedFrom:
Receiver:
        an UndefinedObject
Temporaries:
        loadedParcel = Parcel parcelNamed: 'FixedMemoryTests'
        .aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
        .loadTag = #parcel->'.\FixedMemoryTests.pcl'
        .self = Parcel
Context PC = 16

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in Parcel class>>loadParcelCachedFrom:
        outerContext = nil
        copiedValues = an Array[4]
Arguments:
        anExceptionSelector = Parcel abortedActionSignal
        handlerBlock = BlockClosure [] in [] in Parcel class>>loadParcelCachedFrom:
Context PC = 18

----------------------------------------------------------------------
[] in Parcel class>>loadParcelCachedFrom:
Receiver:
        a Parcel class
Instance Variables:
        superclass = CodeComponent
        methodDict = a MethodDictionary[231]
        format = 16393
        subclasses = nil
        instanceVariables = an Array[7]
        organization = ('initialize-release' #initialize)
('accessing' #bundleName #bundleName: #packageName #packageName:
#postUnloadBlock #pundleName #summary #toolListIcon #version #version:
#versionString)
('copying' #postCopy)
('printing' #displayString #listEntry #printOn: #putStatsOn:)
('change management' #addBinding:in: #addBinding:in:attributes: #addClass:
#addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes:
#addSelector:class: #addSelector:class:attributes: #changeBinding:in:
#changeBinding:in:attributes: #changeClass: #changeClass:attributes:
#changeNameSpace: #changeNameSpace:attributes: #changeSelector:class:
#changeSelector:class:attributes: #changeSelector:class:documentation:
#changeSelector:class:protocol: #commentClass: #commentNameSpace:
#relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to:
#removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass:
#removeNameSpace: #removeSelector:class: #renameBinding:in:as:
#renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData:
#reorganizeNameSpace:)
('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors:
#addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass:
#addEntiretyOfClasses: #addName:in: #addNames:in: #addObject:
#addObject:named: #addSelector:forClass: #addSelector:toClass:
#addSelectors:forClass: #addStatic:to: #cleanse #discard #empty
#removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in:
#removeNames:in: #removeObject: #removeSelector:forClass:
#removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:)
('ui' #fileOutAsFor: #saveParcelDialogFor:
#saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename)
('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause:
#createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment
#packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup:
#prerequisitesForLoading #remove #unload)
('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo:
#containsSelectors:forClass: #danglingReferencesIfUnloadedDo:
#definedAndExtendedClasses #definedBindings #definedBindingsDo:
#definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor:
#definedNameSpaces #definedObjects #definedObjectsDo:
#definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor:
#definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings
#definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject:
#definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass:
#extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass:
#extendsObject: #extensionsDo: #externalMethodsUsedExclusively
#getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo:
#namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses)
('change set compatibility' #addOtherChange: #addPropertyChange:
#atClass:includes: #atName:includes: #atSelector:class: #changedClasses
#propertyChanged: #propertyChanged:value:)
('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded
#hasExtendedClasses #hasExtendedNameSpaces #hasExtensions
#hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty
#isEmpty #isLoaded #isParcel #isSaveable #notEmpty)
('private' #adviseManager #checkedActionMethod:
#definedClassesExcludedSelectors #definedClassExcludedSelectors:
#extensionMethods #forPackage:do: #installUninstalledBindings
#installUninstalledClasses #installUninstalledMethods #manager #markAsClean
#markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad:
#setActionMethod:class:selector: #unloadLogged: #unloadSource
#unloadSourceSafely: #writeDefinition:on: #writeMethods:on:
#writeRemovalScriptOn:)
('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors
#hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:)
('actions' #executeActionBlock:for:)
('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace:
#overriddenSelector:class: #overriddenStatic:in: #reinstalledClass:
#reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in:
#removeOverriddenClass: #removeOverriddenNameSpace:
#removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:)
('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel)
('store' #asDBRecord #asPackage #asPackageNamed:
#checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo:
#moveContentsTo: #traceVersion #traceVersionString)
('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions
#doComponentUpdatingActions: #putStoredPropertiesIn:
#queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded:
#removeNameSpace:unloaded: #runClassExtensionPostLoadMethods
#setParcelPropertyFrom:)
('converting' #asParcel)
('private-editing'
#addChangesFor:instanceSelectors:classSelectors:to:bindings:source:)
('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem)

        name = #Parcel
        classPool = a NameSpaceOfClass[2]
        environment = a NameSpace[237]
        parcels = a List[101]
        classParcelMap = an IdentityDictionary[2608]
        parcelFileInfoCache = a Dictionary[0]
        parcelFileDirectoryCache = a Dictionary[0]
Temporaries:
        loadedParcel = Parcel parcelNamed: 'FixedMemoryTests'
        .aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
        .loadTag = #parcel->'.\FixedMemoryTests.pcl'
        .self = Parcel
Context PC = 20

----------------------------------------------------------------------
BlockClosure>>ensure:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in Parcel class>>loadParcelCachedFrom:
        outerContext = Parcel class>>loadParcelCachedFrom:
        copiedValues = an Array[4]
Arguments:
        aBlock = BlockClosure [] in Parcel class>>loadParcelCachedFrom:
Temporaries:
        result = nil
Context PC = 4

----------------------------------------------------------------------
Parcel class>>loadParcelCachedFrom:
Receiver:
        a Parcel class
Instance Variables:
        superclass = CodeComponent
        methodDict = a MethodDictionary[231]
        format = 16393
        subclasses = nil
        instanceVariables = an Array[7]
        organization = ('initialize-release' #initialize)
('accessing' #bundleName #bundleName: #packageName #packageName:
#postUnloadBlock #pundleName #summary #toolListIcon #version #version:
#versionString)
('copying' #postCopy)
('printing' #displayString #listEntry #printOn: #putStatsOn:)
('change management' #addBinding:in: #addBinding:in:attributes: #addClass:
#addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes:
#addSelector:class: #addSelector:class:attributes: #changeBinding:in:
#changeBinding:in:attributes: #changeClass: #changeClass:attributes:
#changeNameSpace: #changeNameSpace:attributes: #changeSelector:class:
#changeSelector:class:attributes: #changeSelector:class:documentation:
#changeSelector:class:protocol: #commentClass: #commentNameSpace:
#relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to:
#removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass:
#removeNameSpace: #removeSelector:class: #renameBinding:in:as:
#renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData:
#reorganizeNameSpace:)
('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors:
#addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass:
#addEntiretyOfClasses: #addName:in: #addNames:in: #addObject:
#addObject:named: #addSelector:forClass: #addSelector:toClass:
#addSelectors:forClass: #addStatic:to: #cleanse #discard #empty
#removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in:
#removeNames:in: #removeObject: #removeSelector:forClass:
#removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:)
('ui' #fileOutAsFor: #saveParcelDialogFor:
#saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename)
('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause:
#createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment
#packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup:
#prerequisitesForLoading #remove #unload)
('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo:
#containsSelectors:forClass: #danglingReferencesIfUnloadedDo:
#definedAndExtendedClasses #definedBindings #definedBindingsDo:
#definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor:
#definedNameSpaces #definedObjects #definedObjectsDo:
#definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor:
#definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings
#definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject:
#definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass:
#extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass:
#extendsObject: #extensionsDo: #externalMethodsUsedExclusively
#getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo:
#namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses)
('change set compatibility' #addOtherChange: #addPropertyChange:
#atClass:includes: #atName:includes: #atSelector:class: #changedClasses
#propertyChanged: #propertyChanged:value:)
('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded
#hasExtendedClasses #hasExtendedNameSpaces #hasExtensions
#hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty
#isEmpty #isLoaded #isParcel #isSaveable #notEmpty)
('private' #adviseManager #checkedActionMethod:
#definedClassesExcludedSelectors #definedClassExcludedSelectors:
#extensionMethods #forPackage:do: #installUninstalledBindings
#installUninstalledClasses #installUninstalledMethods #manager #markAsClean
#markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad:
#setActionMethod:class:selector: #unloadLogged: #unloadSource
#unloadSourceSafely: #writeDefinition:on: #writeMethods:on:
#writeRemovalScriptOn:)
('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors
#hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:)
('actions' #executeActionBlock:for:)
('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace:
#overriddenSelector:class: #overriddenStatic:in: #reinstalledClass:
#reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in:
#removeOverriddenClass: #removeOverriddenNameSpace:
#removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:)
('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel)
('store' #asDBRecord #asPackage #asPackageNamed:
#checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo:
#moveContentsTo: #traceVersion #traceVersionString)
('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions
#doComponentUpdatingActions: #putStoredPropertiesIn:
#queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded:
#removeNameSpace:unloaded: #runClassExtensionPostLoadMethods
#setParcelPropertyFrom:)
('converting' #asParcel)
('private-editing'
#addChangesFor:instanceSelectors:classSelectors:to:bindings:source:)
('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem)

        name = #Parcel
        classPool = a NameSpaceOfClass[2]
        environment = a NameSpace[237]
        parcels = a List[101]
        classParcelMap = an IdentityDictionary[2608]
        parcelFileInfoCache = a Dictionary[0]
        parcelFileDirectoryCache = a Dictionary[0]
Arguments:
        aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
Temporaries:
        loadedParcel = Parcel parcelNamed: 'FixedMemoryTests'
        loadTag = #parcel->'.\FixedMemoryTests.pcl'
Context PC = 46

----------------------------------------------------------------------
optimized [] in [] in Parcel class>>loadParcelFrom:
Receiver:
        an UndefinedObject
Temporaries:
        .self = Parcel
        .aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
        newParcel = nil
Context PC = 7

----------------------------------------------------------------------
BlockClosure>>ensure:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in Parcel class>>loadParcelFrom:
        outerContext = nil
        copiedValues = an Array[3]
Arguments:
        aBlock = BlockClosure [] in Parcel class>>withFileCachesDo:
Temporaries:
        result = nil
Context PC = 4

----------------------------------------------------------------------
Parcel class>>withFileCachesDo:
Receiver:
        a Parcel class
Instance Variables:
        superclass = CodeComponent
        methodDict = a MethodDictionary[231]
        format = 16393
        subclasses = nil
        instanceVariables = an Array[7]
        organization = ('initialize-release' #initialize)
('accessing' #bundleName #bundleName: #packageName #packageName:
#postUnloadBlock #pundleName #summary #toolListIcon #version #version:
#versionString)
('copying' #postCopy)
('printing' #displayString #listEntry #printOn: #putStatsOn:)
('change management' #addBinding:in: #addBinding:in:attributes: #addClass:
#addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes:
#addSelector:class: #addSelector:class:attributes: #changeBinding:in:
#changeBinding:in:attributes: #changeClass: #changeClass:attributes:
#changeNameSpace: #changeNameSpace:attributes: #changeSelector:class:
#changeSelector:class:attributes: #changeSelector:class:documentation:
#changeSelector:class:protocol: #commentClass: #commentNameSpace:
#relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to:
#removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass:
#removeNameSpace: #removeSelector:class: #renameBinding:in:as:
#renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData:
#reorganizeNameSpace:)
('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors:
#addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass:
#addEntiretyOfClasses: #addName:in: #addNames:in: #addObject:
#addObject:named: #addSelector:forClass: #addSelector:toClass:
#addSelectors:forClass: #addStatic:to: #cleanse #discard #empty
#removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in:
#removeNames:in: #removeObject: #removeSelector:forClass:
#removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:)
('ui' #fileOutAsFor: #saveParcelDialogFor:
#saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename)
('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause:
#createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment
#packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup:
#prerequisitesForLoading #remove #unload)
('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo:
#containsSelectors:forClass: #danglingReferencesIfUnloadedDo:
#definedAndExtendedClasses #definedBindings #definedBindingsDo:
#definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor:
#definedNameSpaces #definedObjects #definedObjectsDo:
#definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor:
#definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings
#definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject:
#definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass:
#extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass:
#extendsObject: #extensionsDo: #externalMethodsUsedExclusively
#getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo:
#namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses)
('change set compatibility' #addOtherChange: #addPropertyChange:
#atClass:includes: #atName:includes: #atSelector:class: #changedClasses
#propertyChanged: #propertyChanged:value:)
('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded
#hasExtendedClasses #hasExtendedNameSpaces #hasExtensions
#hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty
#isEmpty #isLoaded #isParcel #isSaveable #notEmpty)
('private' #adviseManager #checkedActionMethod:
#definedClassesExcludedSelectors #definedClassExcludedSelectors:
#extensionMethods #forPackage:do: #installUninstalledBindings
#installUninstalledClasses #installUninstalledMethods #manager #markAsClean
#markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad:
#setActionMethod:class:selector: #unloadLogged: #unloadSource
#unloadSourceSafely: #writeDefinition:on: #writeMethods:on:
#writeRemovalScriptOn:)
('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors
#hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:)
('actions' #executeActionBlock:for:)
('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace:
#overriddenSelector:class: #overriddenStatic:in: #reinstalledClass:
#reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in:
#removeOverriddenClass: #removeOverriddenNameSpace:
#removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:)
('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel)
('store' #asDBRecord #asPackage #asPackageNamed:
#checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo:
#moveContentsTo: #traceVersion #traceVersionString)
('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions
#doComponentUpdatingActions: #putStoredPropertiesIn:
#queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded:
#removeNameSpace:unloaded: #runClassExtensionPostLoadMethods
#setParcelPropertyFrom:)
('converting' #asParcel)
('private-editing'
#addChangesFor:instanceSelectors:classSelectors:to:bindings:source:)
('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem)

        name = #Parcel
        classPool = a NameSpaceOfClass[2]
        environment = a NameSpace[237]
        parcels = a List[101]
        classParcelMap = an IdentityDictionary[2608]
        parcelFileInfoCache = a Dictionary[0]
        parcelFileDirectoryCache = a Dictionary[0]
Arguments:
        aBlock = BlockClosure [] in [] in Parcel class>>loadParcelFrom:
Context PC = 20

----------------------------------------------------------------------
optimized [] in Parcel class>>loadParcelFrom:
Receiver:
        an UndefinedObject
Temporaries:
        .self = Parcel
        .aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
        newParcel = nil
Context PC = 12

----------------------------------------------------------------------
Cursor>>showWhile:
Receiver:
        a Cursor
Instance Variables:
        errorCode = 0
        handle = 5
        image = Depth1Image(extent: 16@16 depth: 1)
        mask = Depth1Image(extent: 16@16 depth: 1)
        hotSpot = 0@0
        name = 'wait'
Arguments:
        aBlock = BlockClosure [] in Parcel class>>loadParcelFrom:
Temporaries:
        oldcursor = Cursor wait
Context PC = 13

----------------------------------------------------------------------
Parcel class>>loadParcelFrom:
Receiver:
        a Parcel class
Instance Variables:
        superclass = CodeComponent
        methodDict = a MethodDictionary[231]
        format = 16393
        subclasses = nil
        instanceVariables = an Array[7]
        organization = ('initialize-release' #initialize)
('accessing' #bundleName #bundleName: #packageName #packageName:
#postUnloadBlock #pundleName #summary #toolListIcon #version #version:
#versionString)
('copying' #postCopy)
('printing' #displayString #listEntry #printOn: #putStatsOn:)
('change management' #addBinding:in: #addBinding:in:attributes: #addClass:
#addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes:
#addSelector:class: #addSelector:class:attributes: #changeBinding:in:
#changeBinding:in:attributes: #changeClass: #changeClass:attributes:
#changeNameSpace: #changeNameSpace:attributes: #changeSelector:class:
#changeSelector:class:attributes: #changeSelector:class:documentation:
#changeSelector:class:protocol: #commentClass: #commentNameSpace:
#relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to:
#removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass:
#removeNameSpace: #removeSelector:class: #renameBinding:in:as:
#renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData:
#reorganizeNameSpace:)
('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors:
#addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass:
#addEntiretyOfClasses: #addName:in: #addNames:in: #addObject:
#addObject:named: #addSelector:forClass: #addSelector:toClass:
#addSelectors:forClass: #addStatic:to: #cleanse #discard #empty
#removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in:
#removeNames:in: #removeObject: #removeSelector:forClass:
#removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:)
('ui' #fileOutAsFor: #saveParcelDialogFor:
#saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename)
('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause:
#createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment
#packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup:
#prerequisitesForLoading #remove #unload)
('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo:
#containsSelectors:forClass: #danglingReferencesIfUnloadedDo:
#definedAndExtendedClasses #definedBindings #definedBindingsDo:
#definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor:
#definedNameSpaces #definedObjects #definedObjectsDo:
#definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor:
#definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings
#definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject:
#definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass:
#extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass:
#extendsObject: #extensionsDo: #externalMethodsUsedExclusively
#getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo:
#namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses)
('change set compatibility' #addOtherChange: #addPropertyChange:
#atClass:includes: #atName:includes: #atSelector:class: #changedClasses
#propertyChanged: #propertyChanged:value:)
('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded
#hasExtendedClasses #hasExtendedNameSpaces #hasExtensions
#hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty
#isEmpty #isLoaded #isParcel #isSaveable #notEmpty)
('private' #adviseManager #checkedActionMethod:
#definedClassesExcludedSelectors #definedClassExcludedSelectors:
#extensionMethods #forPackage:do: #installUninstalledBindings
#installUninstalledClasses #installUninstalledMethods #manager #markAsClean
#markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad:
#setActionMethod:class:selector: #unloadLogged: #unloadSource
#unloadSourceSafely: #writeDefinition:on: #writeMethods:on:
#writeRemovalScriptOn:)
('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors
#hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:)
('actions' #executeActionBlock:for:)
('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace:
#overriddenSelector:class: #overriddenStatic:in: #reinstalledClass:
#reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in:
#removeOverriddenClass: #removeOverriddenNameSpace:
#removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:)
('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel)
('store' #asDBRecord #asPackage #asPackageNamed:
#checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo:
#moveContentsTo: #traceVersion #traceVersionString)
('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions
#doComponentUpdatingActions: #putStoredPropertiesIn:
#queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded:
#removeNameSpace:unloaded: #runClassExtensionPostLoadMethods
#setParcelPropertyFrom:)
('converting' #asParcel)
('private-editing'
#addChangesFor:instanceSelectors:classSelectors:to:bindings:source:)
('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem)

        name = #Parcel
        classPool = a NameSpaceOfClass[2]
        environment = a NameSpace[237]
        parcels = a List[101]
        classParcelMap = an IdentityDictionary[2608]
        parcelFileInfoCache = a Dictionary[0]
        parcelFileDirectoryCache = a Dictionary[0]
Arguments:
        aStringOrFilename = a PortableFilename('.\FixedMemoryTests.pcl')
Temporaries:
        newParcel = nil
Context PC = 15

----------------------------------------------------------------------
optimized [] in [] in [] in ParcelManager>>loadParcels:
Receiver:
        an UndefinedObject
Temporaries:
        .each = a PortableFilename('.\FixedMemoryTests.pcl')
Context PC = 6

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in [] in ParcelManager>>loadParcels:
        outerContext = nil
        copiedValues = a PortableFilename('.\FixedMemoryTests.pcl')
Arguments:
        anExceptionSelector = OsError
        handlerBlock = BlockClosure [] in [] in [] in ParcelManager>>loadParcels:
Context PC = 18

----------------------------------------------------------------------
optimized [] in [] in ParcelManager>>loadParcels:
Receiver:
        an UndefinedObject
Arguments:
        each = a PortableFilename('.\FixedMemoryTests.pcl')
Context PC = 12

----------------------------------------------------------------------
OrderedCollection>>do:
Receiver:
        an OrderedCollection
Instance Variables:
        firstIndex = 1
        lastIndex = 1
Arguments:
        aBlock = BlockClosure [] in [] in ParcelManager>>loadParcels:
Temporaries:
        index = 1
Context PC = 17

----------------------------------------------------------------------
optimized [] in ParcelManager>>loadParcels:
Receiver:
        an UndefinedObject
Temporaries:
        paths = an OrderedCollection[1]
        .parcelCollection = an OrderedCollection[1]
Context PC = 12

----------------------------------------------------------------------
optimized [] in [] in Notice class>>show:while:
Receiver:
        an UndefinedObject
Temporaries:
        .aBlock = BlockClosure [] in ParcelManager>>loadParcels:
        result = an UIBuilder
        babyWindow = an ApplicationWindow 2036
        babyWindowManager = a WindowManager
Context PC = 5

----------------------------------------------------------------------
BlockClosure>>ensure:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in Notice class>>show:while:
        outerContext = nil
        copiedValues = an Array[2]
Arguments:
        aBlock = BlockClosure [] in Cursor>>showWhile:
Temporaries:
        result = nil
Context PC = 4

----------------------------------------------------------------------
Cursor>>showWhile:
Receiver:
        a Cursor
Instance Variables:
        errorCode = 0
        handle = 5
        image = Depth1Image(extent: 16@16 depth: 1)
        mask = Depth1Image(extent: 16@16 depth: 1)
        hotSpot = 0@0
        name = 'wait'
Arguments:
        aBlock = BlockClosure [] in [] in Notice class>>show:while:
Temporaries:
        oldcursor = Cursor normal
Context PC = 23

----------------------------------------------------------------------
optimized [] in Notice class>>show:while:
Receiver:
        an UndefinedObject
Temporaries:
        .baby = a Notice
        result = an UIBuilder
        babyWindow = an ApplicationWindow 2036
        babyWindowManager = a WindowManager
        .aBlock = BlockClosure [] in ParcelManager>>loadParcels:
Context PC = 48

----------------------------------------------------------------------
BlockClosure>>ensure:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in Notice class>>show:while:
        outerContext = nil
        copiedValues = an Array[3]
Arguments:
        aBlock = BlockClosure [] in Notice class>>show:while:
Temporaries:
        result = nil
Context PC = 4

----------------------------------------------------------------------
Notice class>>show:while:
Receiver:
        a Notice class
Instance Variables:
        superclass = ApplicationModel
        methodDict = a MethodDictionary[9]
        format = 16390
        subclasses = nil
        instanceVariables = an Array[2]
        organization = ('interface opening' #postOpenWith:)
('aspects' #message: #notice #show: #textView)
('updating' #changedMessages)
('private' #invokePostOpen #on:)
('interface closing' #requestForWindowClose)

        name = #Notice
        classPool = a NameSpaceOfClass[0]
        environment = a NameSpace[562]
        savedWindowInformation = an IdentityDictionary[0]
Arguments:
        aStringOrUserMessage = 'Loading Parcel'
        aBlock = BlockClosure [] in ParcelManager>>loadParcels:
Temporaries:
        baby = a Notice
        result = an UIBuilder
        babyWindow = an ApplicationWindow 2036
        babyWindowManager = a WindowManager
Context PC = 27

----------------------------------------------------------------------
ParcelManager>>loadParcels:
Receiver:
        a ParcelManager
Instance Variables:
        dependents = an ApplicationWindow 2027
        builder = an UIBuilder
        uiSession = a ControlManager
        eventHandlers = nil
        categoryHolder = a SelectionInList
        parcelHolder = a SelectionInList
        detailHolder = a SelectionInList
        statusTextHolder = a ValueHolder on: 'Unsupported Goodie (not loaded):
FixedMemoryTests.pcl'
        categorySubapplication = a ParcelDirectoriesTool
        parcelSubapplication = a ParcelListTool
        detailSubapplication = a ParcelCommentTool
        selectedGroups = an OrderedCollection[1]
        displayedParcels = an OrderedCollection[1]
        selectedParcels = an OrderedCollection[1]
Arguments:
        parcelCollection = an OrderedCollection[1]
Context PC = 19

----------------------------------------------------------------------
ParcelListTool(ParcelSelectionTool)>>loadParcels
Receiver:
        a ParcelListTool
Instance Variables:
        dependents = nil
        builder = an UIBuilder
        uiSession = nil
        eventHandlers = nil
        manager = a ParcelManager
        parcelListHolder = a MultiSelectionInList
Context PC = 6

----------------------------------------------------------------------
EmulatedSequenceController(SequenceController)>>dispatchMenuSymbol:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        menuSelection = #loadParcels
Context PC = 7

----------------------------------------------------------------------
EmulatedSequenceController(SequenceController)>>dispatchMenuSelection:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        menuSelection = #loadParcels
Context PC = 14

----------------------------------------------------------------------
EmulatedSequenceController(ControllerWithMenu)>>processMenu:at:centered:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        aMenu = a Menu
        aPoint = 589@351
        centered = true
Temporaries:
        valueResult = a MenuItem 'Load'
Context PC = 41

----------------------------------------------------------------------
EmulatedSequenceController(ControllerWithMenu)>>processMenuAt:centered:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        aPoint = 589@351
        centered = true
Context PC = 9

----------------------------------------------------------------------
EmulatedSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        event = a YellowButtonPressedEvent
Context PC = 13

----------------------------------------------------------------------
EmulatedSequenceController(SequenceController)>>yellowButtonPressedEvent:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        event = a YellowButtonPressedEvent
Context PC = 19

----------------------------------------------------------------------
YellowButtonPressedEvent>>dispatchTo:
Receiver:
        a YellowButtonPressedEvent
Instance Variables:
        time = 456866078
        initiator = an EventDispatcher
        window = an ApplicationWindow 2027
        state = 2
        x = 299
        y = 89
        gx = 589
        gy = 351
        buttonNumber = 2
Arguments:
        anObject = an EmulatedSequenceController
Context PC = 4

----------------------------------------------------------------------
EmulatedSequenceController(ControllerWithMenu)>>handleEvent:
Receiver:
        an EmulatedSequenceController
Instance Variables:
        model = a ValueHolder on: List (a ParcelFileItem ('.\FixedMemoryTests.pcl'))
        view = a MultiSelectionSequenceView
        sensor = a TranslatingSensor
        menuHolder = a Menu
        performer = a ParcelListTool
        keyboardProcessor = a KeyboardProcessor
        outside = false
        searchString = nil
        keyboardHook = nil
        doStringSearching = true
        dispatcher = an UIDispatcher
        dragDropCallbacks = nil
        selectOnDownWithDrag = false
        autoSelect = true
Arguments:
        anEvent = a YellowButtonPressedEvent
Context PC = 24

----------------------------------------------------------------------
EventDispatcher>>dispatch:to:
Receiver:
        an EventDispatcher
Instance Variables:
        windowController = an ApplicationStandardSystemController
        currentMouseConsumer = nil
        grabbingMouse = false
        keyboardProcessor = a KeyboardProcessor
        lastControlObject = an EmulatedSequenceController
        trapList = nil
        state = nil
        repairDamageWhenDebugging = true
        flushQueueAfterError = true
        distributeEventsWhenDebugging = true
        dragDropInProgress = false
        dragDropTracker = nil
        dispatchUnknownEvents = false
Arguments:
        event = a YellowButtonPressedEvent
        object = an EmulatedSequenceController
Temporaries:
        tmp = nil
Context PC = 10

----------------------------------------------------------------------
EventDispatcher>>dispatchEvent:
Receiver:
        an EventDispatcher
Instance Variables:
        windowController = an ApplicationStandardSystemController
        currentMouseConsumer = nil
        grabbingMouse = false
        keyboardProcessor = a KeyboardProcessor
        lastControlObject = an EmulatedSequenceController
        trapList = nil
        state = nil
        repairDamageWhenDebugging = true
        flushQueueAfterError = true
        distributeEventsWhenDebugging = true
        dragDropInProgress = false
        dragDropTracker = nil
        dispatchUnknownEvents = false
Arguments:
        event = a YellowButtonPressedEvent
Temporaries:
        objectWantingControl = an EmulatedSequenceController
        targetKeyboardProcessor = nil
Context PC = 113

----------------------------------------------------------------------
YellowButtonPressedEvent(Event)>>dispatch
Receiver:
        a YellowButtonPressedEvent
Instance Variables:
        time = 456866078
        initiator = an EventDispatcher
        window = an ApplicationWindow 2027
        state = 2
        x = 299
        y = 89
        gx = 589
        gy = 351
        buttonNumber = 2
Context PC = 16

----------------------------------------------------------------------
YellowButtonPressedEvent(Event)>>dispatchForWindowManager:
Receiver:
        a YellowButtonPressedEvent
Instance Variables:
        time = 456866078
        initiator = an EventDispatcher
        window = an ApplicationWindow 2027
        state = 2
        x = 299
        y = 89
        gx = 589
        gy = 351
        buttonNumber = 2
Arguments:
        aWinMgr = a WindowManager
Context PC = 4

----------------------------------------------------------------------
optimized [] in WindowManager>>safelyDispatchForWindowManager:
Receiver:
        an UndefinedObject
Temporaries:
        .event = a YellowButtonPressedEvent
        .self = a WindowManager
Context PC = 6

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager:
        outerContext = nil
        copiedValues = an Array[2]
Arguments:
        anExceptionSelector = BadControllerError
        handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager:
Context PC = 18

----------------------------------------------------------------------
WindowManager>>safelyDispatchForWindowManager:
Receiver:
        a WindowManager
Instance Variables:
        windows = an OrderedCollection[2]
        activeController = nil
        interruptLock = false
        outstandingMetaOrDamage = false
        openInProgress = false
        eventQueue = an EventQueue
        baseProcess = a Process in Semaphore>>wait
        dontFilterEvents = false
Arguments:
        event = a YellowButtonPressedEvent
Context PC = 13

----------------------------------------------------------------------
WindowManager>>processNextEvent
Receiver:
        a WindowManager
Instance Variables:
        windows = an OrderedCollection[2]
        activeController = nil
        interruptLock = false
        outstandingMetaOrDamage = false
        openInProgress = false
        eventQueue = an EventQueue
        baseProcess = a Process in Semaphore>>wait
        dontFilterEvents = false
Temporaries:
        event = a YellowButtonPressedEvent
Context PC = 9

----------------------------------------------------------------------
optimized [] in [] in WindowManager>>newProcess
Receiver:
        an UndefinedObject
Temporaries:
        .self = a WindowManager
Context PC = 13

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in [] in WindowManager>>newProcess
        outerContext = nil
        copiedValues = a WindowManager
Arguments:
        anExceptionSelector = TerminateException
        handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess
Context PC = 18

----------------------------------------------------------------------
optimized [] in WindowManager>>newProcess
Receiver:
        an UndefinedObject
Temporaries:
        .self = a WindowManager
Context PC = 15

----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
        a BlockClosure
Instance Variables:
        method = CompiledBlock [] in WindowManager>>newProcess
        outerContext = nil
        copiedValues = a WindowManager
Arguments:
        anExceptionSelector = TerminateException
        handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority:
Context PC = 18

----------------------------------------------------------------------
optimized [] in Process class>>forBlock:priority:
Receiver:
        an UndefinedObject
Temporaries:
        .aBlock = BlockClosure [] in WindowManager>>newProcess
Context PC = 9


Reply | Threaded
Open this post in threaded view
|

Re: Need Help with a Test

Travis Griggs

On Feb 21, 2006, at 14:42, Chris Winemiller wrote:

I'm trying to hunt down a problem with, or at least understand, some  not-understood behavior regarding fixed space allocations. I've  created a small parcel (attached) which runs the tests and then  removes itself. I'm very interested in how non-linux systems behave.  The "test" simply involves allocating 5, and then 10 very large (4MB)  byte arrays in Fixed Space. It spits its results to the transcript,  which then get shoved into the copy buffer, so that you can reply to  me or the list.

Thanks to anyone who can run this and give me some feedback.


Tried but failed (running on VW 7.4).  It produced a walkback.  Here's the stack.


Sigh. Replayed a change set wrong. Here's a (hopefully) better version. Thanks and so sorry.

--
Travis Griggs
Objologist
My Other Machine runs OSX. But then... so does this one.




DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm





DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm






DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm


FixedMemoryTests.pst (4K) Download Attachment
FixedMemoryTests.pcl (8K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Need Help with a Test

Chris Winemiller
Travis Griggs wrote:

 > Sigh. Replayed a change set wrong. Here's a (hopefully) better version.
 > Thanks and so sorry.

OK.  Here are the results (running on VW 7.4).

Chris

win32 V5.1 nt i386
Fixed Space Stats
        total bytes: 204800 used: 0 (0.0)
        total objects: 1 (avg size: 0.0)
        segments: 1
        overhead: 20
No Fixed Instances

Fixed Space Stats
        total bytes: 21401440 used: 20971585 (0.979915)
        total objects: 11 (avg size: 1.90651e6)
        segments: 6
        overhead: 20
20971580, 5, ByteArray, 5 X 4194316

Global garbage collection (please wait)...
reclaimed 23.01 Mbytes of data and 1 OTEntries in 0.4 sec.
heap shrunk by 2.46 Mbytes
44.54 Mbytes total; 21.35 Mbytes used, 23.18 Mbytes free.

Fixed Space Stats
        total bytes: 21401440 used: 0 (0.0)
        total objects: 6 (avg size: 0.0)
        segments: 6
        overhead: 20
No Fixed Instances

Fixed Space Stats
        total bytes: 42598080 used: 41943170 (0.984626)
        total objects: 21 (avg size: 1.99729e6)
        segments: 11
        overhead: 20
41943160, 10, ByteArray, 10 X 4194316

Global garbage collection (please wait)...
reclaimed 43.98 Mbytes of data and 1 OTEntries in 0.4 sec.
heap shrunk by 2.06 Mbytes
65.69 Mbytes total; 21.31 Mbytes used, 44.37 Mbytes free.

Fixed Space Stats
        total bytes: 42598080 used: 0 (0.0)
        total objects: 21 (avg size: 0.0)
        segments: 11
        overhead: 20
No Fixed Instances

Reply | Threaded
Open this post in threaded view
|

RE: Need Help with a Test

Steven Kelly
In reply to this post by Travis Griggs
Message
Virgin 7.4 on XP SP2, 1GB RAM
HTH,
Steve
 
win32 V5.1 nt i386
Fixed Space Stats
 total bytes: 204800 used: 0 (0.0)
 total objects: 1 (avg size: 0.0)
 segments: 1
 overhead: 20
No Fixed Instances
 
Fixed Space Stats
 total bytes: 21401440 used: 20971585 (0.979915)
 total objects: 11 (avg size: 1.90651e6)
 segments: 6
 overhead: 20
20971580, 5, ByteArray, 5 X 4194316
 
Global garbage collection (please wait)...
reclaimed 22.14 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.0 Mbytes
36.66 Mbytes total; 12.9 Mbytes used, 23.76 Mbytes free.
 
Fixed Space Stats
 total bytes: 21401440 used: 0 (0.0)
 total objects: 6 (avg size: 0.0)
 segments: 6
 overhead: 20
No Fixed Instances
 
Fixed Space Stats
 total bytes: 42598080 used: 41943170 (0.984626)
 total objects: 21 (avg size: 1.99729e6)
 segments: 11
 overhead: 20
41943160, 10, ByteArray, 10 X 4194316
 
Global garbage collection (please wait)...
reclaimed 43.1 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.46 Mbytes
56.39 Mbytes total; 12.91 Mbytes used, 43.48 Mbytes free.
 
Fixed Space Stats
 total bytes: 42598080 used: 0 (0.0)
 total objects: 21 (avg size: 0.0)
 segments: 11
 overhead: 20
No Fixed Instances
-----Original Message-----
From: Travis Griggs [mailto:[hidden email]]
Sent: 22 February 2006 00:49
To: VW NC
Subject: Re: Need Help with a Test


On Feb 21, 2006, at 14:42, Chris Winemiller wrote:

I'm trying to hunt down a problem with, or at least understand, some  not-understood behavior regarding fixed space allocations. I've  created a small parcel (attached) which runs the tests and then  removes itself. I'm very interested in how non-linux systems behave.  The "test" simply involves allocating 5, and then 10 very large (4MB)  byte arrays in Fixed Space. It spits its results to the transcript,  which then get shoved into the copy buffer, so that you can reply to  me or the list.

Thanks to anyone who can run this and give me some feedback.


Tried but failed (running on VW 7.4).  It produced a walkback.  Here's the stack.


Sigh. Replayed a change set wrong. Here's a (hopefully) better version. Thanks and so sorry.

--
Travis Griggs
Objologist
My Other Machine runs OSX. But then... so does this one.




DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm

Reply | Threaded
Open this post in threaded view
|

Re: Need Help with a Test

Travis Griggs
So... all of the Windows tests match. (Thanks to all who've run them). They match my results under Linux. What I'm unable to fathom is why it does what it does. Either I've not put the right diagnosis probes in, or it's telling a weird story. I'll thread my comments/questions amongst this run here. I beseech one of the VM dieties to step in and give wisdom.

On Feb 21, 2006, at 15:23, Steven Kelly wrote:

Virgin 7.4 on XP SP2, 1GB RAM
HTH,
Steve
 
win32 V5.1 nt i386
Fixed Space Stats
 total bytes: 204800 used: 0 (0.0)
 total objects: 1 (avg size: 0.0)
 segments: 1
 overhead: 20
No Fixed Instances

Nothing has happened so far. There are no fixed instances in the system. Yet ObjectMemory seems to think there is one.

 
Fixed Space Stats
 total bytes: 21401440 used: 20971585 (0.979915)
 total objects: 11 (avg size: 1.90651e6)
 segments: 6
 overhead: 20
20971580, 5, ByteArray, 5 X 4194316

Now we've allocated 5 4MB arrays. That last line tells that story. If the first "segment" was sized 204800, we can guess that the remaining 5 segments are 4MB ones, one for each allocation. But the object count tells a weird story. ObjectMemory thinks there are 11 of them. But the last line says there are only 5 as we expect. Also of interest is that the total memory used is 20971580. But ObjectMemory lists 20971585 bytes used. An interesting value, we did 5 new segments/objects and got 5 "extra" bytes.

 
Global garbage collection (please wait)...
reclaimed 22.14 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.0 Mbytes
36.66 Mbytes total; 12.9 Mbytes used, 23.76 Mbytes free.

We nil'd the reference to 5 arrays and GC'ed. We reclaimed all of the memory. But why didn't we return any of it? We returned 1.0 MB of heap. Where'd that come from. There is now fragmentation of these (assumed) 1 segment per object segments. So with the object gone, why didn't we just give them back?

 
Fixed Space Stats
 total bytes: 21401440 used: 0 (0.0)
 total objects: 6 (avg size: 0.0)
 segments: 6
 overhead: 20
No Fixed Instances

This bears out the same story. We kept all six segments in memory. But those extra 5 bytes, they disappeared. But we've still got our 6 extra imaginary objects running around.

 Fixed Space Stats
 total bytes: 42598080 used: 41943170 (0.984626)
 total objects: 21 (avg size: 1.99729e6)
 segments: 11
 overhead: 20
41943160, 10, ByteArray, 10 X 4194316

Same story as the orginal 5. This time with 10. The pattern continues. We pick up an extra byte per byte array. And an extra "fake" object per segment.

 
Global garbage collection (please wait)...
reclaimed 43.1 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.46 Mbytes
56.39 Mbytes total; 12.91 Mbytes used, 43.48 Mbytes free.
 
Fixed Space Stats
 total bytes: 42598080 used: 0 (0.0)
 total objects: 21 (avg size: 0.0)
 segments: 11
 overhead: 20
No Fixed Instances

Same pattern here as with 5.

I guess I could do some alternate tests (maybe I will) to see if the extra memory correlates to segments or objects. Maybe mess with the allocation size. Large byte arrays are our use cases.

Another thing that is interesting is that I can't seem to free this memory. Upon some investigation, it would appear that while the default MemoryPolicy will attempt to release/return "normal" memory, it will not do so for FixedSpace. But there is a method that can be used to get that to happen. But even if I do something like...

(3 to 7 by: 0.01) detect: [:n | ObjectMemory shrinkFixedSpaceBy: (10 raisedTo: n) rounded]

I get a no such element error. I should have put that in the test and seen if Windows boxes do better at that one.

--
Travis Griggs
Objologist
What's next, Intel Processors branded with "Apple Outside" stickers?





DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm

Reply | Threaded
Open this post in threaded view
|

RE: Need Help with a Test

Steven Kelly
In reply to this post by Travis Griggs
Message
I added the test for shrinkFixedSpace:
 
... 
 self showAllFixedInstanceSizeStats.
 Transcript cr.
 ((3 to: 7 by: 0.01)
    detect: [:n | ObjectMemory shrinkFixedSpaceBy: (10 raisedTo: n) rounded] ifNone: [])
        ifNil: [Transcript show: 'All shrinkFixedSpace attempts failed'])
        ifNotNil: [:n | Transcript show: 'Successful shrinkFixedSpace for n=', n printString].
 Transcript cr; cr.
 self showFixedSpaceStats.
 self showAllFixedInstanceSizeStats.
 Screen default putExternalSelection: Transcript value asString.
...
Below are the results: interesting is that although all the shrinkFixedSpace attempts failed, the number of objects there drops from 21 to 11, while all other values remain the same.
 
HTH,
Steve
 
win32 V5.1 nt i386
Fixed Space Stats
 total bytes: 204800 used: 0 (0.0)
 total objects: 1 (avg size: 0.0)
 segments: 1
 overhead: 20
No Fixed Instances
 
Fixed Space Stats
 total bytes: 21401440 used: 20971585 (0.979915)
 total objects: 11 (avg size: 1.90651e6)
 segments: 6
 overhead: 20
20971580, 5, ByteArray, 5 X 4194316
 
Global garbage collection (please wait)...
reclaimed 22.15 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.0 Mbytes
36.65 Mbytes total; 13.23 Mbytes used, 23.42 Mbytes free.
 
Fixed Space Stats
 total bytes: 21401440 used: 0 (0.0)
 total objects: 6 (avg size: 0.0)
 segments: 6
 overhead: 20
No Fixed Instances
 
Fixed Space Stats
 total bytes: 42598080 used: 41943170 (0.984626)
 total objects: 21 (avg size: 1.99729e6)
 segments: 11
 overhead: 20
41943160, 10, ByteArray, 10 X 4194316
 
Global garbage collection (please wait)...
reclaimed 43.12 Mbytes of data and 1 OTEntries in 0.1 sec.
heap shrunk by 1.0 Mbytes
57.85 Mbytes total; 13.23 Mbytes used, 44.61 Mbytes free.
 
Fixed Space Stats
 total bytes: 42598080 used: 0 (0.0)
 total objects: 21 (avg size: 0.0)
 segments: 11
 overhead: 20
No Fixed Instances
 
All shrinkFixedSpace attempts failed

Fixed Space Stats
 total bytes: 42598080 used: 0 (0.0)
 total objects: 11 (avg size: 0.0)
 segments: 11
 overhead: 20
No Fixed Instances
-----Original Message-----
From: Travis Griggs [mailto:[hidden email]]
Sent: 22 February 2006 03:13
To: VW NC
Subject: Re: Need Help with a Test

So... all of the Windows tests match. (Thanks to all who've run them). They match my results under Linux. What I'm unable to fathom is why it does what it does. Either I've not put the right diagnosis probes in, or it's telling a weird story. I'll thread my comments/questions amongst this run here. I beseech one of the VM dieties to step in and give wisdom.

On Feb 21, 2006, at 15:23, Steven Kelly wrote:

Virgin 7.4 on XP SP2, 1GB RAM
HTH,
Steve
 
win32 V5.1 nt i386
Fixed Space Stats
 total bytes: 204800 used: 0 (0.0)
 total objects: 1 (avg size: 0.0)
 segments: 1
 overhead: 20
No Fixed Instances

Nothing has happened so far. There are no fixed instances in the system. Yet ObjectMemory seems to think there is one.

 
Fixed Space Stats
 total bytes: 21401440 used: 20971585 (0.979915)
 total objects: 11 (avg size: 1.90651e6)
 segments: 6
 overhead: 20
20971580, 5, ByteArray, 5 X 4194316

Now we've allocated 5 4MB arrays. That last line tells that story. If the first "segment" was sized 204800, we can guess that the remaining 5 segments are 4MB ones, one for each allocation. But the object count tells a weird story. ObjectMemory thinks there are 11 of them. But the last line says there are only 5 as we expect. Also of interest is that the total memory used is 20971580. But ObjectMemory lists 20971585 bytes used. An interesting value, we did 5 new segments/objects and got 5 "extra" bytes.

 
Global garbage collection (please wait)...
reclaimed 22.14 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.0 Mbytes
36.66 Mbytes total; 12.9 Mbytes used, 23.76 Mbytes free.

We nil'd the reference to 5 arrays and GC'ed. We reclaimed all of the memory. But why didn't we return any of it? We returned 1.0 MB of heap. Where'd that come from. There is now fragmentation of these (assumed) 1 segment per object segments. So with the object gone, why didn't we just give them back?

 
Fixed Space Stats
 total bytes: 21401440 used: 0 (0.0)
 total objects: 6 (avg size: 0.0)
 segments: 6
 overhead: 20
No Fixed Instances

This bears out the same story. We kept all six segments in memory. But those extra 5 bytes, they disappeared. But we've still got our 6 extra imaginary objects running around.

 Fixed Space Stats
 total bytes: 42598080 used: 41943170 (0.984626)
 total objects: 21 (avg size: 1.99729e6)
 segments: 11
 overhead: 20
41943160, 10, ByteArray, 10 X 4194316

Same story as the orginal 5. This time with 10. The pattern continues. We pick up an extra byte per byte array. And an extra "fake" object per segment.

 
Global garbage collection (please wait)...
reclaimed 43.1 Mbytes of data and 0 OTEntries in 0.1 sec.
heap shrunk by 1.46 Mbytes
56.39 Mbytes total; 12.91 Mbytes used, 43.48 Mbytes free.
 
Fixed Space Stats
 total bytes: 42598080 used: 0 (0.0)
 total objects: 21 (avg size: 0.0)
 segments: 11
 overhead: 20
No Fixed Instances

Same pattern here as with 5.

I guess I could do some alternate tests (maybe I will) to see if the extra memory correlates to segments or objects. Maybe mess with the allocation size. Large byte arrays are our use cases.

Another thing that is interesting is that I can't seem to free this memory. Upon some investigation, it would appear that while the default MemoryPolicy will attempt to release/return "normal" memory, it will not do so for FixedSpace. But there is a method that can be used to get that to happen. But even if I do something like...

(3 to 7 by: 0.01) detect: [:n | ObjectMemory shrinkFixedSpaceBy: (10 raisedTo: n) rounded]

I get a no such element error. I should have put that in the test and seen if Windows boxes do better at that one.

--
Travis Griggs
Objologist
What's next, Intel Processors branded with "Apple Outside" stickers?





DISCLAIMER: This email is bound by the terms and conditions
described at
http://www.key.net/disclaimer.htm