New Cog VMs available

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

New Cog VMs available

Eliot Miranda-2
...in http://www.mirandabanda.org/files/Cog/VM/VM.r3021/.

In particular, these fix VM crashes when running the AllocationTest in Spur.

CogVM source as per VMMaker.oscog-eem.787/r3021

Fix mixup of old & young spaces in primitiveVMParameter, and
comment some new parameters.

Fix return types for positive[64/32]BitValueOf:.
positive32BitValueOf: must answer a usqInt,
positive64BitValueOf: must answer a usqLong.

Use positiveMachineIntegerValueOf: to decode arg in primitiveNewWithArg
and ensure positiveMachineIntegerValueOf: is inlined there-in.

win32:
Set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag in the image header of the Windows
executables to allow e.g. Spur to allocate more than 2Gb.

Spur:
Fix sign and overflow issues in instantiating larger objects
and determining the size of large instances.

Fix some freeChunk accesses that used fetchPointer:ofObject:.

Cog ARM:
Fix prim return for compileInterpreterPrimitive: on RISCs.  On return from
interpreter prim, ret pc is in instructionPointer and must return to whence
it came, which is the stack on CISC and the LinkReg on RISC.  Hence restoring
the receiver reg requires different offsets in the two cases.

Rework the rotatable quick constant logic a little and clean up users.
Fix concretizeMoveRXbrR to do byte not word loads.
Fix concretizeConditionalJumpLong: to actually be conditional. Oops.

Correct mistaken callersaved reg stuff for ARM
Fix concretizedRetN to not over-bump the SP

The method abort trampolines shouldn't pop anything, especially
now we have the pushLinkreg: arg to manage the LinkReg more easily.

Slang:
Rip out the UseRightShiftForDivide optimization.  It gets unsigned division
wrong, and C compilers can and will optimize this correctly themselves.


--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: [Vm-dev] New Cog VMs available

Karl Ramberg
Operating System Details
------------------------
Operating System: Windows 8.1 (Build 9200 )
Registered Owner: Windows User
Registered Company: 
SP major version: 0
SP minor version: 0
Suite mask: 300
Product type: 1

Hardware Details
----------------
Hardware information: 
Manufacturer: Unknown
Model: Unknown
Number of processors: 4
Page size: 4096

Memory Information (upon launch):
Physical Memory Size: 4077260 kbytes
Physical Memory Free: 2014428 kbytes
Page File Size: 4194303 kbytes
Page File Free: 2958860 kbytes
Virtual Memory Size: 2097024 kbytes
Virtual Memory Free: 2023664 kbytes
Memory Load: 50 percent

Processor 0: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
Identifier: Intel64 Family 6 Model 58 Stepping 9
~MHZ: 1796

Processor 1: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
Identifier: Intel64 Family 6 Model 58 Stepping 9
~MHZ: 1796

Processor 2: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
Identifier: Intel64 Family 6 Model 58 Stepping 9
~MHZ: 1796

Processor 3: Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
Identifier: Intel64 Family 6 Model 58 Stepping 9
~MHZ: 1796

Tiny Benchmarks
---------------
1,006,882,989 bytecodes/sec; 71,721,410 sends/sec

Karl


On Sun, Jun 29, 2014 at 6:02 AM, Eliot Miranda <[hidden email]> wrote:
 
...in http://www.mirandabanda.org/files/Cog/VM/VM.r3021/.

In particular, these fix VM crashes when running the AllocationTest in Spur.

CogVM source as per VMMaker.oscog-eem.787/r3021

Fix mixup of old & young spaces in primitiveVMParameter, and
comment some new parameters.

Fix return types for positive[64/32]BitValueOf:.
positive32BitValueOf: must answer a usqInt,
positive64BitValueOf: must answer a usqLong.

Use positiveMachineIntegerValueOf: to decode arg in primitiveNewWithArg
and ensure positiveMachineIntegerValueOf: is inlined there-in.

win32:
Set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag in the image header of the Windows
executables to allow e.g. Spur to allocate more than 2Gb.

Spur:
Fix sign and overflow issues in instantiating larger objects
and determining the size of large instances.

Fix some freeChunk accesses that used fetchPointer:ofObject:.

Cog ARM:
Fix prim return for compileInterpreterPrimitive: on RISCs.  On return from
interpreter prim, ret pc is in instructionPointer and must return to whence
it came, which is the stack on CISC and the LinkReg on RISC.  Hence restoring
the receiver reg requires different offsets in the two cases.

Rework the rotatable quick constant logic a little and clean up users.
Fix concretizeMoveRXbrR to do byte not word loads.
Fix concretizeConditionalJumpLong: to actually be conditional. Oops.

Correct mistaken callersaved reg stuff for ARM
Fix concretizedRetN to not over-bump the SP

The method abort trampolines shouldn't pop anything, especially
now we have the pushLinkreg: arg to manage the LinkReg more easily.

Slang:
Rip out the UseRightShiftForDivide optimization.  It gets unsigned division
wrong, and C compilers can and will optimize this correctly themselves.


--
best,
Eliot




Reply | Threaded
Open this post in threaded view
|

Re: [Vm-dev] New Cog VMs available

Frank Shearar-3
In reply to this post by Eliot Miranda-2
On 29 June 2014 05:02, Eliot Miranda <[hidden email]> wrote:
>
> ...in http://www.mirandabanda.org/files/Cog/VM/VM.r3021/.
>
> In particular, these fix VM crashes when running the AllocationTest in Spur.

Cool! http://build.squeak.org/job/SqueakTrunkOnSpur/25/testReport/?
shows the current test status for a Cog Spur r.3021 VM.

"Current test suite" is whatever suite is in
http://www.mirandabanda.org/files/Cog/VM/SpurImages/trunk46-spur.image
- the build process, as it stands right now, does not update from the
trunk update stream. No particular reason: I wanted to get Spur
working first, before making it right. But maybe it's time now to
start doing so? Eliot?

frank