I just published a pre-alpha version of a GOODS client for VisualWorks
(works in 7.5 and 7.6) in the public store repo. All tests pass but that's all I can say at the moment. Here's the package comment: --------------------- A GOODS client for VisualWorks: http://www.garret.ru/~knizhnik/goods.html This is a port of Avi Bryant's GOODS client for Squeak: http://wiki.squeak.org/squeak/3492 --------------------- I use GOODS extensively under Squeak. It's no Gemstone but it is a solid OODB which, with some TLC, can peform reasonable for many applications. I started this port when I thought I had a client who could use it. That job never came through so at the moment I don't have many particular plans for future work on this port. I use the Squeak version heavily and hope to port any improvements in that client to this new one. The ToDo list includes: 1) more substantial testing 2) core performance improvements: right now the squeak version is twice as fast on the test suite probably due to my naive socket code. I'd love some feedback on this. Profiles attached. 3) Use of immutability support for a write barrier: looks like the WriteBarriers package might be of use here but IDK 4) Consider support for cross-smalltalk database (I'm using fully qualified class names in VW. In addition, object structure differences in the core classes mean your databases will not be portable). David 25 samples, 287.03 average ms/sample, 22 scavenges, 0 incGCs, 0.47s active, 6.67s other processes, 7.18s real time, 0.04s profiling overhead ** Tree ** 100.0 BlockClosure [] in Refactory.Browser.SUnitStatusBar>>profileTests 100.0 Refactory.Browser.SUnitStatusBar>>runTests 87.3 BlockClosure>>ifCurtailed: 87.3 [] in Refactory.Browser.SUnitStatusBar>>runTests 87.3 TestSuite>>run 87.3 BlockClosure>>sunitEnsure: 87.3 BlockClosure>>ensure: 87.3 [] in TestSuite>>run 87.3 TestSuite>>run: 87.3 OrderedCollection>>do: 87.3 [] in TestSuite>>run: 57.1 TestCase>>run: 57.1 TestResult>>runCase: 57.1 BlockClosure>>sunitOn:do: 57.1 BlockClosure>>on:do: 57.1 [] in TestResult>>runCase: 57.1 BlockClosure>>sunitOn:do: 57.1 BlockClosure>>on:do: 57.1 [] in [] in TestResult>>runCase: 57.1 TestCase>>runCase 57.1 BlockClosure>>sunitEnsure: 57.1 BlockClosure>>ensure: 57.1 [] in TestCase>>runCase 28.7 GOODS.KKDBTest>>setUp 15.4 GOODS.KKConnection class>>hostname:port: 15.4 GOODS.KKConnection class>>hostname:port:loginName: 15.4 SocketAccessor class>>newTCPclientToHost:port: 15.4 BlockClosure>>ifCurtailed: 15.4 [] in SocketAccessor class>>newTCPclientToHost:port: 9.4 SocketAccessor>>connectTo: 9.4 SocketAccessor>>connectTo:timeout: 9.4 BlockClosure>>on:do: 9.4 [] in SocketAccessor>>connectTo:timeout: 9.4 SocketAccessor>>primConnectTo: 9.4 SocketAccessor>>TimeProfilerCore_primConnectTo: 9.4 OSErrorHolder>>reportError 9.4 OSErrorHolder class>>reportOn: 9.4 Signal>>raiseRequestWith:errorString: 9.4 GenericException>>raiseSignal 9.4 GenericException>>propagate 9.4 GenericException>>propagateFrom: 9.4 GenericException>>propagatePrivateFrom: 9.4 GenericException>>performHandler: 9.4 BlockClosure>>cull: 9.4 [] in SocketAccessor>>connectTo:timeout: 9.4 SocketAccessor>>handleAsyncConnect:timeout: 4.9 DeferredBinding>>value 4.9 DeferredBinding>>resolveBinding 4.9 Behavior>>bindingFor: 4.9 Class>>bindingFor:modifiers: 4.9 Class>>protectedBindingFor:modifiers: 4.6 SocketAccessor>>setSem:forWrite: 6.0 IPSocketAddress class>>hostName:port: 4.9 SocketAddress class>>new 4.9 IPSocketAddress class>>new: 4.9 SocketAddress>>domainCode: 4.9 SocketAddress>>canonicalize 4.9 SocketAddress class>>canonicalize: 4.9 SocketAddress class>>knownClassFromCode: 4.9 GeneralBindingReference>>value 4.9 GeneralBindingReference>>binding 4.9 GeneralBindingReference>>bindingOrNil 4.9 GeneralBindingReference>>bindingOrNilWithProtection: 4.9 GeneralBindingReference>>resolveWithProtection:orDo: 4.9 [] in GeneralBindingReference>>bindingOrNilWithProtection: 4.9 GeneralBindingReference>>search:starting:withProtection:do: 4.9 GeneralNameSpace>>bindingFor: 4.9 GeneralNameSpace>>bindingFor:modifiers: 4.9 NameSpaceSearchRules>>forNames:do: 4.9 BlockClosure>>ensure: 4.9 [] in GeneralNameSpace>>bindingFor:modifiers: 4.9 GeneralNameSpaceImport>>bindingFor:modifiers: 4.9 GeneralNameSpace>>protectedBindingFor:modifiers: 4.9 NameSpaceBindings>>lookup: 8.3 GOODS.KKDatabase>>commit 8.3 GOODS.KKDatabase>>commitOnFailure: 8.3 GOODS.KKKeyCache>>commit 8.3 GOODS.KKRecordCache>>commitObjects: 8.3 GOODS.KKClassCache>>cacheClassesDuring: 8.3 BlockClosure>>ensure: 8.3 [] in GOODS.KKRecordCache>>commitObjects: 7.8 GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 7.8 Dictionary>>keysAndValuesDo: 7.8 [] in GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 7.8 GOODS.KKRecordCache>>updateRecordForObject: 7.8 GOODS.KKClassCache>>classForObject: 7.8 Object>>ifNil:ifNotNil: 7.8 BlockClosure>>cull: 7.8 [] in GOODS.KKClassCache>>classForObject: 7.8 Dictionary>>at:ifAbsentPut: 7.8 Dictionary>>at:ifAbsent: 7.8 [] in Dictionary>>at:ifAbsentPut: 7.8 [] in [] in GOODS.KKClassCache>>classForObject: 7.8 GOODS.KKClassCache>>findClassForObject: 7.8 UndefinedObject>>ifNil: 7.8 [] in GOODS.KKClassCache>>findClassForObject: 7.8 GOODS.KKClassCache>>storeDescriptor: 7.8 GOODS.KKConnection>>putClass: 7.8 GOODS.KKClassRecord class>>fromDescriptor: 7.8 GOODS.KKClassRecord>>initializeFromDescriptor: 7.8 OrderedCollection>>withIndexCollect: 7.8 OrderedCollection>>addLast: 4.9 GOODS.KKDatabase class>>connection: 4.9 GOODS.KKDatabase>>initializeWithConnection: 4.9 GOODS.KKCache class>>database: 4.9 GOODS.KKCache>>initializeWithDatabase: 4.9 GOODS.KKKeyCache>>initialize 4.9 DeferredBinding>>value 4.9 DeferredBinding>>resolveBinding 4.9 GeneralNameSpace>>bindingFor: 4.9 GeneralNameSpace>>bindingFor:modifiers: 4.9 NameSpaceSearchRules>>forNames:do: 4.9 BlockClosure>>ensure: 4.9 [] in GeneralNameSpace>>bindingFor:modifiers: 4.9 GeneralNameSpaceImport>>bindingFor:modifiers: 4.9 GeneralNameSpace>>protectedBindingFor:modifiers: 4.9 NameSpaceSearchRules>>forNames:do: 4.9 BlockClosure>>ensure: 4.9 [] in GeneralNameSpace>>protectedBindingFor:modifiers: 4.9 NameSpaceImport>>protectedBindingFor:modifiers: 4.9 GeneralNameSpaceImport>>bindingFor:modifiers: 4.9 GeneralNameSpace>>protectedBindingFor:modifiers: 4.9 VariableBinding>>isPrivate 28.4 TestCase>>performTest 7.3 GOODS.KKDBTest>>testSpecialObjects 5.2 GOODS.KKDatabase>>commit 5.2 GOODS.KKDatabase>>commitOnFailure: 5.2 GOODS.KKKeyCache>>commit 5.2 GOODS.KKRecordCache>>commitObjects: 5.2 GOODS.KKClassCache>>cacheClassesDuring: 5.2 BlockClosure>>ensure: 5.2 [] in GOODS.KKRecordCache>>commitObjects: 5.2 GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 5.2 Dictionary>>keysAndValuesDo: 5.2 [] in GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 5.2 GOODS.KKRecordCache>>updateRecordForObject: 5.2 GOODS.KKClassDescriptor>>streamForObject:database: 5.2 GOODS.KKClassDescriptor>>writeObject:onStream:forDatabase: 5.2 GOODS.KKClassDescriptor>>referenceFieldsFirstDo: 5.2 OrderedCollection>>do: 5.2 [] in GOODS.KKClassDescriptor>>referenceFieldsFirstDo: 5.2 [] in GOODS.KKClassDescriptor>>writeObject:onStream:forDatabase: 5.2 GOODS.KKVariableFieldContainer>>writeObject:onStream:forDatabase: 5.2 GOODS.KKVariableFieldContainer>>writeVariablePartOfObject:onStream:forDatabase: 5.2 GOODS.KKReferenceField>>writeField:onStream:forDatabase: 5.2 GOODS.KKReferenceField>>keyForReference:database: 5.2 GOODS.KKDatabase>>keyForObject: 5.2 IdentityDictionary>>at:ifAbsent: 5.2 [] in GOODS.KKDatabase>>keyForObject: 5.2 GOODS.KKKeyCache>>keyForObject: 5.2 WeakDictionary>>at:ifAbsent: 5.2 RecursionLock>>critical: 5.2 Semaphore>>critical: 5.2 BlockClosure>>ensure: 5.2 [] in RecursionLock>>critical: 5.2 BlockClosure>>ensure: 5.2 [] in WeakDictionary>>at:ifAbsent: 5.2 [] in GOODS.KKKeyCache>>keyForObject: 5.2 GOODS.KKRecordCache>>allocateObject: 5.2 GOODS.KKClassCache>>classForObject: 5.2 Object>>ifNil:ifNotNil: 5.2 BlockClosure>>cull: 5.2 [] in GOODS.KKClassCache>>classForObject: 5.2 Dictionary>>at:ifAbsentPut: 5.2 Dictionary>>at:ifAbsent: 5.2 [] in Dictionary>>at:ifAbsentPut: 5.2 [] in [] in GOODS.KKClassCache>>classForObject: 5.2 GOODS.KKClassCache>>findClassForObject: 5.2 UndefinedObject>>ifNil: 5.2 [] in GOODS.KKClassCache>>findClassForObject: 5.2 GOODS.KKClassCache>>storeDescriptor: 5.2 GOODS.KKConnection>>putClass: 5.2 GOODS.KKConnection>>receiveClassID 5.2 GOODS.KKConnection>>receiveHeader 5.2 GOODS.KKConnection>>receiveIntoHeaderBuffer 5.2 GOODS.KKConnection>>receiveFullyInto: 5.2 IOAccessor>>readInto:startingAt:for: 5.2 SocketAccessor>>primReadInto:startingAt:for: 5.2 BlockClosure>>on:do: 5.2 [] in SocketAccessor>>primReadInto:startingAt:for: 5.2 SocketAccessor>>privateReadInto:startingAt:for: 5.2 SocketAccessor>>TimeProfilerCore_privateReadInto:startingAt:for: 5.2 IOAccessor>>readWaitWithTimeoutMs: 5.2 SocketAccessor>>setSem:forWrite: 2.0 Dictionary>>at: 2.0 Dictionary>>at:ifAbsent: 2.0 Dictionary>>findKeyOrNil: 2.0 GOODS.KKObjectProxy>>doesNotUnderstand: 2.0 GOODS.KKObjectProxy>>xxxObject 2.0 UndefinedObject>>ifNil: 2.0 [] in GOODS.KKObjectProxy>>xxxObject 2.0 GOODS.KKDatabase>>at: 2.0 GOODS.KKKeyCache>>at: 2.0 GOODS.KKKeyCache>>at:ifAbsent: 2.0 Dictionary>>at:ifAbsent: 2.0 [] in GOODS.KKKeyCache>>at: 2.0 GOODS.KKKeyCache>>loadObjectAt: 2.0 GOODS.KKRecordCache>>loadObjectsStartingAt:do:ifAbsent: 2.0 OrderedCollection>>reverseDo: 2.0 [] in GOODS.KKRecordCache>>loadObjectsStartingAt:do:ifAbsent: 2.0 GOODS.KKRecordCache>>loadObjectRecord: 2.0 GOODS.KKClassCache>>at: 2.0 Dictionary>>at:ifAbsent: 2.0 [] in GOODS.KKClassCache>>at: 2.0 GOODS.KKClassCache>>loadDescriptorAt: 2.0 GOODS.KKConnection>>classAt: 2.0 GOODS.KKConnection>>sendCommand:withShort: 2.0 GOODS.KKConnection>>sendCommand:withByte:withShort:withLong:withLong: 2.0 IOAccessor>>writeAll: 2.0 IOAccessor>>writeFrom:startingAt:forSure: 2.0 SocketAccessor>>primWriteFrom:startingAt:for: 2.0 BlockClosure>>on:do: 2.0 [] in SocketAccessor>>primWriteFrom:startingAt:for: 2.0 SocketAccessor>>privateWriteFrom:startingAt:for: 2.0 SocketAccessor>>TimeProfilerCore_privateWriteFrom:startingAt:for: 5.3 GOODS.KKDBTest>>testRefreshRoot 5.3 GOODS.KKDatabase>>commit 5.3 GOODS.KKDatabase>>commitOnFailure: 5.3 GOODS.KKKeyCache>>commit 5.3 GOODS.KKRecordCache>>commitObjects: 5.3 GOODS.KKClassCache>>cacheClassesDuring: 5.3 BlockClosure>>ensure: 5.3 [] in GOODS.KKRecordCache>>commitObjects: 5.3 GOODS.KKAllocationCache>>reloadCache 5.3 GOODS.KKConnection>>bulkAllocateSizes:classes:reserve: 5.3 GOODS.KKConnection>>receiveObjectIDs 5.3 GOODS.KKConnection>>receiveHeader 5.3 GOODS.KKConnection>>receiveIntoHeaderBuffer 5.3 GOODS.KKConnection>>receiveFullyInto: 5.3 IOAccessor>>readInto:startingAt:for: 5.3 SocketAccessor>>primReadInto:startingAt:for: 5.3 BlockClosure>>on:do: 5.3 [] in SocketAccessor>>primReadInto:startingAt:for: 5.3 SocketAccessor>>privateReadInto:startingAt:for: 5.3 SocketAccessor>>TimeProfilerCore_privateReadInto:startingAt:for: 5.3 IOAccessor>>readWaitWithTimeoutMs: 5.3 SocketAccessor>>setSem:forWrite: 4.6 GOODS.KKDBTest>>testTransactions 4.6 GOODS.KKDatabase>>commit 4.6 GOODS.KKDatabase>>commitOnFailure: 4.6 True>>ifTrue:ifFalse: 4.6 [] in GOODS.KKDatabase>>commitOnFailure: 4.6 GOODS.KKDatabase>>refresh 4.6 GOODS.KKKeyCache>>refresh 4.6 GOODS.KKKeyCache>>checkForNewInvalids 4.6 GOODS.KKConnection>>checkForNewInvalids 4.6 GOODS.KKConnection>>dataAvailable 4.6 SocketAccessor>>dataAvailable 4.6 IOAccessor>>readWaitWithTimeoutMs: 4.6 SocketAccessor>>setSem:forWrite: 4.4 GOODS.KKDBTest>>testConflict 4.4 GOODS.KKDatabase>>commit 4.4 GOODS.KKDatabase>>commitOnFailure: 4.4 GOODS.KKKeyCache>>commit 4.4 GOODS.KKRecordCache>>commitObjects: 4.4 GOODS.KKClassCache>>cacheClassesDuring: 4.4 BlockClosure>>ensure: 4.4 [] in GOODS.KKRecordCache>>commitObjects: 4.4 GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 4.4 Dictionary>>keysAndValuesDo: 4.4 [] in GOODS.KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: 4.4 GOODS.KKRecordCache>>updateRecordForObject: 4.4 GOODS.KKClassCache>>classForObject: 4.4 Object>>ifNil:ifNotNil: 4.4 BlockClosure>>cull: 4.4 [] in GOODS.KKClassCache>>classForObject: 4.4 Dictionary>>at:ifAbsentPut: 4.4 Dictionary>>at:ifAbsent: 4.4 [] in Dictionary>>at:ifAbsentPut: 4.4 [] in [] in GOODS.KKClassCache>>classForObject: 4.4 GOODS.KKClassCache>>findClassForObject: 4.4 UndefinedObject>>ifNil: 4.4 [] in GOODS.KKClassCache>>findClassForObject: 4.4 GOODS.KKClassCache>>storeDescriptor: 4.4 GOODS.KKConnection>>putClass: 4.4 GOODS.KKConnection>>receiveClassID 4.4 GOODS.KKConnection>>receiveHeader 4.4 GOODS.KKConnection>>receiveIntoHeaderBuffer 4.4 GOODS.KKConnection>>receiveFullyInto: 4.4 IOAccessor>>readInto:startingAt:for: 4.4 SocketAccessor>>primReadInto:startingAt:for: 4.4 BlockClosure>>on:do: 4.4 [] in SocketAccessor>>primReadInto:startingAt:for: 4.4 SocketAccessor>>privateReadInto:startingAt:for: 4.4 SocketAccessor>>TimeProfilerCore_privateReadInto:startingAt:for: 4.4 IOAccessor>>readWaitWithTimeoutMs: 4.4 SocketAccessor>>setSem:forWrite: 3.7 GOODS.KKDBTest>>testClasses 3.7 GOODS.KKDatabase>>commit 3.7 GOODS.KKDatabase>>commitOnFailure: 3.7 GOODS.KKKeyCache>>commit 3.7 GOODS.KKRecordCache>>commitObjects: 3.7 GOODS.KKClassCache>>cacheClassesDuring: 3.7 BlockClosure>>ensure: 3.7 [] in GOODS.KKRecordCache>>commitObjects: 3.7 GOODS.KKAllocationCache>>reloadCache 3.7 GOODS.KKConnection>>bulkAllocateSizes:classes:reserve: 3.7 GOODS.KKConnection>>receiveObjectIDs 3.7 GOODS.KKConnection>>receiveHeader 3.7 GOODS.KKConnection>>receiveIntoHeaderBuffer 3.7 GOODS.KKConnection>>receiveFullyInto: 3.7 IOAccessor>>readInto:startingAt:for: 3.7 SocketAccessor>>primReadInto:startingAt:for: 3.7 BlockClosure>>on:do: 3.7 [] in SocketAccessor>>primReadInto:startingAt:for: 3.7 SocketAccessor>>privateReadInto:startingAt:for: 3.7 SocketAccessor>>TimeProfilerCore_privateReadInto:startingAt:for: 3.7 IOAccessor>>readWaitWithTimeoutMs: 3.7 SocketAccessor>>setSem:forWrite: 3.2 GOODS.KKDBTest>>testCommitWithRetry 3.2 GOODS.KKDatabase>>commit 3.2 GOODS.KKDatabase>>commitOnFailure: 3.2 GOODS.KKKeyCache>>commit 3.2 GOODS.KKRecordCache>>commitObjects: 3.2 GOODS.KKClassCache>>cacheClassesDuring: 3.2 BlockClosure>>ensure: 3.2 [] in GOODS.KKRecordCache>>commitObjects: 3.2 GOODS.KKConnection>>commitRecords:andValidate: 3.2 GOODS.KKConnection>>receiveTransactionResult 3.2 GOODS.KKConnection>>receiveHeader 3.2 GOODS.KKConnection>>receiveIntoHeaderBuffer 3.2 GOODS.KKConnection>>receiveFullyInto: 3.2 IOAccessor>>readInto:startingAt:for: 3.2 SocketAccessor>>primReadInto:startingAt:for: 3.2 BlockClosure>>on:do: 3.2 [] in SocketAccessor>>primReadInto:startingAt:for: 3.2 SocketAccessor>>privateReadInto:startingAt:for: 3.2 SocketAccessor>>TimeProfilerCore_privateReadInto:startingAt:for: 3.2 IOAccessor>>readWaitWithTimeoutMs: 3.2 SocketAccessor>>setSem:forWrite: 30.2 Object>>sunitChanged: 30.2 Object>>changed: 30.2 Object>>changed:with: 30.2 Refactory.Browser.SUnitStatusBar>>update:with:from: 30.2 Refactory.Browser.SUnitStatusBar>>setTestLabel: 27.0 VisualPart>>repairDamage 27.0 Object>>ifNotNil: 27.0 BlockClosure>>cull: 27.0 [] in VisualPart>>repairDamage 27.0 Window>>displayPendingInvalidation 27.0 ScheduledWindow>>displayDamageEvent: 27.0 WindowDisplayPolicy>>displayDamageList:in: 27.0 CompositePart>>displayOn: 27.0 BoundedWrapper>>displayOn: 27.0 CompositePart>>displayOn: 27.0 WidgetWrapper>>displayOn: 27.0 Wrapper>>displayOn: 27.0 BoundedWrapper>>displayOn: 27.0 WidgetStateWrapper>>displayOn: 27.0 Wrapper>>displayOn: 27.0 CompositePart>>displayOn: 27.0 WidgetWrapper>>displayOn: 27.0 Wrapper>>displayOn: 27.0 BoundedWrapper>>displayOn: 27.0 Panel>>displayOn: 27.0 Panel>>subpartsDo: 27.0 OrderedCollection>>do: 27.0 [] in Panel>>subpartsDo: 27.0 [] in Panel>>displayOn: 27.0 Panel>>displayPart:on: 27.0 BlockClosure>>ensure: 27.0 [] in Panel>>displayPart:on: 27.0 Panel>>displayOn: 27.0 Panel>>subpartsDo: 27.0 OrderedCollection>>do: 27.0 [] in Panel>>subpartsDo: 27.0 [] in Panel>>displayOn: 27.0 Panel>>displayPart:on: 27.0 BlockClosure>>ensure: 27.0 [] in Panel>>displayPart:on: 27.0 Refactory.Browser.SUnitStatusBar>>displayOn: 27.0 Refactory.Browser.SUnitStatusBar>>canRunTests 27.0 Refactory.Browser.SUnitStatusBar>>testCasesExist 27.0 Refactory.Browser.SUnitStatusBar>>pundleTestCasesExist 27.0 Collection>>anySatisfy: 27.0 OrderedCollection>>do: 27.0 [] in Collection>>anySatisfy: 27.0 [] in Refactory.Browser.SUnitStatusBar>>pundleTestCasesExist 14.2 Store.BundleModel>>definedClasses 14.2 OrderedCollection>>do: 14.2 [] in Store.BundleModel>>definedClasses 14.2 Store.PackageModel>>definedClasses 8.0 OrderedCollection>>collect: 8.0 OrderedCollection>>do: 8.0 [] in OrderedCollection>>collect: 8.0 [] in Store.PackageModel>>definedClasses 8.0 Store.ClassDescriptor>>actual 8.0 CharacterArray>>asStrictReference 8.0 GeneralBindingReference class>>pathString: 4.5 OrderedCollection>>collect: 4.5 OrderedCollection>>do: 4.5 [] in OrderedCollection>>collect: 3.5 GeneralBindingReference class>>path: 3.5 OrderedCollection>>collect: 3.5 OrderedCollection>>do: 3.5 [] in OrderedCollection>>collect: 3.5 [] in GeneralBindingReference class>>path: 3.5 SystemUtils class>>validateName: 3.5 Scanner class>>new 3.5 Parser>>initScanner 6.2 Store.PackageModel>>classesDefinedInPackage 6.2 Store.PackageModel>>definedClassModels 6.2 Collection>>asOrderedCollection 6.2 OrderedCollection>>do: 12.9 Refactory.Browser.SUnitStatusBar>>testCasesExistInAny: 12.9 Collection>>anySatisfy: 12.9 OrderedCollection>>do: 12.9 [] in Collection>>anySatisfy: 12.9 [] in Refactory.Browser.SUnitStatusBar>>testCasesExistInAny: 12.9 Refactory.Browser.SUnitStatusBar>>testSelectorsForClass: 12.9 TestCase class>>allTestSelectors 12.9 Behavior>>sunitAllSelectors 12.9 Collection>>asSortedCollection 12.9 SortedCollection>>addAll: 12.9 SortedCollection>>reSort 12.9 SortedCollection>>sort:to: 12.9 SortedCollection>>hybridSort:to:with: 12.9 SortedCollection>>hybridSort:to:with: 12.9 SortedCollection>>hybridSort:to:with: 6.6 [] in SortedCollection class>>initialize 6.6 String>><= 6.6 String>>compare: 6.6 StringCollationPolicy>>collate:to: 6.6 StringCollationPolicy>>cCollate:to: 4.4 Character>>asUppercase 2.2 primitives 6.3 SortedCollection>>hybridSort:to:with: 6.3 SortedCollection>>hybridSort:to:with: 6.3 [] in SortedCollection class>>initialize 6.3 String>><= 6.3 String>>compare: 6.3 StringCollationPolicy class>>default 6.3 Locale class>>current 3.2 PassiveLabel>>labelString: 3.2 PassiveLabel>>label: 3.2 VisualPart>>changedPreferredBounds: 3.2 VisualPart>>changedPreferredBounds:forComponent: 3.2 Panel>>changedPreferredBounds:forComponent: 3.2 Object>>ifNotNil: 3.2 BlockClosure>>cull: 3.2 [] in Panel>>changedPreferredBounds:forComponent: 3.2 Panel>>changedPreferredBounds:forComponent: 3.2 Object>>ifNotNil: 3.2 BlockClosure>>cull: 3.2 [] in Panel>>changedPreferredBounds:forComponent: 3.2 Panel>>changedPreferredBounds:forComponent: 3.2 Panel>>bounds: 3.2 Panel>>updatePartFrames: 3.2 [] in Refactory.Browser.CodeModel>>mainView 3.2 OrderedCollection>>last 6.4 Refactory.Browser.CodeModel>>navigate 6.4 Refactory.Browser.BrowserNavigator>>setState: 6.4 Refactory.Browser.Navigator>>setState: 6.4 Refactory.Browser.Navigator>>updatePartsWith: 6.4 OrderedCollection>>do: 6.4 [] in Refactory.Browser.Navigator>>updatePartsWith: 6.4 Refactory.Browser.TabNavigatorPart>>selectState: 6.4 Refactory.Browser.TabNavigatorPart>>selectStateForComponents: 6.4 OrderedCollection>>do: 6.4 [] in Refactory.Browser.TabNavigatorPart>>selectStateForComponents: 6.4 Refactory.Browser.ClassNavigatorPart>>selectState: 6.4 Refactory.Browser.ClassNavigatorPart>>fillInListFor: 6.4 Refactory.Browser.ListNavigatorPart>>updateListWith: 6.4 Refactory.Browser.ClassNavigatorPart>>list: 6.4 Refactory.Browser.ListNavigatorPart>>list: 6.4 SelectionInList>>list: 6.4 ValueModel>>value: 6.4 Object>>changed: 6.4 Object>>changed:with: 6.4 DependentsCollection>>update:with:from: 6.4 Refactory.Browser.RBMultiSelectionInList>>update:with:from: 6.4 Object>>changed: 6.4 Object>>changed:with: 6.4 DependentsCollection>>update:with:from: 6.4 SelectionView>>update:with:from: 6.4 MultiSelectionSequenceView>>updateSelectionChannel: 6.4 Refactory.Browser.RBMultiSelectionView>>updateSelectionChannel 6.4 Collection>>notEmpty 4.1 Refactory.Browser.SUnitStatusBar>>setTestLabel: 2.9 VisualPart>>repairDamage 2.9 Object>>ifNotNil: 2.9 BlockClosure>>cull: 2.9 [] in VisualPart>>repairDamage 2.9 Window>>displayPendingInvalidation 2.9 ScheduledWindow>>displayDamageEvent: 2.9 WindowDisplayPolicy>>displayDamageList:in: 2.9 DisplaySurface>>graphicsContext 2.9 GraphicsContext class>>on: 2.9 GraphicsContext>>setMedium: 2.9 ScreenGraphicsContext>>initializeForMedium 2.9 GraphicsContext>>initializeForMedium 2.9 GraphicsContext>>paint: 2.9 SymbolicPaint>>installOn: 2.9 ColorValue>>installOn: 2.9 GraphicsContext>>setPaintToColor: 2.9 PaintPolicy>>renderPaint:usingPalette:on: 2.9 NearestPaint>>renderPaint:usingPalette:on: 2.9 FixedPalette>>indexOfPaintNearest: 2.9 ColorValue>>blue 2.2 Refactory.Browser.SUnitStatusBar>>testCases 2.2 Refactory.Browser.SUnitStatusBar>>pundleTestCases 2.2 Collection>>inject:into: 2.2 OrderedCollection>>do: 2.2 [] in Collection>>inject:into: 2.2 [] in Refactory.Browser.SUnitStatusBar>>pundleTestCases 2.2 Refactory.Browser.SUnitStatusBar>>testCasesFor: 2.2 Collection>>inject:into: 2.2 OrderedCollection>>do: 2.2 [] in Collection>>inject:into: 2.2 [] in Refactory.Browser.SUnitStatusBar>>testCasesFor: 2.2 Refactory.Browser.SUnitStatusBar>>testSelectorsForClass: 2.2 TestCase class>>allTestSelectors 2.2 Behavior>>sunitAllSelectors 2.2 Collection>>asSortedCollection 2.2 SortedCollection>>addAll: 2.2 SortedCollection>>reSort 2.2 SortedCollection>>sort:to: 2.2 SortedCollection>>hybridSort:to:with: 2.2 SortedCollection>>hybridSort:to:with: 2.2 [] in SortedCollection class>>initialize 2.2 String>><= 2.2 String>>compare: 2.2 StringCollationPolicy>>collate:to: 2.2 StringCollationPolicy>>cCollate:to: ** Totals ** 30.9 SocketAccessor>>setSem:forWrite: 7.8 OrderedCollection>>addLast: 6.4 Collection>>notEmpty 6.3 Locale class>>current 6.2 OrderedCollection>>do: 4.9 VariableBinding>>isPrivate 4.9 NameSpaceBindings>>lookup: 4.9 Class>>protectedBindingFor:modifiers: 4.5 [] in OrderedCollection>>collect: 4.4 Character>>asUppercase 4.3 StringCollationPolicy>>cCollate:to: 3.5 Parser>>initScanner 3.2 OrderedCollection>>last 2.9 ColorValue>>blue 2.0 SocketAccessor>>TimeProfilerCore_privateWriteFrom:startingAt:for: - 4033 tallies, 4097 msec. **Tree** 97.9% {4011ms} TestRunner>>runAll |97.4% {3990ms} TestRunner>>runSuite: | 97.3% {3986ms} TestRunner>>runTest: | 96.9% {3970ms} KKDBTest(TestCase)>>run: | 96.9% {3970ms} TestResult>>runCase: | 96.9% {3970ms} KKDBTest(TestCase)>>runCase | 56.1% {2298ms} KKDBTest(TestCase)>>performTest | |11.7% {479ms} KKDBTest>>testCommitWithRetry | | |5.6% {229ms} KKDatabase>>commitWithRetry: | | | |3.0% {123ms} KKDatabase>>commitOnFailure: | | | | |3.0% {123ms} KKKeyCache>>commit | | | | | 3.0% {123ms} KKRecordCache>>commitObjects: | | | |2.3% {94ms} KKDatabase>>commitWithRetry: | | | | 2.3% {94ms} KKDatabase>>commitOnFailure: | | | | 2.3% {94ms} KKKeyCache>>commit | | | | 2.3% {94ms} KKRecordCache>>commitObjects: | | |5.4% {221ms} KKDatabase>>commit | | | 5.4% {221ms} KKDatabase>>commitOnFailure: | | | 5.4% {221ms} KKKeyCache>>commit | | | 5.4% {221ms} KKRecordCache>>commitObjects: | | | 2.2% {90ms} KKConnection>>commitRecords:andValidate: | | | |2.2% {90ms} KKConnection>>receiveTransactionResult | | | | 2.2% {90ms} KKConnection>>receiveHeader | | | | 2.2% {90ms} KKConnection>>receiveIntoHeaderBuffer | | | | 2.2% {90ms} KKConnection>>receiveFullyInto: | | | | 2.2% {90ms} Socket>>receiveDataInto:startingAt: | | | | 2.2% {90ms} Socket>>waitForDataIfClosed: | | | 2.0% {82ms} KKAllocationCache>>reloadCache | | | 2.0% {82ms} KKConnection>>bulkAllocateSizes:classes:reserve: | | | 2.0% {82ms} KKConnection>>receiveObjectIDs | | | 2.0% {82ms} KKConnection>>receiveHeader | | | 2.0% {82ms} KKConnection>>receiveIntoHeaderBuffer | | | 2.0% {82ms} KKConnection>>receiveFullyInto: | | | 2.0% {82ms} Socket>>receiveDataInto:startingAt: | | | 2.0% {82ms} Socket>>waitForDataIfClosed: | |6.8% {279ms} KKDBTest>>testTransactions | | |6.6% {270ms} KKDatabase>>commit | | | 6.6% {270ms} KKDatabase>>commitOnFailure: | | | 6.6% {270ms} KKKeyCache>>commit | | | 6.6% {270ms} KKRecordCache>>commitObjects: | | | 3.1% {127ms} KKRecordCache>>addNewObjectsToRecords: | | | |3.1% {127ms} KKRecordCache>>updateRecordForObject: | | | | 3.1% {127ms} KKClassDescriptor>>streamForObject:database: | | | | 3.1% {127ms} KKClassDescriptor>>writeObject:onStream:forDatabase: | | | | 3.1% {127ms} KKSingleFieldContainer>>writeObject:onStream:forDatabase: | | | | 3.1% {127ms} KKReferenceField>>writeField:onStream:forDatabase: | | | | 3.1% {127ms} KKReferenceField>>keyForReference:database: | | | | 3.1% {127ms} KKDatabase>>keyForObject: | | | | 3.1% {127ms} KKKeyCache>>keyForObject: | | | | 3.1% {127ms} KKRecordCache>>allocateObject: | | | | 3.1% {127ms} KKClassCache>>classForObject: | | | | 3.1% {127ms} KKClassCache>>findClassForObject: | | | | 3.1% {127ms} KKClassCache>>storeDescriptor: | | | | 3.1% {127ms} KKConnection>>putClass: | | | | 3.0% {123ms} KKConnection>>receiveClassID | | | | 3.0% {123ms} KKConnection>>receiveHeader | | | | 3.0% {123ms} KKConnection>>receiveIntoHeaderBuffer | | | | 3.0% {123ms} KKConnection>>receiveFullyInto: | | | | 3.0% {123ms} Socket>>receiveDataInto:startingAt: | | | | 3.0% {123ms} Socket>>waitForDataIfClosed: | | | 2.2% {90ms} KKConnection>>commitRecords:andValidate: | | | 2.2% {90ms} KKConnection>>receiveTransactionResult | | | 2.2% {90ms} KKConnection>>receiveHeader | | | 2.2% {90ms} KKConnection>>receiveIntoHeaderBuffer | | | 2.2% {90ms} KKConnection>>receiveFullyInto: | | | 2.2% {90ms} Socket>>receiveDataInto:startingAt: | | | 2.2% {90ms} Socket>>waitForDataIfClosed: | |6.6% {270ms} KKDBTest>>testIdentitySet | | |5.4% {221ms} KKDatabase>>commit | | | 5.4% {221ms} KKDatabase>>commitOnFailure: | | | 5.4% {221ms} KKKeyCache>>commit | | | 5.4% {221ms} KKRecordCache>>commitObjects: | | | 2.1% {86ms} KKRecordCache>>addNewObjectsToRecords: | | | 2.1% {86ms} KKRecordCache>>updateRecordForObject: | | | 2.1% {86ms} KKClassDescriptor>>streamForObject:database: | | | 2.1% {86ms} KKClassDescriptor>>writeObject:onStream:forDatabase: | | | 2.1% {86ms} KKSingleFieldContainer>>writeObject:onStream:forDatabase: | | | 2.1% {86ms} KKReferenceField>>writeField:onStream:forDatabase: | | | 2.1% {86ms} KKReferenceField>>keyForReference:database: | | | 2.1% {86ms} KKDatabase>>keyForObject: | | | 2.1% {86ms} KKKeyCache>>keyForObject: | | | 2.1% {86ms} KKRecordCache>>allocateObject: | | | 2.1% {86ms} KKClassCache>>classForObject: | | | 2.1% {86ms} KKClassCache>>findClassForObject: | | | 2.1% {86ms} KKClassCache>>storeDescriptor: | | | 2.1% {86ms} KKConnection>>putClass: | | | 2.1% {86ms} KKConnection>>receiveClassID | | | 2.1% {86ms} KKConnection>>receiveHeader | | | 2.1% {86ms} KKConnection>>receiveIntoHeaderBuffer | | | 2.1% {86ms} KKConnection>>receiveFullyInto: | | | 2.1% {86ms} Socket>>receiveDataInto:startingAt: | | | 2.1% {86ms} Socket>>waitForDataIfClosed: | |5.6% {229ms} KKDBTest>>testConflict | | |5.5% {225ms} KKDatabase>>commit | | | 5.5% {225ms} KKDatabase>>commitOnFailure: | | | 5.5% {225ms} KKKeyCache>>commit | | | 5.5% {225ms} KKRecordCache>>commitObjects: | | | 3.1% {127ms} KKConnection>>commitRecords:andValidate: | | | 3.1% {127ms} KKConnection>>receiveTransactionResult | | | 3.1% {127ms} KKConnection>>receiveHeader | | | 3.1% {127ms} KKConnection>>receiveIntoHeaderBuffer | | | 3.1% {127ms} KKConnection>>receiveFullyInto: | | | 3.1% {127ms} Socket>>receiveDataInto:startingAt: | | | 3.1% {127ms} Socket>>waitForDataIfClosed: | |5.4% {221ms} KKDBTest>>testRefreshRoot | | |5.3% {217ms} KKDatabase>>commit | | | 5.3% {217ms} KKDatabase>>commitOnFailure: | | | 5.3% {217ms} KKKeyCache>>commit | | | 5.3% {217ms} KKRecordCache>>commitObjects: | | | 2.1% {86ms} KKConnection>>commitRecords:andValidate: | | | |2.1% {86ms} KKConnection>>receiveTransactionResult | | | | 2.1% {86ms} KKConnection>>receiveHeader | | | | 2.1% {86ms} KKConnection>>receiveIntoHeaderBuffer | | | | 2.1% {86ms} KKConnection>>receiveFullyInto: | | | | 2.1% {86ms} Socket>>receiveDataInto:startingAt: | | | | 2.1% {86ms} Socket>>waitForDataIfClosed: | | | 2.1% {86ms} KKAllocationCache>>reloadCache | | | 2.1% {86ms} KKConnection>>bulkAllocateSizes:classes:reserve: | | | 2.1% {86ms} KKConnection>>receiveObjectIDs | |4.5% {184ms} KKDBTest>>testClasses | | |4.3% {176ms} KKDatabase>>commit | | | 4.3% {176ms} KKDatabase>>commitOnFailure: | | | 4.3% {176ms} KKKeyCache>>commit | | | 4.3% {176ms} KKRecordCache>>commitObjects: | | | 2.1% {86ms} KKRecordCache>>addNewObjectsToRecords: | | | 2.1% {86ms} KKRecordCache>>updateRecordForObject: | | | 2.1% {86ms} KKClassDescriptor>>streamForObject:database: | | | 2.1% {86ms} KKClassDescriptor>>writeObject:onStream:forDatabase: | | | 2.1% {86ms} KKSingleFieldContainer>>writeObject:onStream:forDatabase: | | | 2.1% {86ms} KKReferenceField>>writeField:onStream:forDatabase: | | | 2.1% {86ms} KKReferenceField>>keyForReference:database: | | | 2.1% {86ms} KKDatabase>>keyForObject: | | | 2.1% {86ms} KKKeyCache>>keyForObject: | | | 2.1% {86ms} KKRecordCache>>allocateObject: | | | 2.1% {86ms} KKClassCache>>classForObject: | | | 2.1% {86ms} KKClassCache>>findClassForObject: | | | 2.1% {86ms} KKClassCache>>storeDescriptor: | | | 2.1% {86ms} KKConnection>>putClass: | | | 2.1% {86ms} KKConnection>>receiveClassID | |4.2% {172ms} KKDBTest>>testSpecialObjects | | |4.1% {168ms} KKDatabase>>commit | | | 4.1% {168ms} KKDatabase>>commitOnFailure: | | | 4.1% {168ms} KKKeyCache>>commit | | | 4.1% {168ms} KKRecordCache>>commitObjects: | |3.4% {139ms} KKDBTest>>testCharacters | | |3.2% {131ms} KKDatabase>>commit | | | 3.2% {131ms} KKDatabase>>commitOnFailure: | | | 3.2% {131ms} KKKeyCache>>commit | | | 3.2% {131ms} KKRecordCache>>commitObjects: | |3.4% {139ms} KKDBTest>>testNumbers | | |3.2% {131ms} KKDatabase>>commit | | | 3.2% {131ms} KKDatabase>>commitOnFailure: | | | 3.2% {131ms} KKKeyCache>>commit | | | 3.2% {131ms} KKRecordCache>>commitObjects: | |3.3% {135ms} KKDBTest>>testRollbackExistingObject | | 3.3% {135ms} KKDatabase>>commit | | 3.3% {135ms} KKDatabase>>commitOnFailure: | | 3.3% {135ms} KKKeyCache>>commit | | 3.3% {135ms} KKRecordCache>>commitObjects: | | 2.2% {90ms} KKConnection>>commitRecords:andValidate: | | 2.1% {86ms} KKConnection>>receiveTransactionResult | | 2.1% {86ms} KKConnection>>receiveHeader | | 2.1% {86ms} KKConnection>>receiveIntoHeaderBuffer | | 2.1% {86ms} KKConnection>>receiveFullyInto: | | 2.1% {86ms} Socket>>receiveDataInto:startingAt: | | 2.1% {86ms} Socket>>waitForDataIfClosed: | 40.9% {1676ms} KKDBTest>>setUp | 23.9% {979ms} KKConnection class>>hostname:port: | |23.8% {975ms} KKConnection class>>hostname:port:loginName: | | 21.0% {860ms} Delay>>wait | 15.8% {647ms} KKDatabase>>commit | 15.8% {647ms} KKDatabase>>commitOnFailure: | 15.8% {647ms} KKKeyCache>>commit | 15.8% {647ms} KKRecordCache>>commitObjects: | 12.8% {524ms} KKConnection>>commitRecords:andValidate: | |12.6% {516ms} KKConnection>>receiveTransactionResult | | 12.6% {516ms} KKConnection>>receiveHeader | | 12.6% {516ms} KKConnection>>receiveIntoHeaderBuffer | | 12.6% {516ms} KKConnection>>receiveFullyInto: | | 12.6% {516ms} Socket>>receiveDataInto:startingAt: | | 12.6% {516ms} Socket>>waitForDataIfClosed: | 2.4% {98ms} KKRecordCache>>addDirtyObjects:toRecords:andCleanObjectsTo: | 2.4% {98ms} KKRecordCache>>updateRecordForObject: | 2.4% {98ms} KKClassCache>>classForObject: | 2.4% {98ms} KKClassCache>>findClassForObject: 2.1% {86ms} SystemProgressMorph>>label:min:max: 2.0% {82ms} PasteUpMorph>>displayWorld 2.0% {82ms} PasteUpMorph>>privateOuterDisplayWorld 2.0% {82ms} WorldState>>displayWorld:submorphs: **Leaves** 70.3% {2880ms} Socket>>waitForDataIfClosed: 21.1% {864ms} Delay>>wait **Memory** old +281,492 bytes young -120,412 bytes used +161,080 bytes free -161,080 bytes **GCs** full 0 totalling 0ms (0.0% uptime) incr 37 totalling 31ms (1.0% uptime), avg 1.0ms tenures 4 (avg 9 GCs/tenure) root table 0 overflows _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Am I allowed to reply to my own post? :-)
I was having too much fun working in VW again so I hacked out a WriteBarrier for the GOODS client using the excellent WriteBarriers package in the public repo. I also fixed a caching bug. Performance is much improved. I think this will be a very performant OODB client for VisualWorks. Give it a try! David _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
In reply to this post by cdavidshaffer
Hello, _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
In reply to this post by cdavidshaffer
On Fri, 20 Jun 2008 20:36:18 -0400
"C. David Shaffer" <[hidden email]> wrote: > I was having too much fun working in VW again so I hacked out a > WriteBarrier for the GOODS client using the excellent WriteBarriers > package in the public repo. I also fixed a caching bug. Performance is > much improved. I think this will be a very performant OODB client for > VisualWorks. Give it a try! Hi David, adventures! copy and paste! red bars galore! I loaded version 1.9 of your goods port into my image and let the test run. All failed, which was nice, as I had no goods server running, not even installed. :-) I found a goods related entry in the gentoo bugtracker, along with an ebuild, written by Lukas Renggli in 2004 for goods 2.89. I copied the ebuild file, renamed it to goods-3.07 and let gentoo work its magic. Then I copied unidb.cfg and changed it to run goods only on port 2006, which you use in your tests. Time for "goodsrv unidb" and rerunning the test suite. All but one run, testTransactions raises an error. The goods console shows the following info during the test run: 00:31.12 24-JUN-2008: Open session for client 'squeak315B1DA546B' Send class 'Core.Association' to client Send class 'Core.Dictionary' to client Send class 'Core.Association' to client Send class 'Core.Dictionary' to client Send class 'Core.ByteString' to client Send class 'Core.OrderedCollection' to client 00:31.16 24-JUN-2008: Connection with 'squeak315B1DA546B' is lost: connection is broken Server agent 'squeak315B1DA546B' terminated The exception is raised while executing the "dbOne rollback" after adding 11 to: 20 to dbOneNode1. The problem seems to be that the immutable String 'TestNode1' is sent copyFrom: 'TestNode1', which is not well received ... Am I missing something? The stack dump has the following items on top: Unhandled exception: Core.NoModificationError WriteBarriers.Tracker class>>modified:selector:index:value: ByteString(Object)>>noModificationErrorFor:index:value: ByteString(Object)>>basicAt:put: ByteString(Object)>>restoreFrom: ByteString(Object)>>copyFrom: optimized [] in [] in GOODS.KKKeyCache>>rollback optimized [] in GOODS.KKRecordCache>>objectForRecordAt:ifPresent: Dictionary>>at:ifPresent: GOODS.KKRecordCache>>objectForRecordAt:ifPresent: optimized [] in GOODS.KKKeyCache>>rollback Dictionary>>keysAndValuesDo: GOODS.KKKeyCache>>rollback GOODS.KKDatabase>>rollback GOODS.KKDBTest>>testTransactions ---------------------------------------------------------------------- WriteBarriers.Tracker class>>modified:selector:index:value: Receiver: a WriteBarriers.Tracker class Instance Variables: superclass = Announcer methodDict = a MethodDictionary[10] format = 16385 subclasses = an Array[2] instanceVariables = an Array[0] organization = ('private' #applyModificationTo:selector:index:value: #cannotTrackError #modified:selector:index:value: #privateTrack: #privateUntrack:) ('API' #isTracking: #track: #untrack:) ('initialize-release' #initialize #release) name = #Tracker classPool = a NameSpaceOfClass[1] environment = a NameSpace[2] Arguments: object = 'TestNode1' selector = #basicAt:put: index = 1 value = 84 Temporaries: anybodyCared = false Context PC = 23 ---------------------------------------------------------------------- ByteString(Object)>>noModificationErrorFor:index:value: Receiver: a ByteString Arguments: selector = #basicAt:put: index = 1 value = 84 Context PC = 8 ---------------------------------------------------------------------- ByteString(Object)>>basicAt:put: Receiver: a ByteString Arguments: index = 1 value = 84 Context PC = 29 ---------------------------------------------------------------------- ByteString(Object)>>restoreFrom: Receiver: a ByteString Arguments: otherObject = 'TestNode1' Temporaries: mine = an OrderedCollection[0] his = an OrderedCollection[0] common = 9 comm = 0 ind = 1 ind = 1 ind = 1 ind = nil Context PC = 98 ---------------------------------------------------------------------- ByteString(Object)>>copyFrom: Receiver: a ByteString Arguments: otherObject = 'TestNode1' Context PC = 4 ---------------------------------------------------------------------- optimized [] in [] in GOODS.KKKeyCache>>rollback Receiver: an UndefinedObject Arguments: state = 'TestNode1' Temporaries: .object = 'TestNode1' Context PC = 6 ---------------------------------------------------------------------- optimized [] in GOODS.KKRecordCache>>objectForRecordAt:ifPresent: Receiver: an UndefinedObject Arguments: record = a GOODS.KKObjectRecord Temporaries: .aBlock = BlockClosure [] in [] in GOODS.KKKeyCache>>rollback .super = a GOODS.KKRecordCache Context PC = 9 ---------------------------------------------------------------------- Dictionary>>at:ifPresent: Receiver: a Dictionary Instance Variables: tally = 5 Arguments: key = 66979 aBlock = BlockClosure [] in GOODS.KKRecordCache>>objectForRecordAt:ifPresent: Temporaries: found = true value = a GOODS.KKObjectRecord Context PC = 22 ---------------------------------------------------------------------- GOODS.KKRecordCache>>objectForRecordAt:ifPresent: Receiver: a GOODS.KKRecordCache Instance Variables: database = a GOODS.KKDatabase cache = a Dictionary[5] newObjects = an IdentitySet[0] classCache = a GOODS.KKClassCache allocationCache = a GOODS.KKAllocationCache Arguments: key = 66979 aBlock = BlockClosure [] in [] in GOODS.KKKeyCache>>rollback Context PC = 9 ---------------------------------------------------------------------- optimized [] in GOODS.KKKeyCache>>rollback Receiver: an UndefinedObject Arguments: key = 66979 object = 'TestNode1' Temporaries: .super = a GOODS.KKKeyCache Context PC = 11 ---------------------------------------------------------------------- Dictionary>>keysAndValuesDo: Receiver: a Dictionary Instance Variables: tally = 5 Arguments: aBlock = BlockClosure [] in GOODS.KKKeyCache>>rollback Temporaries: index = 6 elem = 66979 -> 'TestNode1' Context PC = 36 ---------------------------------------------------------------------- GOODS.KKKeyCache>>rollback Receiver: a GOODS.KKKeyCache Instance Variables: database = a GOODS.KKDatabase cache = a Dictionary[5] keys = a WeakDictionary[6] recordCache = a GOODS.KKRecordCache dirtySet = a GOODS.KKDirtySet Context PC = 8 ---------------------------------------------------------------------- GOODS.KKDatabase>>rollback Receiver: a GOODS.KKDatabase Instance Variables: connection = a GOODS.KKConnection keyCache = a GOODS.KKKeyCache specialObjects = an IdentityDictionary[1] Context PC = 3 ---------------------------------------------------------------------- GOODS.KKDBTest>>testTransactions Receiver: a GOODS.KKDBTest Instance Variables: testSelector = #testTransactions dbOne = a GOODS.KKDatabase dbTwo = a GOODS.KKDatabase connOne = a GOODS.KKConnection connTwo = a GOODS.KKConnection Temporaries: dbOneNode1 = an OrderedCollection[10] dbTwoNode1 = an OrderedCollection[10] Context PC = 70 Thanks, s. _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
On Tue, 24 Jun 2008 00:54:18 +0200
Stefan Schmiedl <[hidden email]> wrote: > On Fri, 20 Jun 2008 20:36:18 -0400 > "C. David Shaffer" <[hidden email]> wrote: > > > I was having too much fun working in VW again so I hacked out a > > WriteBarrier for the GOODS client using the excellent WriteBarriers > > package in the public repo. I also fixed a caching bug. Performance is > > much improved. I think this will be a very performant OODB client for > > VisualWorks. Give it a try! > > I loaded version 1.9 of your goods port into my image and let the test > run. All failed, which was nice, as I had no goods server running, not > even installed. :-) That still is true for the 1.11 update, you so quickly provided. :-) > Then I copied unidb.cfg and changed it to run goods only on port 2006, > which you use in your tests. Time for "goodsrv unidb" and rerunning > the test suite. All but one run, testTransactions raises an error. And now all tests run. Thanks, s. _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Free forum by Nabble | Edit this page |