[squeak-dev] The Trunk: System-cmm.696.mcz
Chris Muller
asqueaker at gmail.com
Sun Jan 18 01:03:28 UTC 2015
I went one step further and simply pass Errors and letting default handler
resume them if they are resumable.
Since the code is now so explicit about quitting or passing, it seems a
comment is not needed.
On Sat, Jan 17, 2015 at 7:00 PM, <commits at source.squeak.org> wrote:
> Chris Muller uploaded a new version of System to project The Trunk:
> http://source.squeak.org/trunk/System-cmm.696.mcz
>
> ==================== Summary ====================
>
> Name: System-cmm.696
> Author: cmm
> Time: 17 January 2015, 7:00:32.693 pm
> UUID: e13e847b-b9e1-4068-bb77-48d54a9cd005
> Ancestors: System-kfr.695, System-cmm.694
>
> - Remove the crazy check for MessageNotUnderstood in Smalltalk #run:..
> Headless mode should always exit on any Error.
> - In fact, even when not in headless mode, we don't need to halt but
> simply #pass the Error to the default handler for Errors do what it does,
> whether that's popping a debugger which could be resumed (if the Error
> isResumable) or something else.
>
> =============== Diff against System-kfr.695 ===============
>
> Item was removed:
> - ----- Method: SmalltalkImage>>haltOrQuit (in category 'command line')
> -----
> - haltOrQuit
> - self isHeadless
> - ifTrue:
> - [ self
> - snapshot: false
> - andQuit: true ]
> - ifFalse: [ self halt ]!
>
> Item was changed:
> ----- Method: SmalltalkImage>>run: (in category 'command line') -----
> + run: aBlock
> - run: aBlock
> [ [ (aBlock numArgs = 1 and: [ self arguments size > 1 ])
> + ifTrue: [ "Allow a large, variable number of arguments to
> be passed as an Array to aBlock."
> - ifTrue:
> - [ "Allow a large, variable number of arguments to
> be passed as an Array to aBlock."
> aBlock value: self arguments ]
> ifFalse: [ aBlock valueWithEnoughArguments: self arguments
> ] ]
> on: ProgressInitiationException
> do:
> [ : pie | "Don't want to log this notification."
> pie defaultAction ] ]
> on: Notification , Warning
> do:
> [ : noti | FileStream stdout
> nextPutAll: DateAndTime now asString ;
> space ;
> nextPutAll: noti description ;
> cr.
> noti resume ]
> on: SyntaxErrorNotification
> do:
> [ : err | FileStream stdout
> nextPutAll: err errorCode ;
> + cr; flush.
> + self isHeadless
> + ifTrue: [ self snapshot: false andQuit:
> true ]
> + ifFalse: [ err pass ] ]
> - cr.
> - self haltOrQuit ]
> on: Error
> do:
> [ : err | err printVerboseOn: FileStream stderr.
> + FileStream stderr flush.
> + self isHeadless
> + ifTrue: [ self snapshot: false andQuit:
> true ]
> + ifFalse: [ err pass ] ]!
> - self haltOrQuit.
> - err isResumable ifTrue: [ err resume ] ]!
>
> Item was changed:
> ----- Method: SmalltalkImage>>vmStatisticsReportString (in category 'vm
> statistics') -----
> vmStatisticsReportString
> "(Workspace new contents: Smalltalk vmStatisticsReportString)
> openLabel: 'VM Statistics'"
> "StringHolderView
> open: (StringHolder new contents: Smalltalk
> vmStatisticsReportString)
> label: 'VM Statistics'"
>
> | params onSpur oldSpaceEnd youngSpaceEnd memorySize fullGCs
> fullGCTime incrGCs incrGCTime tenureCount upTime upTime2 fullGCs2
> fullGCTime2 incrGCs2 incrGCTime2 tenureCount2 str freeSize youngSize used |
> params := self getVMParameters.
> + onSpur := (params at: 41 ifAbsent: [ 0 ]) anyMask: 16.
> - onSpur := (params at: 41) anyMask: 16.
> oldSpaceEnd := params at: 1.
> youngSpaceEnd := params at: 2.
> memorySize := params at: 3.
> fullGCs := params at: 7.
> fullGCTime := params at: 8.
> incrGCs := params at: 9.
> incrGCTime := params at: 10.
> tenureCount := params at: 11.
> upTime := Time millisecondClockValue.
>
> str := WriteStream on: (String new: 700).
> str nextPutAll: 'uptime ';
> print: (upTime / 1000 / 60 // 60); nextPut: $h;
> print: (upTime / 1000 / 60 \\ 60) asInteger; nextPut: $m;
> print: (upTime / 1000 \\ 60) asInteger; nextPut: $s; cr.
>
> str nextPutAll: 'memory ';
> nextPutAll: memorySize asStringWithCommas; nextPutAll: '
> bytes'; cr.
> str nextPutAll: ' old ';
> nextPutAll: oldSpaceEnd asStringWithCommas; nextPutAll: '
> bytes (';
> print: (oldSpaceEnd / memorySize * 100) maxDecimalPlaces:
> 1; nextPutAll: '%)'; cr.
> youngSize := onSpur
> ifTrue: [params at: 44
> "eden size"] "Spur"
> ifFalse: [youngSpaceEnd -
> oldSpaceEnd]. "Squeak V3"
> str nextPutAll: ' young ';
> nextPutAll: youngSize asStringWithCommas; nextPutAll: '
> bytes (';
> print: youngSize / memorySize * 100 maxDecimalPlaces: 1;
> nextPutAll: '%)'; cr.
> onSpur ifTrue: [youngSize := youngSpaceEnd "used eden"].
> freeSize := onSpur
> ifTrue: [(params at: 54) +
> (params at: 44) - youngSize] "Spur"
> ifFalse: [memorySize -
> youngSpaceEnd] "Squeak V3".
> used := onSpur
> ifTrue: [youngSize + oldSpaceEnd -
> freeSize] "Spur"
> ifFalse: [youngSpaceEnd]. "Squeak V3"
> str nextPutAll: ' used ';
> nextPutAll: used asStringWithCommas; nextPutAll: ' bytes
> (';
> print: used / memorySize * 100 maxDecimalPlaces: 1;
> nextPutAll: '%)'; cr.
> str nextPutAll: ' free ';
> nextPutAll: freeSize asStringWithCommas; nextPutAll: '
> bytes (';
> print: freeSize / memorySize * 100 maxDecimalPlaces: 1;
> nextPutAll: '%)'; cr.
>
> str nextPutAll: 'GCs ';
> nextPutAll: (fullGCs + incrGCs) asStringWithCommas.
> fullGCs + incrGCs > 0 ifTrue: [
> str
> nextPutAll: ' (';
> print: (upTime / (fullGCs + incrGCs))
> maxDecimalPlaces: 1;
> nextPutAll: ' ms between GCs)'
> ].
> str cr.
> str nextPutAll: ' full ';
> nextPutAll: fullGCs asStringWithCommas; nextPutAll: '
> totalling '; nextPutAll: fullGCTime asStringWithCommas; nextPutAll: ' ms (';
> print: (fullGCTime / upTime * 100) maxDecimalPlaces: 1;
> nextPutAll: '% uptime)'.
> fullGCs = 0 ifFalse:
> [str nextPutAll: ', avg '; print: (fullGCTime /
> fullGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> str cr.
> str nextPutAll: ' incr ';
> nextPutAll: incrGCs asStringWithCommas; nextPutAll: '
> totalling '; nextPutAll: incrGCTime asStringWithCommas; nextPutAll: ' ms (';
> print: (incrGCTime / upTime * 100) maxDecimalPlaces: 1;
> nextPutAll: '% uptime), avg '; print: (incrGCTime /
> incrGCs) maxDecimalPlaces: 1; nextPutAll: ' ms'; cr.
> str nextPutAll: ' tenures ';
> nextPutAll: tenureCount asStringWithCommas.
> tenureCount = 0 ifFalse:
> [str nextPutAll: ' (avg '; print: incrGCs // tenureCount;
> nextPutAll: ' GCs/tenure)'].
> str cr.
>
> LastStats ifNil: [LastStats := Array new: 6]
> ifNotNil: [
> upTime2 := upTime - (LastStats at: 1).
> fullGCs2 := fullGCs - (LastStats at: 2).
> fullGCTime2 := fullGCTime - (LastStats at: 3).
> incrGCs2 := incrGCs - (LastStats at: 4).
> incrGCTime2 := incrGCTime - (LastStats at: 5).
> tenureCount2 := tenureCount - (LastStats at: 6).
>
> str nextPutAll: self textMarkerForShortReport ;
> nextPutAll: (fullGCs2 + incrGCs2) asStringWithCommas.
> fullGCs2 + incrGCs2 > 0 ifTrue: [
> str
> nextPutAll: ' (';
> print: upTime2 // (fullGCs2 + incrGCs2);
> nextPutAll: ' ms between GCs)'.
> ].
> str cr.
> str nextPutAll: ' uptime '; print: (upTime2 /
> 1000.0) maxDecimalPlaces: 1; nextPutAll: ' s'; cr.
> str nextPutAll: ' full ';
> nextPutAll: fullGCs2 asStringWithCommas; nextPutAll: '
> totalling '; nextPutAll: fullGCTime2 asStringWithCommas; nextPutAll: ' ms
> (';
> print: (fullGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
> nextPutAll: '% uptime)'.
> fullGCs2 = 0 ifFalse:
> [str nextPutAll: ', avg '; print: (fullGCTime2 /
> fullGCs2) maxDecimalPlaces: 1; nextPutAll: ' ms'].
> str cr.
> str nextPutAll: ' incr ';
> nextPutAll: incrGCs2 asStringWithCommas; nextPutAll: '
> totalling '; nextPutAll: incrGCTime2 asStringWithCommas; nextPutAll: ' ms
> (';
> print: (incrGCTime2 / upTime2 * 100) maxDecimalPlaces: 1;
> nextPutAll: '% uptime), avg '.
> incrGCs2 > 0 ifTrue: [
> str print: (incrGCTime2 / incrGCs2) maxDecimalPlaces: 1;
> nextPutAll: ' ms'
> ].
> str cr.
> str nextPutAll: ' tenures ';
> nextPutAll: tenureCount2 asStringWithCommas.
> tenureCount2 = 0 ifFalse:
> [str nextPutAll: ' (avg '; print: incrGCs2 //
> tenureCount2; nextPutAll: ' GCs/tenure)'].
> str cr.
> ].
> LastStats at: 1 put: upTime.
> LastStats at: 2 put: fullGCs.
> LastStats at: 3 put: fullGCTime.
> LastStats at: 4 put: incrGCs.
> LastStats at: 5 put: incrGCTime.
> LastStats at: 6 put: tenureCount.
>
> ^ str contents
> !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150117/88b7f1dc/attachment.htm
More information about the Squeak-dev
mailing list
|