Hi All,
after a period of instability due to internal changes needed for the Spur 64-bit V I hope that these latest VMs will be more stable.
------------------------------------------------------------------------ CogVM source as per VMMaker.oscog-eem.1080/r3263
Mostly internal changes due to better inlining and type inferrence machinery in Slang.
General: Fix a type declaration error uncovered by the new inlining. Simplify primitiveMakePoint. Include primitiveMethodXray Include freeMethod: in Cogit's api for method xray.
Spur: Fix a typing bug in initializeOldSpaceFirstFree:.
Newspeak: Move the Newspeak plugins to nsspursrc/plugins.
Fix privacy violation checking for super sends. Fix some type warnings in Spur stack VMs.
Slang: More improvement to type inferrence/propagation. Support ifTrue:ifFalse:. Better separate the passes in inferTypesForImplicitlyTypedVariablesAndMethods. Fix slip in nodeToCast:to:. Provide types for atan, et al. Avoid casting nil.
Don't inline complex expressions that are bound to variables used in asserts.
General: Add an option to control FailUnbalancedPrimitives and no longer burden the Stack VMs with the responsibility.
Fix typing multiple assignments to a variable - promote the type to the largest integral type of all assignments (primitiveDecompressFromByteArray) - do /not/ promote a variable typed with integral type to a floating point type (transformColor:)
On type compatibility of inlined expressions, insist on signed compatibility or accept an untyped actual.
Improve the type inferrence machinery further to support pointer subtraction. Eliminate code duplication (determineTypeFor:in: now uses returnTypeForSend:, etc).
Change the heuristic for inlining expressions to include a maximum usage count.
Slang: Rescue translation of the non-64-bit Spur VMs by a) doing a better job of super expansions, handling expansions that are returning ifs as well as just returns correctly. b) transforming variable := expr ifTrue: [s1] ifFalse: [s2] into expr ifTrue: [variable := s1] ifFalse: [variable := s2] to allow inlining of s1 & s2.
And take advantage of the better inlining in copyAndForward:
General: Simplify primitiveDisplayString given isArray:.
Refactor positive32BitIntegerFor: and signed32BitIntegerFor: in the realization that these reduce to essentially integerObjectOf: in 64-bit Spur. The idea is to inline if in 64-bit Spur but not if in the 32-bit VMs. Add notOption: processing to allow excluding noInlineSigned32BitIntegerFor: et al. Add hasSixtyFourBitImmediates to no longer assume that wordSize = 8 implies 64-bit immediates.
Use positiveMachineIntegerFor: in place of positive32BitIntegerFor: in some plugins.
Simplify two B3DAcceleratorPlugin prims given topRemappableOop and isArray:
On Tue, Feb 24, 2015 at 4:41 PM, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi All,
after a period of instability due to internal changes needed for the
Spur 64-bit V I hope that these latest VMs will be more stable.
Alas, no. Large file support is broken. I'm taking these down.
CogVM source as per VMMaker.oscog-eem.1080/r3263
Mostly internal changes due to better inlining and type inferrence machinery in Slang.
General: Fix a type declaration error uncovered by the new inlining. Simplify primitiveMakePoint. Include primitiveMethodXray Include freeMethod: in Cogit's api for method xray.
Spur: Fix a typing bug in initializeOldSpaceFirstFree:.
Newspeak: Move the Newspeak plugins to nsspursrc/plugins.
Fix privacy violation checking for super sends. Fix some type warnings in Spur stack VMs.
Slang: More improvement to type inferrence/propagation. Support ifTrue:ifFalse:. Better separate the passes in inferTypesForImplicitlyTypedVariablesAndMethods. Fix slip in nodeToCast:to:. Provide types for atan, et al. Avoid casting nil.
Don't inline complex expressions that are bound to variables used in asserts.
General: Add an option to control FailUnbalancedPrimitives and no longer burden the Stack VMs with the responsibility.
Fix typing multiple assignments to a variable
- promote the type to the largest integral type of all assignments
(primitiveDecompressFromByteArray)
- do /not/ promote a variable typed with integral type to a floating point
type (transformColor:)
On type compatibility of inlined expressions, insist on signed compatibility or accept an untyped actual.
Improve the type inferrence machinery further to support pointer subtraction. Eliminate code duplication (determineTypeFor:in: now uses returnTypeForSend:, etc).
Change the heuristic for inlining expressions to include a maximum usage count.
Slang: Rescue translation of the non-64-bit Spur VMs by a) doing a better job of super expansions, handling expansions that are returning ifs as well as just returns correctly. b) transforming variable := expr ifTrue: [s1] ifFalse: [s2] into expr ifTrue: [variable := s1] ifFalse: [variable := s2] to allow inlining of s1 & s2.
And take advantage of the better inlining in copyAndForward:
General: Simplify primitiveDisplayString given isArray:.
Refactor positive32BitIntegerFor: and signed32BitIntegerFor: in the realization that these reduce to essentially integerObjectOf: in 64-bit Spur. The idea is to inline if in 64-bit Spur but not if in the 32-bit VMs. Add notOption: processing to allow excluding noInlineSigned32BitIntegerFor: et al. Add hasSixtyFourBitImmediates to no longer assume that wordSize = 8 implies 64-bit immediates.
Use positiveMachineIntegerFor: in place of positive32BitIntegerFor: in some plugins.
Simplify two B3DAcceleratorPlugin prims given topRemappableOop and isArray:
best, Eliot
vm-dev@lists.squeakfoundation.org