Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1453.mcz
==================== Summary ====================
Name: System-mt.1453
Author: mt
Time: 17 April 2024, 10:43:17.752706 am
UUID: d5ecd791-4890-e748-950c-809da8376186
Ancestors: System-mt.1452
For structured primitive errors, expose #errorName in its print-string to make the error table more readable (see index 52 in #specialObjectsArray).
While ExceptionInFFICallError has both a custom name and an extra slot, you can use any custom instance of PrimitiveError to pass scoped error codes from failing primitives such as the existing #'operating system error' and its platform-specific error codes. However, you would need to reserve a new index in the error table and thus update the special-objects array. Therefore, custom VM plugins might want to choose an extra interface to communicate failed operations.
For example, SqueakFFI uses #getLastError and #externalCallFailed to fabricate readable error messages. Not sure why we do it this way (see #ffiFail: in plugin code) ... the approach via PrimitiveError seems more elegant to me... and via PrimErrFFIMarshallingError there is even a way to use the new scheme. :-)
=============== Diff against System-mt.1452 ===============
Item was added:
+ ----- Method: PrimitiveError>>printOn: (in category 'printing') -----
+ printOn: aStream
+
+ self errorName
+ ifNil: [super printOn: aStream]
+ ifNotNil: [:nm | nm printOn: aStream].!
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.1250.mcz
==================== Summary ====================
Name: Tools-eem.1250
Author: eem
Time: 16 April 2024, 10:16:10.120513 pm
UUID: 51b04f56-0b7b-4505-8928-2571e6ecf553
Ancestors: Tools-ct.1249
Fix SavedMultiWindowState's class comment. Remove accessor for private inst var.
=============== Diff against Tools-ct.1249 ===============
Item was changed:
Object subclass: #SavedMultiWindowState
instanceVariableNames: 'models modelStates modelDependents currentModelIndex prototype'
classVariableNames: ''
poolDictionaries: ''
category: 'Tools-Base'!
+ !SavedMultiWindowState commentStamp: 'eem 4/16/2024 14:42' prior: 0!
+ A SavedMultiWindowState is a collection of states of inactive windows for a multi-window tool ui where one can select between multiple copies of a tool sharing a single system window, each tool having its own state. It manages switching between windows, swapping unaccepted edit state (e.g. in text views) as it does so.
- !SavedMultiWindowState commentStamp: 'eem 6/30/2010 15:45' prior: 0!
- A SavedMultiWindowState is a collection of states of inactive windows for a multi-window tool ui where one can select between multiple copies of a tool sharing a single system window, each tol having its own state. It manages switching between windows, swapping unaccepted edit state (e.g. in text views) as it does so.
Instance Variables
+ currentModelIndex: <Integer>
+ modelDependents: <IdentitySet>
- currentModelIndex: <Integer>
- modelDependents: <IdentitySet>
modelStates: <OrderedCollection of: (Array
+ with: modelState <Object>
+ with: unacceptedEditStates <WeakIdentityKeyDictionary>) >
+ models: <OrderedCollection of: Model>
+ prototype: <Model>
- with: modelState <Object>
- with: unacceptedEditStates <WeakIdentityKeyDictionary>) >
- models: <OrderedCollection of: Model>
currentModelIndex
- index into models and modelStates of current window selection
modelDependents
- set of all dependents
modelStates
- the pairs of model-specific selection state and widget-specfic unaccepted edit state for each unselected/inactive window
models
- the models for each window
+
+ prototype
+ - a shallow copy of the initial tool/model, used to create new tools/models!
- !
Item was removed:
- ----- Method: SavedMultiWindowState>>currentModelIndex (in category 'accessing') -----
- currentModelIndex
- ^currentModelIndex!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1564.mcz
==================== Summary ====================
Name: Kernel-eem.1564
Author: eem
Time: 11 April 2024, 2:41:49.284637 pm
UUID: 5a2b7f22-ea54-4c08-9327-f74d76974a6d
Ancestors: Kernel-cmm.1563
Fix a couple of speeling rorres in comments
=============== Diff against Kernel-cmm.1563 ===============
Item was changed:
----- Method: Context>>privRefresh (in category 'initialize-release') -----
privRefresh
"Reinitialize the receiver so that it is in the state it was at its creation."
closureOrNil
ifNotNil:
[closureOrNil isFullBlock
ifTrue:
[pc := method initialPC.
self stackp: method numTemps.
closureOrNil numArgs + closureOrNil numCopiedValues + 1 to: method numTemps do:
[:i | self tempAt: i put: nil]]
+ ifFalse: "In non-full blocks temps are established by push bytecodes"
- ifFalse: "In non-full blocks temps are established by push btecodes"
[pc := closureOrNil startpc.
self stackp: closureOrNil numArgs + closureOrNil numCopiedValues].
1 to: closureOrNil numCopiedValues do:
[:i | self tempAt: closureOrNil numArgs + i put: (closureOrNil at: i)]]
ifNil:
[pc := method initialPC.
self stackp: method numTemps.
method numArgs + 1 to: method numTemps do:
[:i | self tempAt: i put: nil]]!
Item was changed:
----- Method: InstructionStream>>willJump (in category 'testing') -----
willJump
+ "Answer whether the next bytecode is an unconditional jump."
- "Answer whether the next bytecode is an uncoinditional jump."
| method |
method := self method.
^method encoderClass isJumpAt: pc in: method!
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1452.mcz
==================== Summary ====================
Name: System-mt.1452
Author: mt
Time: 28 March 2024, 9:59:08.460064 am
UUID: c4dd53f6-cf69-7b42-b554-f4e6320216cf
Ancestors: System-cmm.1451
When using high-DPI screens, make enough room for the emergency evaluator.
=============== Diff against System-cmm.1451 ===============
Item was changed:
----- Method: Transcripter class>>emergencyEvaluator (in category 'utilities') -----
emergencyEvaluator
+ (Transcripter newInFrame: (0@0 corner: 320 px @ 200 px))
- (Transcripter newInFrame: (0@0 corner: 320@200))
show: 'Type ''revert'' to revert your last method change.
Type ''exit'' to exit the emergency evaluator.';
readEvalPrint!
Marcel Taeumel uploaded a new version of ReleaseBuilder to project The Trunk:
http://source.squeak.org/trunk/ReleaseBuilder-mt.247.mcz
==================== Summary ====================
Name: ReleaseBuilder-mt.247
Author: mt
Time: 26 March 2024, 10:15:40.484051 am
UUID: 6b05e554-d6ae-1046-adab-318f230b240a
Ancestors: ReleaseBuilder-mt.246
Fix comment. Both mt.247 and mt.246 complement Kernel-cmm.1562
=============== Diff against ReleaseBuilder-mt.246 ===============
Item was changed:
----- Method: ReleaseBuilder class>>prepareProcesses (in category 'preparing') -----
prepareProcesses
"Re-start running processes if necessary. Call this at late as possible in the release process. Only required to processes that are not reset at image #startUp."
Delay startTimerEventLoop.
+ Smalltalk processPreemptionYields: false. "avoid accidental round-robin; make users' Morphic-related workspace scripts/code more robust if forked at UI priority"!
- Smalltalk processPreemptionYields: false. "avoid accidental round-robin; make users' Morphic-related workspace scripts/code more robust if forked at lower priority"!
Marcel Taeumel uploaded a new version of ReleaseBuilder to project The Trunk:
http://source.squeak.org/trunk/ReleaseBuilder-mt.246.mcz
==================== Summary ====================
Name: ReleaseBuilder-mt.246
Author: mt
Time: 26 March 2024, 10:11:12.181433 am
UUID: 0b3b4f34-11f3-f34f-a0a4-72ec011dbfe0
Ancestors: ReleaseBuilder-dtl.245
For new images, by default, ensure inadvertent yield outside a process' own control.
=============== Diff against ReleaseBuilder-dtl.245 ===============
Item was changed:
----- Method: ReleaseBuilder class>>prepareProcesses (in category 'preparing') -----
prepareProcesses
"Re-start running processes if necessary. Call this at late as possible in the release process. Only required to processes that are not reset at image #startUp."
+ Delay startTimerEventLoop.
+ Smalltalk processPreemptionYields: false. "avoid accidental round-robin; make users' Morphic-related workspace scripts/code more robust if forked at lower priority"!
- Delay startTimerEventLoop.!
Chris Muller uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-cmm.1451.mcz
==================== Summary ====================
Name: System-cmm.1451
Author: cmm
Time: 25 March 2024, 7:37:55.127523 pm
UUID: 29d336c2-1aa8-40f1-914f-7b2b23873523
Ancestors: System-eem.1450
Added Smalltalk>>#previousPlatformName to support detecting and responding to platform changes between image restarts.
=============== Diff against System-eem.1450 ===============
Item was changed:
Object subclass: #SmalltalkImage
instanceVariableNames: 'globals'
+ classVariableNames: 'EndianCache LastImageName LastQuitLogPosition LastStats PlatformNameCache PreviousPlatformName ShutDownList SourceFileVersionString StartUpList StartupStamp VMMakerVersion WordSize'
- classVariableNames: 'EndianCache LastImageName LastQuitLogPosition LastStats PlatformNameCache ShutDownList SourceFileVersionString StartUpList StartupStamp VMMakerVersion WordSize'
poolDictionaries: ''
category: 'System-Support'!
!SmalltalkImage commentStamp: 'dtl 3/6/2010 14:00' prior: 0!
I represent the current image and runtime environment, including system organization, the virtual machine, object memory, plugins and source files. My instance variable #globals is a reference to the system dictionary of global variables and class names.
My singleton instance is called Smalltalk.!
Item was changed:
----- Method: SmalltalkImage>>cleanUpSystemAttributeCaches (in category 'housekeeping') -----
cleanUpSystemAttributeCaches
"Reset platform-specific values. This MUST BE called directly before the image is snapshotted. Note that this can't safely be done on start-up because Smalltalk is too late in the start-up sequence. See commentary in #getSystemAttribute:."
self flag: #discuss. "mt: Such caches might better be managed by the VM itself. A primitive-based cache protocol could help. On a fresh (VM) start-up, those values would then be nil (or uninitialized) automatically."
+ PreviousPlatformName := PlatformNameCache.
-
EndianCache := WordSize := PlatformNameCache := nil.!
Item was added:
+ ----- Method: SmalltalkImage>>previousPlatformName (in category 'os') -----
+ previousPlatformName
+ "Answer the name of the previous OS platform that ran this image, useful for detecting and responding to platform changes."
+ ^ PreviousPlatformName ifNil: [ 'unknown' ]!
Item was changed:
----- Method: SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: (in category 'snapshot and quit') -----
snapshot: save andQuit: quit withExitCode: exitCode embedded: embeddedFlag
"Mark the changes file and close all files as part of #processShutdownList.
If save is true, save the current state of this Smalltalk in the image file.
If quit is true, then exit to the outer OS shell.
If exitCode is not nil, then use it as exit code.
The latter part of this method runs when resuming a previously saved image. This resume logic checks for a document file to process when starting up."
| resuming msg |
Object flushDependents.
Object flushEvents.
(SourceFiles at: 2) ifNotNil:[
msg := String streamContents: [ :s |
s nextPutAll: '----';
nextPutAll: (save ifTrue: [ quit ifTrue: [ 'QUIT' ] ifFalse: [ 'SNAPSHOT' ] ]
ifFalse: [quit ifTrue: [ 'QUIT/NOSAVE' ] ifFalse: [ 'NOP' ]]);
nextPutAll: '----';
print: Date dateAndTimeNow; space;
nextPutAll: (FileDirectory default localNameFor: self imageName);
nextPutAll: ' priorSource: ';
print: LastQuitLogPosition ].
self assureStartupStampLogged.
save ifTrue: [ LastQuitLogPosition := (SourceFiles at: 2) setToEnd; position ].
self logChange: msg.
Transcript cr; show: msg].
self processShutDownList: quit.
Cursor write show.
+ save ifTrue:
+ [self cleanUpSystemAttributeCaches.
- save ifTrue: [
- self cleanUpSystemAttributeCaches.
resuming := embeddedFlag
ifTrue: [self snapshotEmbeddedPrimitive]
+ ifFalse:
+ [PlatformNameCache := nil.
+ self snapshotPrimitive]] "<-- PC frozen here on image file"
- ifFalse: [self snapshotPrimitive]] "<-- PC frozen here on image file"
ifFalse: [resuming := false].
(quit and: [resuming == false]) ifTrue:
[exitCode
ifNil: [ self quitPrimitive ]
ifNotNil: [ self quitPrimitive: exitCode ] ].
Cursor normal show.
self startUpPostSnapshot: resuming == true.
Project current wakeUpTopWindow.
"Now it's time to raise an error"
resuming == nil ifTrue: [self error:'Failed to write image file (disk full?)'].
^ resuming!
Chris Muller uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-cmm.1562.mcz
==================== Summary ====================
Name: Kernel-cmm.1562
Author: cmm
Time: 24 March 2024, 6:27:34.572036 pm
UUID: 886bf6b9-a56b-4131-accf-3867a3836658
Ancestors: Kernel-ct.1561
Allow processPreemptionYields: to persist across image saves, as purported by its comment.
=============== Diff against Kernel-ct.1561 ===============
Item was changed:
----- Method: ProcessorScheduler class>>startUp: (in category 'background process') -----
startUp: resuming
- Smalltalk processPreemptionYields ifTrue: [
- Smalltalk processPreemptionYields: false].
-
resuming ifTrue: [
Smalltalk installLowSpaceWatcher.
self installIdleProcess].!
Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.1450.mcz
==================== Summary ====================
Name: System-eem.1450
Author: eem
Time: 21 March 2024, 9:59:04.230117 pm
UUID: 8a307197-4ed6-4876-a204-4922ff405e1d
Ancestors: System-cmm.1449
Eliminate hyper-active low space notification by not notifying if after a GC there is at least 1/5 more free space than the low space threshold, in the case where there are no memoryHogs.
Document parameters 50 & 51 in vmParameterAt:[put:].
Improve the comment for snapshotPrimitive.
=============== Diff against System-cmm.1449 ===============
Item was changed:
----- Method: LowSpaceWatcher>>notifyMemoryHogs (in category 'process steps') -----
notifyMemoryHogs
+ "Try to clean up memory hogs. Answer if sufficient memory was released."
- "Try to clean up memory hogs. Answer true if sufficient memory was released."
| free |
+ free := Smalltalk bytesLeft.
+ self memoryHogs isEmpty ifTrue:
+ [^free >= (Smalltalk lowSpaceThreshold * 5 // 4)].
+ self memoryHogs do:
+ [ :hog | hog freeSomeSpace ].
+ ^Smalltalk bytesLeft > free!
- self memoryHogs isEmpty
- ifTrue: [ ^ false ]
- ifFalse: [ free := Smalltalk bytesLeft.
- self memoryHogs
- do: [ :hog | hog freeSomeSpace ].
- ^ Smalltalk bytesLeft > free ]
-
- !
Item was changed:
----- Method: SmalltalkImage>>snapshotPrimitive (in category 'snapshot and quit') -----
snapshotPrimitive
+ "Primitive. Write the current state of the object memory on a file in the same format
+ as the Smalltalk-80 release. Return normally after writing the file, and answer false.
+ The file can later be resumed, returning you to this exact state except for answering
+ true. Essential. See Object documentation whatIsAPrimitive."
- "Primitive. Write the current state of the object memory on a file in the
- same format as the Smalltalk-80 release. The file can later be resumed,
- returning you to this exact state. Return normally after writing the file.
- Essential. See Object documentation whatIsAPrimitive."
<primitive: 97>
^nil "indicates error writing image file"!
Item was changed:
----- Method: SmalltalkImage>>vmParameterAt: (in category 'vm parameters') -----
vmParameterAt: parameterIndex
"parameterIndex is a positive integer corresponding to one of the VM's internal parameter/metric registers.
Answer with the current value of that register. Fail if parameterIndex is invalid or has no corresponding register.
Coerce positive integers for parameterIndices unknown to teh VM to nil.
VM parameters are numbered as follows:
1 byte size of old-space (read-only)
2 byte size of young-space (read-only)
3 byte size of object memory (read-only)
4 allocationCount (read-only; nil in Cog VMs)
5 allocations between GCs (read-write; nil in Cog VMs)
6 survivor count tenuring threshold (read-write)
7 full GCs since startup (read-only)
8 total milliseconds in full GCs since startup (read-only)
9 incremental GCs since startup (read-only; scavenging GCs on Spur)
10 total milliseconds in incremental/scavenging GCs since startup (read-only)
11 tenures of surving objects since startup/last write (read-write)
12 event trace mask; if 1 << eventType is set in the mask then event received by primGetNextEvent: will be printed to stderr.
13 VM ticker start microseconds (Croquet/QwaqVM only)
14 VM ticker count (Croquet/QwaqVM only)
15 VM ticker call count (Croquet/QwaqVM only)
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 VM start-up (actually at time initialization, which precedes image load) (newer Cog VMs only).
21 root (remembered) table size (read-only)
22 root (remembered) table overflows since startup (read-only)
23 bytes of extra memory to reserve for VM buffers, plugins, etc.
24 memory threshold above which to shrink object memory (read-write)
25 ammount to grow by when growing object memory (read-write)
26 interruptChecksEveryNms - force an ioProcessEvents every N milliseconds (read-write)
27 number of times mark loop iterated for current IGC/FGC (read-only) includes ALL marking
28 number of times sweep loop iterated for current IGC/FGC (read-only)
29 number of times make forward loop iterated for current IGC/FGC (read-only)
30 number of times compact move loop iterated for current IGC/FGC (read-only)
31 number of grow memory requests (read-only)
32 number of shrink memory requests (read-only)
33 number of root table entries used for current IGC/FGC (read-only)
34 bytes allocated in total since start-up or reset (read-write)
35 number of survivor objects after current IGC/FGC (read-only)
36 millisecond clock when current IGC/FGC completed (read-only)
37 number of marked objects for Roots of the world, not including Root Table entries for current IGC/FGC (read-only)
38 milliseconds taken by current IGC (read-only)
39 Number of finalization signals for Weak Objects pending when current IGC/FGC completed (read-only)
40 BytesPerWord for this image
41 imageFormatVersion for the VM
42 number of stack pages in use (Cog Stack VM only, otherwise nil)
43 desired number of stack pages (stored in image file header, max 65535; Cog VMs only, otherwise nil)
44 size of eden, in bytes (Cog VMs only, otherwise nil)
45 desired size of eden, in bytes (stored in image file header; Cog VMs only, otherwise nil)
46 size of machine code zone, in bytes (stored in image file header; Cog JIT VM only, otherwise nil)
47 desired size of machine code zone, in bytes (applies at startup only, stored in image file header; Cog JIT VM only)
48 various properties stored in the image header (that instruct the VM) as an integer encoding an array of bit flags.
Bit 0: in a threaded VM, if set, tells the VM that the image's Process class has threadAffinity as its 5th inst var
(after nextLink, suspendedContext, priority & myList)
Bit 1: in Cog JIT VMs, if set, asks the VM to set the flag bit in interpreted methods
Bit 2: if set, preempting a process puts it to the head of its run queue, not the back,
i.e. preempting a process by a higher priority one will not cause the preempted process to yield
to others at the same priority.
Bit 3: (unassigned)
Bit 4: in a Spur VM, if set, causes weaklings and ephemerons to be queued individually for finalization
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
Bit 8: if set, implies the VM will not upscale the display on high DPI monitors; older VMs did this by default.
49 the size of the external semaphore table (read-write; Cog VMs only)
+ 50 the maximum number of literals in a method for it to be considered for JIT compilation (Cog JIT VM only, otherwise nil)
+ 51 a set of bit flags describing the state of the image load (read-only; later Cog VMs only; otherwise nil)
+ Bit 0: image needed swizzling on load
+ Bit 1: image is embedded (e.g. as a resource) in this VM
- 50-51 reserved for VM parameters that persist in the image (such as eden above)
52 root (remembered) table maximum size (read-only)
+ 53 the number of oldSpace segments (read-only; Spur only, otherwise nil)
- 53 the number of oldSpace segments (Spur only, otherwise nil)
54 total size of free old space (Spur only, otherwise nil)
55 ratio of growth and image size at or above which a GC will be performed post scavenge (Spur only, otherwise nil)
56 number of process switches since startup (read-only)
57 number of ioProcessEvents calls since startup (read-only)
58 number of forceInterruptCheck (Cog VMs) or quickCheckInterruptCalls (non-Cog VMs) calls since startup (read-only)
59 number of check event calls since startup (read-only)
60 number of stack page overflows since startup (read-only; Cog VMs only)
61 number of stack page divorces since startup (read-only; Cog VMs only)
62 number of machine code zone compactions since startup (read-only; Cog VMs only)
63 milliseconds taken by machine code zone compactions since startup (read-only; Cog VMs only)
64 current number of machine code methods (read-only; Cog VMs only)
65 In newer Cog VMs a set of flags describing VM features,
if non-zero bit 0 implies multiple bytecode set support;
if non-zero bit 1 implies read-only object support;
if non-zero bit 2 implies the VM suffers from using an ITIMER heartbeat (if 0 it has a thread that provides the heartbeat)
(read-only; Cog VMs only; nil in older Cog VMs, a boolean answering multiple bytecode support in not so old Cog VMs)
if non-zero bit 3 implies the VM supports cross-platform BIT_IDENTICAL_FLOATING_POINT arithmetic
if non-zero bit 4 implies the VM can catch exceptions in FFI calls and answer them as primitive failures
if non-zero bit 5 implies the VM's suspend primitive backs up the process to before the wait if it was waiting on a condition variable
66 the byte size of a stack page in the stack zone (read-only; Cog VMs only)
67 the maximum allowed size of old space in bytes, 0 implies no internal limit (Spur VMs only).
68 the average number of live stack pages when scanned by GC (at scavenge/gc/become et al)
69 the maximum number of live stack pages when scanned by GC (at scavenge/gc/become et al)
70 the value of VM_PROXY_MAJOR (the interpreterProxy major version number)
71 the value of VM_PROXY_MINOR (the interpreterProxy minor version number)
72 total milliseconds in full GCs Mark phase since startup (read-only)
73 total milliseconds in full GCs Sweep phase since startup (read-only, can be 0 depending on compactors)
74 maximum pause time due to segment allocation
75 whether arithmetic primitives will do mixed type arithmetic; if false they fail for different receiver and argument types
76 the minimum unused headroom in all stack pages; Cog VMs only"
<primitive: 254>
(parameterIndex isInteger
and: [parameterIndex > 0]) ifTrue:
[^nil].
self primitiveFailed!
Item was changed:
----- Method: SmalltalkImage>>vmParameterAt:put: (in category 'vm parameters') -----
vmParameterAt: parameterIndex put: newValue
"parameterIndex is a positive integer corresponding to one of the VM's internal
parameter/metric registers. Store newValue (a positive integer) into that
register and answer with the previous value that was stored there.
Fail if newValue is out of range, if parameterIndex has no corresponding
register, or if the corresponding register is read-only.
As of late 2020 the parameters which can be set are
5 allocations between GCs (read-write; nil in Cog VMs)
6 survivor count tenuring threshold (read-write)
11 tenures of surving objects since startup/last write (read-write)
12 event trace mask; if 1 << eventType is set in the mask then event received by primGetNextEvent: will be printed to stderr.
17 proportion of code zone available for use (Sista VMs only)
23 bytes of extra memory to reserve for VM buffers, plugins, etc.
24 memory threshold above whichto shrink object memory (read-write)
25 memory headroom when growing object memory (read-write)
26 interruptChecksEveryNms - force an ioProcessEvents every N milliseconds (read-write)
34 bytes allocated in total since start-up or reset (read-write)
43 desired number of stack pages (stored in image file header, max 65535; Cog VMs only, otherwise nil)
45 desired size of eden, in bytes (stored in image file header; Cog VMs only, otherwise nil)
47 desired size of machine code zone, in bytes (applies at startup only, stored in image file header; Cog JIT VM only)
48 various properties of the Cog VM as an integer encoding an array of bit flags; see commentary in #vmParameterAt:
49 the size of the external semaphore table (read-write; Cog VMs only)
+ 50 the maximum number of literals in a method for it to be considered for JIT compilation (Cog JIT VM only, otherwise nil)
55 ratio of growth and image size at or above which a GC will be performed post scavenge (Spur only, otherwise nil)
67 the maximum allowed size of old space in bytes, 0 implies no internal limit (Spur only).
68 the average number of live stack pages when scanned by GC (at scavenge/gc/become et al)
69 the maximum number of live stack pages when scanned by GC (at scavenge/gc/become et al)
74 maximum pause time due to segment allocation
75 whether arithmetic primitives will do mixed type arithmetic; if false they fail for different receiver and argument types"
<primitive: 254>
self primitiveFailed!