[Vm-dev] SystemTracing updated on SqueakMap

David T. Lewis lewis at mail.msen.com
Sun Dec 2 16:54:58 UTC 2012

I updated the SqueakMap entry for SystemTracing with a new release for
Squeak 4.4. This is the latest version that is being used to trace 64-bit
images on http://box3.squeak.org/job/Squeak%2064-bit%20image/

The script that is being used for the 64-bit image trace is
and copied below for reference.


--- cut here ---

"TraceTo64.st - trace a 32-bit image to 64-bit object format"
"7 November 2012 dtl"

"Use a local copy of a Monticello source file for SystemTracer obtained
from the repository at http://www.squeaksource.com/SystemTracing"
systemTracerSource := 'SystemTracing-dtl.24.mcz'.

"Do everything in a temporary change set. This allows the change records
to be removed from the traced image after tracing is complete."
thisChangeSet := ChangeSet current.
workingChangeSet := ChangeSet basicNewChangeSet: 'SystemTracing-tmp'.
ChangeSet newChanges: workingChangeSet.

"Load system tracer. File the package in from a stream on the source contents
in order minimize changes to this image."
fs := FileStream oldFileNamed: systemTracerSource.
[zip := ZipArchive new readFrom: fs.
srcMember := zip members detect: [:e | e fileName = 'snapshot/source.st' ].
src := ReadStream on: srcMember contents.
src fileIn
] ensure: [fs close].

"Trace the image"
newImageName := (Smalltalk imageName copyUpToLast: $.), '-64.image'.
(Smalltalk at: #SystemTracer64)
	perform: #writeImage:interactive:
	with: newImageName
	with: false.

"Execution resumes here in the newly traced image"
Smalltalk wordSize = 8
	ifFalse: ["If word size is 4, we are in the original image, so quit now"
			Smalltalk snapshot: false andQuit: true]
	ifTrue: ["If word size 8, this is the new 64-bit image, so continue"]. 

"Remove system tracer from the image"
SystemOrganization removeSystemCategory: 'SystemTracing'.

"Return to the original change set"
ChangeSet newChanges: thisChangeSet.

"Remove the working change set, returning the image to its original state"
ChangeSet removeChangeSet: workingChangeSet.

"Clean up some garbage"
systemTracerSource := thisChangeSet := workingChangeSet := nil.
fs := src := newImageName := nil.
Smalltalk garbageCollect.

More information about the Vm-dev mailing list