New Cog VMs available

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

New Cog VMs available

Eliot Miranda-2
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:
--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: New Cog VMs available

Eliot Miranda-2


On Tue, Feb 24, 2015 at 4:41 PM, Eliot Miranda <[hidden email]> 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



--
best,
Eliot