[squeak-dev] The Inbox: SystemReporter-ct.62.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jul 14 14:15:21 UTC 2022


A new version of SystemReporter was added to project The Inbox:
http://source.squeak.org/inbox/SystemReporter-ct.62.mcz

==================== Summary ====================

Name: SystemReporter-ct.62
Author: ct
Time: 7 April 2022, 5:57:05.904555 pm
UUID: 9807e6b3-6613-374c-ab14-5f055f8e750d
Ancestors: SystemReporter-ct.61

Fixes "image locale" report when the new preference for compressed sources is turned on.

=============== Diff against SystemReporter-ct.61 ===============

Item was removed:
- SystemOrganization addCategory: #SystemReporter!

Item was removed:
- Model subclass: #SystemReporter
- 	instanceVariableNames: 'categories categoriesSelected report tinyBenchmarksResult categoryList testRunner spaceAnalysisResult'
- 	classVariableNames: ''
- 	poolDictionaries: ''
- 	category: 'SystemReporter'!
- 
- !SystemReporter commentStamp: 'laza 1/18/2011 12:04' prior: 0!
- SystemReporter offers a window where information about the system is gathered. This can be easily copied to the clipboard and be attached to a bug report for better identification of the context the bug occured in.
- 
- To extend the SystemReporter:
- 	- add a method
- 		reportXYZ: aStream
- 	  to the reporting category
- 	- insert a line
- 		add: #XYZ method: #reportXYZ
- 	  to the initialize method
- !

Item was removed:
- ----- Method: SystemReporter class>>open (in category 'instance creation') -----
- open
- 	^ ToolBuilder open: self new.!

Item was removed:
- ----- Method: SystemReporter>>add:method: (in category 'accessing-categories') -----
- add: category method: aSymbol
- 	^self categoryList add: (self categories add: category -> aSymbol) key!

Item was removed:
- ----- Method: SystemReporter>>buildCategoriesWith: (in category 'building') -----
- buildCategoriesWith: aBuilder
- 	^ aBuilder pluggableMultiSelectionListSpec new
- 		model: self;
- 		list: #categoryList;
- 		menu: #categoryMenu:;
- 		getIndex: #categorySelected;
- 		setIndex: #categorySelected:;
- 		getSelectionList: #categoryAt:;
- 		setSelectionList: #categoryAt:put:;
- 		yourself.!

Item was removed:
- ----- Method: SystemReporter>>buildReportWith: (in category 'building') -----
- buildReportWith: aBuilder
- 	^ aBuilder pluggableTextSpec new
- 		model: self;
- 		font: Preferences standardFixedFont;
- 		menu: #reportMenu:;
- 		getText: #reportText;
- 		yourself.!

Item was removed:
- ----- Method: SystemReporter>>buildWith: (in category 'building') -----
- buildWith: aBuilder
- 	| window |
- 	window := aBuilder pluggableWindowSpec new
- 		model: self; label: self label; extent: self extent;
- 		children: (OrderedCollection new 
- 			add: ((self buildCategoriesWith: aBuilder)
- 				frame: self categoriesFrame;
- 				yourself);
- 			add: ((self buildReportWith: aBuilder)
- 				frame: self reportFrame;
- 				yourself);
- 			yourself);
- 		yourself.
- 	^ aBuilder build: window.!

Item was removed:
- ----- Method: SystemReporter>>categories (in category 'accessing-categories') -----
- categories
- 	^ categories ifNil: [categories := IdentityDictionary new]!

Item was removed:
- ----- Method: SystemReporter>>categoriesFrame (in category 'building') -----
- categoriesFrame
- 	^LayoutFrame new
- 		leftFraction: 0 offset: 0;
- 		topFraction: 0 offset: 0;
- 		rightFraction: 0.25 offset: 0;
- 		bottomFraction: 1 offset: 0!

Item was removed:
- ----- Method: SystemReporter>>categoryAt: (in category 'accessing-categories') -----
- categoryAt: anIndex
- 	^ categoriesSelected includes: (self categoryList at: anIndex ifAbsent: [ ^ false ]).!

Item was removed:
- ----- Method: SystemReporter>>categoryAt:put: (in category 'accessing-categories') -----
- categoryAt: anInteger put: aBoolean
- 	categoriesSelected := categoriesSelected
- 		perform: (aBoolean ifTrue: [ #copyWith: ] ifFalse: [ #copyWithout: ])
- 		with: (self categoryList at: anInteger ifAbsent: [ ^ self ]).
- 	self updateReport!

Item was removed:
- ----- Method: SystemReporter>>categoryList (in category 'accessing-categories') -----
- categoryList
- 	^ categoryList ifNil: [categoryList := OrderedCollection new]!

Item was removed:
- ----- Method: SystemReporter>>categoryMenu: (in category 'accessing-categories') -----
- categoryMenu: aMenu
- 	^ aMenu
- 		title: 'Categories';
- 		add: 'Select all' action: #selectAllCategories;
- 		add: 'Select none' action: #selectNoCategories;
- 		addLine;
- 		add: 'Refresh' action: #refresh;
- 		yourself.!

Item was removed:
- ----- Method: SystemReporter>>categorySelected (in category 'accessing-categories') -----
- categorySelected
- 	^ 0!

Item was removed:
- ----- Method: SystemReporter>>categorySelected: (in category 'accessing-categories') -----
- categorySelected: anInteger
- 	self changed: #categorySelected.!

Item was removed:
- ----- Method: SystemReporter>>copyReportToClipboard (in category 'accessing-report') -----
- copyReportToClipboard
- 	Clipboard clipboardText: self reportText.
- 	UIManager default inform: 'Copied Report to Clipboard'!

Item was removed:
- ----- Method: SystemReporter>>enumerate:on: (in category 'private') -----
- enumerate: aBlock on: aStream
- 	self enumerate: aBlock startAt: 0 on: aStream!

Item was removed:
- ----- Method: SystemReporter>>enumerate:startAt:on: (in category 'private') -----
- enumerate: aBlock startAt: first on: aStream
- 	"Utilitymethod to enumerate Options or Parameters from first to 1000"
- 	| idx value |
- 	idx := first.
- 	[value := aBlock value: idx.
- 	value = nil or: [idx > 1000]] whileFalse: [
- 		aStream
- 			nextPut: $#;
- 			nextPutAll: idx printString;
- 			tab;
- 			nextPutAll: value; cr.
- 		idx := idx + 1
- 	].
- 	idx = first ifTrue: [aStream nextPutAll: 'none'; cr]!

Item was removed:
- ----- Method: SystemReporter>>extent (in category 'accessing-ui') -----
- extent
- 	^ 640 @ 480!

Item was removed:
- ----- Method: SystemReporter>>header:on: (in category 'printing-report') -----
- header: aString on: aStream
- 	aStream withAttribute: TextEmphasis bold do: [	
- 		aStream nextPutAll: aString; cr.
- 		aString size timesRepeat: [aStream nextPut: $-].
- 		aStream cr]!

Item was removed:
- ----- Method: SystemReporter>>initialize (in category 'initialize-release') -----
- initialize
- 	self
- 		add: #'Contributors' method: #reportContributors;
- 		add: #Image method: #reportImage;
- 		add: #'Image Parameters' method: #reportImageParameters;
- 		add: #'Image Sources' method: #reportSources;
- 		add: #'Image Locale' method: #reportImageLocale;
- 		add: #'Image Fonts' method: #reportImageFonts;
- 		add: #'Image Preferences' method: #reportPreferences;
- 		add: #'Image Packages' method: #reportImagePackages;
- 		add: #'MC Repositories' method: #reportRepositories;
- 		add: #'MC Working Copies' method: #reportWorkingCopies;
- 		add: #'VM General' method: #reportVM;
- 		add: #'VM Options' method: #reportVMOptions;
- 		add: #'VM Modules' method: #reportModules;
- 		add: #'VM Parameters' method: #reportVMParameters;
- 		add: #'VM Stats' method: #reportVMStats.
- 	Smalltalk os platformName = 'Win32' ifTrue: [
- 		self
- 			add: #'VM Configuration' method: #reportWin32VMConfig.
- 		].
- 	self
- 		add: #'OS General' method: #reportOS.
- 	Smalltalk os platformName = 'Win32' ifTrue: [
- 		self
- 			add: #'OS Details' method: #reportWin32OSDetails;
- 			add: #'Hardware Details' method: #reportWin32HardwareDetails;
- 			add: #'GFX Hardware Details' method: #reportWin32GFXDetails.
- 		].
- 	Smalltalk os osVersion = 'linux' ifTrue: [
- 		self
- 			add: #'OS Details' method: #reportLinuxOSDetails
- 	].
- 	self
- 		add: #'Tiny Benchmarks' method: #reportTinyBenchmarks;
- 		add: #'Space Analysis' method: #reportSpaceAnalysis;
- 		add: #'SUnit' method: #reportTestRunner;
- 		add: #'Debug Log' method: #reportDebugLog.
- 	categoriesSelected := Set with: #Image with: #'VM General'.
- 	self updateReport
- !

Item was removed:
- ----- Method: SystemReporter>>label (in category 'accessing-ui') -----
- label
- 	^ 'System Reporter' !

Item was removed:
- ----- Method: SystemReporter>>printDebugExpressionFor:on: (in category 'private') -----
- printDebugExpressionFor: methodSignature on: aStream 
- 	| compiledMethod |
- 	compiledMethod := Compiler evaluate: methodSignature.
- 	aStream
- 		 nextPut: $( ;
- 		 nextPutAll: compiledMethod methodClass name ;
- 		 nextPutAll: ' selector: #' ;
- 		 nextPutAll: compiledMethod selector ;
- 		 nextPutAll: ') debug.'!

Item was removed:
- ----- Method: SystemReporter>>refresh (in category 'accessing-categories') -----
- refresh
- 	spaceAnalysisResult := tinyBenchmarksResult := testRunner := nil.
- 	self updateReport!

Item was removed:
- ----- Method: SystemReporter>>reportContributors: (in category 'reporting') -----
- reportContributors: stream
- 
- 	self header: 'Squeak Contributors (alphabetically)' on: stream.
- 	
- 	stream withAttribute: (TextColor color: (Color r: 0 g: 0.5 b: 0)) do: [
- 		stream nextPutAll: 'If we forgot to mention YOU in this list, please report to board at lists.squeakfoundation.org'].
- 	stream cr; cr.
- 	
- 	SystemNavigation authors keys sorted do: [:fullName |
- 		(SystemNavigation authors at: fullName) in: [:abbreviations |
- 			stream nextPutAll: ('{1} ({2})' format: {fullName. abbreviations asArray joinSeparatedBy: ' '}); cr]].!

Item was removed:
- ----- Method: SystemReporter>>reportDebugLog: (in category 'reporting') -----
- reportDebugLog: aStream
- 	| logFilename logStream contents |
- 	self header: 'Debug Logfile' on: aStream.
- 	logFilename := Smalltalk image squeakErrorFileName.
- 	logStream := nil.
- 	[
- 		[
- 			logStream := FileStream readOnlyFileNamed: logFilename.
- 			aStream nextPutAll: logStream name; cr; cr.
- 			contents := logStream contents.
- 			aStream
- 				nextPutAll: 
- 					((contents isNil or: [contents size = 0])
- 						ifTrue: ['<empty>']
- 						ifFalse: [contents]);
- 				cr
- 		] on: Error do: [:ex |
- 			aStream
- 				nextPutAll: (
- 					ex class = FileDoesNotExistException
- 						ifTrue: [logFilename, ' not found']
- 						ifFalse: [ex description]);
- 				cr
- 		]
- 	] ensure: [
- 		logStream ifNotNil: [logStream close]
- 	]!

Item was removed:
- ----- Method: SystemReporter>>reportFrame (in category 'building') -----
- reportFrame
- 	^LayoutFrame new
- 		leftFraction: 0.25 offset: 0;
- 		topFraction: 0 offset: 0;
- 		rightFraction: 1 offset: 0;
- 		bottomFraction: 1 offset: 0!

Item was removed:
- ----- Method: SystemReporter>>reportImage: (in category 'reporting') -----
- reportImage: aStream
- 	self header: 'Image' on: aStream.
- 	aStream 
- 		nextPutAll: Smalltalk image imageName; cr;
- 		nextPutAll: SystemVersion current version; cr;
- 		nextPutAll: Smalltalk image lastUpdateString; cr;
- 		nextPutAll: Smalltalk image currentChangeSetString; cr.
- 	[aStream
- 			nextPutAll: 'Image format ';
- 			print: Smalltalk image imageFormatVersion;
- 			nextPutAll: ' (';
- 			print: Smalltalk image wordSize * 8;
- 			nextPutAll: ' bit)'; cr]
- 		on: Warning
- 		do: ["primitive not present in VM"].
- 	[aStream
- 			nextPutAll: 'Preferred bytecode set: ';
- 			nextPutAll: CompiledMethod preferredBytecodeSetEncoderClass bytecodeSetName; cr]
- 		on: MessageNotUnderstood 
- 		do: [:ex | ex resume: '---'].
- 		
- 	"self new reportImage: Transcript. Transcript flush"!

Item was removed:
- ----- Method: SystemReporter>>reportImageFonts: (in category 'reporting') -----
- reportImageFonts: aStream
- 
- 	self header: 'Font Size Summary' on: aStream.	
- 	aStream nextPutAll: TextStyle fontSizeSummaryContents.!

Item was removed:
- ----- Method: SystemReporter>>reportImageLocale: (in category 'reporting') -----
- reportImageLocale: aStream
- 	
- 	| imageLocale platformLocale |
- 	imageLocale := Locale current.
- 	platformLocale := Locale currentPlatform.
- 	
- 	self header: 'Image Locale Information' on: aStream.
- 	aStream
- 		nextPutAll: '   Locale ID: ', imageLocale localeID; cr;
- 		nextPutAll: '  Translator: ', imageLocale languageTranslator; cr;
- 		nextPutAll: ' Environment: ', imageLocale languageEnvironment class; nextPutAll: ' (see languages below)'; cr;
- 		nextPutAll: 'Leading char: ', imageLocale leadingChar; nextPutAll: ' (ie. tag in characters)'; cr.
- 	
- 	aStream cr.
- 	self header: 'Image Default Language(s)' on: aStream.
- 	aStream
- 		nextPutAll: (imageLocale languageEnvironment class supportedLanguageNames sorted joinSeparatedBy: ', '); cr;
- 		cr; nextPutAll: '(These languages belong to the same category when Squeak uses the environment or leading char above to derive rules for language-specific text composition and display. Strings are not limited to this default. See LanguageEnvironment and its subclasses.)'; cr.
- 	
- 	aStream cr.
- 	self header: 'Data Interpretation and Conversion' on: aStream.
- 	
- 	aStream
- 		nextPutAll: '   Source code: ', SourceFiles anyOne converter class; nextPutAll: ' (ie. .sources .changes .cs .st)'; cr;
- 		nextPutAll: ' Platform data: ',  platformLocale systemConverter class; nextPutAll: ' (aka. #systemConverter)'; cr;
- 		nextPutAll: '    File names: ',  platformLocale fileNameConverter class; nextPutAll: ' (ie. no content but paths)'; cr;
- 		nextPutAll: '    User input: ', platformLocale inputInterpreter class; cr;
- 		nextPutAll: 'Clipboard data: ', platformLocale clipboardInterpreter class; cr.
- 
- 	aStream cr.
- 	self header: 'Platform Locale Information' on: aStream.
- 
- 	aStream
- 		nextPutAll: '          Locale ID: ', platformLocale localeID; cr;
- 		nextPutAll: '    Currency symbol: ', platformLocale fetchCurrencySymbol;
- 			nextPutAll: (platformLocale primCurrencyNotation ifTrue: ['  (prefix)'] ifFalse: [' (postfix)']); cr;
- 		nextPutAll: ('            Numbers: 1{1}234{2}56'
- 			format: { platformLocale primDigitGrouping. platformLocale primDecimalSymbol}); cr;
- 		nextPutAll: '        Measurement: ', (platformLocale primMeasurement ifTrue: ['metric'] ifFalse: ['imperial']); cr;
- 		nextPutAll: '           Timezone: UTC', (platformLocale primTimezone >= 0 ifTrue: ['+']), (platformLocale primTimezone / 60); 
- 			nextPutAll: (platformLocale primDST ifTrue: [' (daylight saving time)'] ifFalse: ['']); cr;
- 		nextPutAll: '        Time format: ', platformLocale primTimeFormat; cr;
- 		nextPutAll: '(Short) Date format: ', platformLocale primShortDateFormat; cr; 
- 		nextPutAll: ' (Long) Date format: ', platformLocale primLongDateFormat; cr; 
- 		cr.!

Item was removed:
- ----- Method: SystemReporter>>reportImagePackages: (in category 'reporting') -----
- reportImagePackages: aStream
- 	
- 	| organizer trunk treated inbox release releaseRepo attribute others |
- 	organizer := PackageOrganizer default.	
- 		
- 	self header: 'System Categories with Unknown Package' on: aStream.
- 	SystemOrganization categories
- 		select: [:category | (organizer packageOfSystemCategory: category ifNone: []) isNil]
- 		thenDo: [:category | aStream nextPutAll: category; cr].
- 
- 	aStream cr.
- 	self header: 'Packages with Only Cache Repository' on: aStream.
- 	organizer packages 
- 		select: [:package |
- 			| repos |
- 			repos := package mcPackage workingCopy repositoryGroup repositories.
- 			repos size = 1 and: [repos first == MCRepository packageCache]]
- 		thenDo: [:package | aStream nextPutAll: package mcPackage workingCopy description; cr].
- 		
- 	aStream cr.
- 	self header: 'Official Packages' on: aStream.
- 	others := OrderedCollection new.
- 	trunk := MCRepository trunk allVersionNames.
- 	inbox := MCRepository inbox allVersionNames.
- 	treated := MCRepository treated allVersionNames.
- 	releaseRepo := [[ReleaseBuilder releaseRepository] valueSupplyingAnswer: {'*'. true}] on: ReleaseBuilderFailed do: [:ex | nil].
- 	release := releaseRepo ifNotNil: [:repo | repo allVersionNames] ifNil: [#()].
- 		
- 	(organizer packages sorted: [:a :b | a packageName <= b packageName])
- 		collect: [:package | package mcPackage workingCopy]
- 		thenDo: [:workingCopy | | version repo |
- 			version := workingCopy ancestry ancestors ifNotEmpty: [:a | a first].
- 			version ifNotNil: [version := version name].
- 			attribute := TextEmphasis normal.
- 			(release includes: version)
- 				ifTrue: [repo := releaseRepo]
- 				ifFalse: [(trunk includes: version)
- 					ifTrue: [repo := MCRepository trunk]
- 					ifFalse: [(inbox includes: version)
- 						ifTrue: [repo := MCRepository inbox. attribute := TextEmphasis bold]
- 						ifFalse: [(treated includes: version)
- 							ifTrue: [repo := MCRepository treated. attribute := TextColor gray]
- 							ifFalse: [others add: workingCopy]]].
- 			repo ifNotNil: [ "Only official packages here."
- 				aStream withAttribute: attribute do: [
- 					aStream
- 						nextPutAll: workingCopy description;
- 						nextPutAll: ' --- ';
- 						nextPutAll: repo description; cr]]]].
- 	
- 	aStream cr.
- 	self header: 'Other Packages' on: aStream.
- 	others
- 		select: [:workingCopy | workingCopy repositoryGroup repositories size > 1]
- 		thenDo: [:workingCopy |
- 			aStream
- 				nextPutAll: workingCopy description; 
- 				nextPutAll: ' --- ';
- 				nextPutAll: workingCopy repositoryGroup repositories second description; cr]
- !

Item was removed:
- ----- Method: SystemReporter>>reportImageParameters: (in category 'reporting') -----
- reportImageParameters: aStream
- 	self header: 'Image Commandline Parameters' on: aStream.
- 	self enumerate: [:idx | Smalltalk image argumentAt: idx] on: aStream.!

Item was removed:
- ----- Method: SystemReporter>>reportLinuxOSDetails: (in category 'reporting') -----
- reportLinuxOSDetails: aStream
- 	self header: 'Operating System Details' on: aStream.
- 	#(
- 		'/etc/issue'
- 		'/etc/lsb-release'
- 		'/proc/version'
- 	) do: [:path|
- 		self writeContentsSafelyFromFile: path on: aStream]!

Item was removed:
- ----- Method: SystemReporter>>reportMenu: (in category 'accessing-report') -----
- reportMenu: aMenu
- 	^ aMenu
- 		title: 'Report';
- 		add: 'Copy to Clipboard' action: #copyReportToClipboard;
- 		yourself.!

Item was removed:
- ----- Method: SystemReporter>>reportModules: (in category 'reporting') -----
- reportModules: aStream
- 	self header: 'Loaded VM Modules' on: aStream.
- 	SmalltalkImage current listLoadedModules sort do: [:each | aStream nextPutAll: each; cr].
- 
- !

Item was removed:
- ----- Method: SystemReporter>>reportOS: (in category 'reporting') -----
- reportOS: aStream
- 	self header: 'Operating System/Hardware' on: aStream.
- 	aStream
- 		nextPutAll: Smalltalk os platformName; space;
- 		nextPutAll: Smalltalk os osVersion; space;
- 		nextPutAll: Smalltalk os platformSubtype; cr
- !

Item was removed:
- ----- Method: SystemReporter>>reportPreferences: (in category 'reporting') -----
- reportPreferences: aStream
- 	| booleanPrefs prefs valuePrefs attribute falseTA trueTA |
- 	prefs := Preferences dictionaryOfPreferences.
- 	booleanPrefs := prefs select: [:each | each type = #Boolean].
- 	valuePrefs := prefs select: [:each | each type = #Number or: [each type = #String]].
- 	trueTA := TextColor black.
- 	falseTA := TextColor gray.
- 	booleanPrefs := booleanPrefs sorted: [:a :b | a name <= b name].  
- 	self header: 'Boolean Preferences' on: aStream.
- 	booleanPrefs do: [:each | | prefValue |
- 		[prefValue := each preferenceValue]
- 			on: Deprecation do: [:ex | ex resume].
- 		attribute := prefValue ifTrue: [trueTA] ifFalse: [falseTA].
- 		aStream withAttribute: attribute do: [	
- 		aStream
- 			nextPutAll: each name;
- 			tab;  
- 			nextPutAll: prefValue printString;
- 			cr]].
- 	aStream cr.
- 	self header: 'Value Preferences' on: aStream.
- 	valuePrefs do: [:each | | prefValue |
- 		[prefValue := each preferenceValue]
- 			on: Deprecation do: [:ex | ex resume].
- 		aStream
- 			nextPutAll: each name;
- 			tab;  
- 			nextPutAll: prefValue printString;
- 			cr].
- !

Item was removed:
- ----- Method: SystemReporter>>reportRepositories: (in category 'reporting') -----
- reportRepositories: aStream
- 	self header: 'Monticello Repositories' on: aStream.
- 	MCRepositoryGroup default repositories do: [:each | aStream nextPutAll: each description; cr]!

Item was removed:
- ----- Method: SystemReporter>>reportSources: (in category 'reporting') -----
- reportSources: aStream
- 	self header: 'Image Sources' on: aStream.
- 	aStream nextPutAll: SourceFiles class printString; cr.
- 	SourceFiles do: [:each |
- 		each ifNotNil: [aStream nextPutAll: each printString; cr]]!

Item was removed:
- ----- Method: SystemReporter>>reportSpaceAnalysis: (in category 'reporting') -----
- reportSpaceAnalysis: aStream
- 
- 	spaceAnalysisResult ifNil: [
- 		(UIManager default
- 			confirm: 'Running the space analysis\might take a few seconds.' translated withCRs
- 			title: 'Continue?' translated)
- 				ifFalse: [
- 					categoriesSelected remove: #'Space Analysis'.
- 					^ self changed: #categorySelected ].
- 		
- 		spaceAnalysisResult := String streamContents: [ :stream |
- 			SpaceTally new printSpaceAnalysis: 1 onStream: stream ] ].
- 	self header: 'Space Analysis' on: aStream.
- 	aStream nextPutAll: spaceAnalysisResult; cr!

Item was removed:
- ----- Method: SystemReporter>>reportTestRunner: (in category 'reporting') -----
- reportTestRunner: aStream 
- 	
- 	testRunner ifNil: [ 
- 		(UIManager default
- 			confirm: 'Running all tests might\take some minutes.' translated withCRs
- 			title: 'Continue?')
- 				ifTrue: [ testRunner := TestRunner new runAll ]
- 				ifFalse:
- 					[ categoriesSelected remove: #SUnit.
- 					^ self changed: #categorySelected ] ].
- 	self
- 		header: 'SUnit Results'
- 		on: aStream.
- 	aStream nextPutAll: testRunner statusText ; cr ; cr.
- 	self
- 		header: 'Failed Tests'
- 		on: aStream.
- 	testRunner failedList do:
- 		[ : each | self
- 			printDebugExpressionFor: each
- 			on: aStream.
- 		aStream cr ].
- 	aStream cr.
- 	self
- 		header: 'Errors'
- 		on: aStream.
- 	testRunner errorList do:
- 		[ : each | self
- 			printDebugExpressionFor: each
- 			on: aStream.
- 		aStream cr ]!

Item was removed:
- ----- Method: SystemReporter>>reportText (in category 'accessing-report') -----
- reportText
- 	^ (report isNil or: [categoriesSelected isEmpty])
- 		ifTrue: ['-- Choose any category on the left --']
- 		ifFalse: [report]!

Item was removed:
- ----- Method: SystemReporter>>reportTinyBenchmarks: (in category 'reporting') -----
- reportTinyBenchmarks: aStream
- 	tinyBenchmarksResult ifNil: [
- 		(UIManager default
- 			confirm: 'Running all benchmarks might take a few seconds.' translated
- 			title: 'Continue?' translated)
- 				ifFalse: [
- 					categoriesSelected remove: #'Tiny Benchmarks'.
- 					^ self changed: #categorySelected ].
- 		Cursor wait showWhile: [tinyBenchmarksResult := 0 tinyBenchmarks]].
- 	self header: 'Tiny Benchmarks' on: aStream.
- 	aStream nextPutAll: tinyBenchmarksResult; cr!

Item was removed:
- ----- Method: SystemReporter>>reportVM: (in category 'reporting') -----
- reportVM: aStream
- 	| howToBuild |
- 	self header: 'Virtual Machine' on: aStream.
- 	aStream
- 		nextPutAll: Smalltalk vm vmFileName; cr;
- 		nextPutAll: Smalltalk vm vmVersion; cr.
- 	Smalltalk vm buildDate
- 		ifNotNil: [:string | aStream nextPutAll: string; cr].
- 	[Smalltalk vm platformSourceVersion
- 		ifNotNil: [:v | aStream nextPutAll: 'platform sources revision ', v; cr]]
- 			on: Warning do: ["unsupported primitive"].
- 	[Smalltalk vm interpreterSourceVersion
- 		ifNotNil: [:v | aStream nextPutAll: 'VMMaker versionString ', v; cr]]
- 			on: Warning do: ["unsupported primitive"].
- 	[Smalltalk vm interpreterClass
- 		ifNotNil: [:string | aStream nextPutAll: string; cr].
- 	Smalltalk vm cogitClass
- 		ifNotNil: [:string | aStream nextPutAll: string; cr]
- 	] on: Error do: ["unsupported primitives"].
- 	self vmIsOpenSmalltalkVM ifTrue:
- 		[howToBuild := 'Visit https://github.com/OpenSmalltalk/opensmalltalk-vm; follow the\"Clone or download" instructions, then read the top-level README.md\and HowToBuild files in the top-level build directory for your\platform(s), build.macos64x64/HowToBuild, build.win32x86/HowToBuild, etc.' withCRs].
- 	howToBuild ifNil: [^self].
- 	aStream cr.
- 	self header: 'To Build A Similar Virtual Machine' on: aStream.
- 	aStream nextPutAll: howToBuild; cr!

Item was removed:
- ----- Method: SystemReporter>>reportVMOptions: (in category 'reporting') -----
- reportVMOptions: aStream
- 	self header: 'Virtual Machine Commandline Options' on: aStream.
- 	self enumerate: [:idx | Smalltalk vm optionAt: idx] startAt: 1 on: aStream!

Item was removed:
- ----- Method: SystemReporter>>reportVMParameters: (in category 'reporting') -----
- reportVMParameters: aStream
- 	| vmParameters isStack isCog isSpur |
- 	self header: 'Virtual Machine Parameters' on: aStream.
- 	vmParameters := Smalltalk vm getVMParameters.
- 	isStack := (vmParameters at: 42 ifAbsent: [0]) ~= 0. "42 = number of stack pages available"
- 	isCog := isStack and: [(vmParameters at: 46) ~= 0].  "46 is machine code zone size"
- 	isSpur := isStack and: [(vmParameters at: 41) anyMask: 2r10000]. "41 is imageFormatVersion for the VM; bit 16 is the Spur bit"
- 	(isSpur
- 		ifFalse:
- 			[#(	1	'size of old space'
- 				2	'size of young+old space'
- 				3	'size of memory'
- 				4	'allocationCount'
- 				5	'allocations between GCs')]
- 		ifTrue:
- 			[#(	1	'size of old space'
- 				2	'used bytes in new space (used eden + used past space)'
- 				3	'size of heap')]),
- 	#(	6	'survivor count tenuring threshold'
- 		7	'full GCs since startup'
- 		8	'total milliseconds in full GCs since startup'),
- 	(isSpur
- 		ifFalse: [#(	9	'incremental GCs since startup'
- 					10	'total milliseconds in incremental GCs since startup'
- 					11	'tenures of surving objects since startup'),
- 					{12 to: 19. 'specific to the translating VM'}]
- 		ifTrue: [#(	9	'scavenging GCs since startup'
- 					10	'total milliseconds in scavenging GCs since startup'
- 					11	'tenures of surving objects since startup'
- 					12	'event trace mask (for debugging input events)'
- 					13	'VM ticker start microseconds (Croquet/QwaqVM)'
- 					14	'VM ticker count (Croquet/QwaqVM)'
- 					15	'VM ticker call count (Croquet/QwaqVM)'
- 					16	'total microseconds in idle since startup'
- 					17	'proportion of code zone available for use (Sista VMs only; read-write)'
- 					18	'total milliseconds in full GC compaction since startup (a portion of parameter 8)'
- 					19	'scavenge threshold; the effective size of eden')]),
- 	#(	20  'utc microseconds at startup (if non-zero)'
- 		21	'root/remembered table size (occupancy)'
- 		22	'root/remembered table overflows since startup'
- 		23	'bytes of extra memory to reserve for VM buffers, plugins, etc.'
- 		24	'free memory threshold above which object memory will be shrunk'
- 		25	'memory headroom when growing object memory'),
- 	(isStack
- 		ifFalse:
- 			[#(	26  'interruptChecksEveryNms - force an ioProcessEvents every N milliseconds, in case the image is not calling getNextEvent often')]
- 		ifTrue:
- 			[#(	26  'heartbeat period (ms; see #58)')]),
- 	(isSpur
- 		ifFalse:
- 			[#(	27	'number of times mark loop iterated for current IGC/FGC includes ALL marking'
- 				28	'number of times sweep loop iterated  for current IGC/FGC'
- 				29	'number of times make forward loop iterated for current IGC/FGC'
- 				30	'number of times compact move loop iterated for current IGC/FGC')]
- 		ifTrue: [#()]),
- 	#(	31	'number of grow memory requests'
- 		32	'number of shrink memory requests'),
- 	(isSpur
- 		ifFalse:
- 			[#(	33	'number of root table entries used for current IGC/FGC'
- 				34	'number of allocations done before current IGC/FGC'
- 				35	'number of survivor objects after current IGC/FGC'
- 				36  'millisecond clock when current IGC/FGC completed'
- 				37  'number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC'
- 				38  'milliseconds taken by current IGC'
- 				39  'Number of finalization signals for Weak Objects pending when current IGC/FGC completed')]
- 		ifTrue:
- 			[#(	33	'number of root table entries at last scavenge'
- 				35	'number of survivor objects at last scavenge (if non-zero)'
- 				36  'millisecond clock when current scavenge completed'
- 				38  'milliseconds taken by current scavenge'
- 				39  'Number of finalization signals for Weak Objects pending when current SGC/FGC completed')]),
- 	#(	40  'VM word size - 4 or 8'),
- 	(isStack
- 		ifTrue:
- 			[#(
- 				41	'imageFormatVersion for the VM'
- 				42	'number of stack pages available'
- 				43	'desired number of stack pages (stored in image file header, max 65535)'
- 				44	'size of eden, in bytes'
- 				45	'desired size of eden, in bytes (stored in image file header)'
- 				46	'machine code zone size, in bytes (0 in Stack VM)'
- 				47	'desired machine code zone size (0 => default 1Mb to 2Mb depending on processor)'),
- 			  {	48.	'Persistent image header flags\		bit 0: implies Process has threadId as its 4th inst var\		bit 1: if set, methods that are interpreted will have the flag bit set in their header\		bit 2: if set, implies preempting a process does not put it to the back of its run queue\		bit 3: if set, implies the GUI should run on the first thread and event queues should not be accessed from other threads\		bit 4: if set, implies the new finalization scheme where WeakArrays are queued\		bit 5: if set, implies wheel events will be delivered as such and not mapped to arrow key events\		bit 6: if set, implies arithmetic primitives will fail if given arguments of different types (float vs int)\		bit 7: if set, causes times delivered from file primitives to be in UTC rather than local time.' withCRs },
- 			#(	49	'max size the image promises to grow the external semaphore table to'),
- 			(isSpur
- 				ifFalse:
- 					[{	50 to: 51.	'reserved for VM parameters that persist in the image (such as size of eden above)'.
- 						52 to: 56.	'specific to Spur' }]
- 				ifTrue:
- 					[{	50 to: 51.	'reserved for VM parameters that persist in the image (such as size of eden above)' },
- 					#(	52			'root/remembered table capacity'
- 						53			'number of old space segments'
- 						54			'total free old space'
- 						55			'ratio of growth and image size at or above which a GC will be performed post scavenge')]),
- 			#(	56	'number of process switches since startup'
- 				57	'number of ioProcessEvents calls since startup'
- 				58	'number of forceInterruptCheck calls since startup'
- 				59	'number of check event calls since startup'
- 				60	'number of stack page overflows since startup'
- 				61	'number of stack page divorces since startup'
- 				62	'compiled code compactions since startup'),
- 			(isCog
- 				ifFalse:
- 					[#()]
- 				ifTrue:
- 					[#(	63	'total milliseconds in compiled code compactions since startup'
- 						64	'the number of methods that currently have jitted machine-code')]),
- 			{	65.	'Cog feature flags\		bit 0: set if the VM supports MULTIPLE_BYTECODE_SETS.\		bit 1: set if the VM supports read-only objects (IMMUTABILITY).\		bit 2: set if the VM has an ITIMER_HEARTBEAT\		bit 3: set if the VM supports cross-platform BIT_IDENTICAL_FLOATING_POINT arithmetic\		bit 4: set if the VM can catch exceptions in FFI calls and answer them as primitive failures\		bit 5: set if the VM has primitives 568 and 578, versions of the suspend primitive which back up the process to before the wait if it was waiting on a condition variable' withCRs.
- 				66.	'the byte size of a stack page'.},
- 			(isSpur
- 				ifFalse:
- 					[{	67 to: 69.	'reserved for more Cog-related info' }]
- 				ifTrue:
- 					[#(	67		'the maximum allowed size of old space (if zero there is no limit)'
- 						68		'the average number of live stack pages when scanned by scavenge/gc/become'
- 						69		'the maximum number of live stack pages when scanned by scavenge/gc/become')]),
- 			#(	70	'the vmProxyMajorVersion (the interpreterProxy VM_MAJOR_VERSION)'
- 				71	'the vmProxyMinorVersion (the interpreterProxy VM_MINOR_VERSION)'),
- 			(isSpur
- 				ifFalse: [#()]
- 				ifTrue:
- 					[#(	72	'milliseconds spent marking since startup'
- 						73	'reserved for more Spur-related info'
- 						74	'reserved for more Spur-related info'
- 						75	'do mixed arithmetic; if false binary arithmetic primitives will fail unless receiver and argument are of the same type')]),
- 			(isCog
- 				ifFalse: [#()]
- 				ifTrue: [#(76 'minimum unused bytes of headroom on all stack pages')])]
- 		ifFalse:
- 			[#()])
- 	pairsDo: [:idx :desc | | value values |
- 		(idx isInteger ifTrue: [idx] ifFalse: [idx last]) <= vmParameters size ifTrue:
- 			[aStream nextPut: $#.
- 			 idx isInteger
- 				ifTrue:
- 					[value := vmParameters at: idx.
- 					 aStream
- 						print: idx; tab: (idx < 10 ifTrue: [2] ifFalse: [1]);
- 						nextPutAll: ((value isInteger and: [idx ~= 41])
- 										ifTrue: [(desc includesSubstring: 'bit 0:')
- 													ifTrue: [value printStringBase: 2 nDigits: value highBit]
- 													ifFalse: [value asStringWithCommas]]
- 										ifFalse: [value printString])]
- 				ifFalse:
- 					[value := vmParameters at: idx first.
- 					 aStream print: idx first; next: 2 put: $.; print: idx last; tab.
- 					 values := idx collect: [:i| vmParameters at: i].
- 					 values asSet size = 1
- 						ifTrue: [aStream print: value]
- 						ifFalse: [values do: [:v| aStream print: v] separatedBy: [aStream nextPutAll: ', ']]].
- 			 aStream tab; nextPutAll: desc; cr]]!

Item was removed:
- ----- Method: SystemReporter>>reportVMStats: (in category 'reporting') -----
- reportVMStats: aStream
- 	self header: 'Virtual Machine Statistics' on: aStream.
- 	aStream
- 		nextPutAll: Smalltalk vm vmStatisticsReportString!

Item was removed:
- ----- Method: SystemReporter>>reportWin32GFXDetails: (in category 'reporting') -----
- reportWin32GFXDetails: aStream
- 	self header: 'Graphics Hardware Details' on: aStream.
- 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10003)!

Item was removed:
- ----- Method: SystemReporter>>reportWin32HardwareDetails: (in category 'reporting') -----
- reportWin32HardwareDetails: aStream
- 	self header: 'Hardware Details' on: aStream.
- 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10001)!

Item was removed:
- ----- Method: SystemReporter>>reportWin32OSDetails: (in category 'reporting') -----
- reportWin32OSDetails: aStream
- 	self header: 'Operating System Details' on: aStream.
- 	aStream nextPutAll: (SmalltalkImage current getSystemAttribute: 10002)!

Item was removed:
- ----- Method: SystemReporter>>reportWin32VMConfig: (in category 'reporting') -----
- reportWin32VMConfig: aStream
- 	| exePath iniPath |
- 	self header: 'VM Configuration' on: aStream.
- 	exePath := Smalltalk vm vmFileName.
- 	iniPath := (exePath copyUpToLast: $.), '.ini'.
- 	aStream nextPutAll: iniPath; cr.
- 	self writeContentsSafelyFromFile: iniPath on: aStream.
- !

Item was removed:
- ----- Method: SystemReporter>>reportWorkingCopies: (in category 'reporting') -----
- reportWorkingCopies: aStream
- 	| list |
- 	self header: 'Monticello Working Copies' on: aStream.
- 	list := MCWorkingCopy allManagers sort: [:a :b | a name <= b name]  .
- 	list do: [:each | aStream nextPutAll: each description; cr]!

Item was removed:
- ----- Method: SystemReporter>>representsSameBrowseeAs: (in category 'private') -----
- representsSameBrowseeAs: anotherModel
- 	^ self class = anotherModel class!

Item was removed:
- ----- Method: SystemReporter>>selectAllCategories (in category 'accessing-categories') -----
- selectAllCategories
- 	categoriesSelected addAll: categoryList.
- 	self changed: #categorySelected.
- 	self updateReport!

Item was removed:
- ----- Method: SystemReporter>>selectNoCategories (in category 'accessing-categories') -----
- selectNoCategories
- 	categoriesSelected removeAll.
- 	self changed: #categorySelected.
- 	self updateReport!

Item was removed:
- ----- Method: SystemReporter>>updateReport (in category 'updating') -----
- updateReport
- 	report := Text streamContents: [:stream | 
- 		self categoryList do: [:each |
- 			(categoriesSelected includes: each) ifTrue: [
- 				self perform: ((categories at: each), ':') asSymbol with: stream.
- 				stream cr]]].
- 	self changed: #reportText.!

Item was removed:
- ----- Method: SystemReporter>>vmIsOpenSmalltalkVM (in category 'private') -----
- vmIsOpenSmalltalkVM
- 	^[#('CoInterpreter' 'StackInterpreter') includes: (Smalltalk vm interpreterClass copyUpTo: Character space)]
- 		on: Error "unsupported primitives"
- 		do: [:ex| false]!

Item was removed:
- ----- Method: SystemReporter>>writeContentsSafelyFromFile:on: (in category 'private') -----
- writeContentsSafelyFromFile: osPath on: aStream
- 	aStream nextPutAll:
- 		([
- 			(FileStream readOnlyFileNamed: osPath) upToEnd
- 		 ] on: Error do: [:ex| ex return: ex printString])!



More information about the Squeak-dev mailing list