[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
|