Hi Eliot, it looks like any attempt to position a file beyond some threshold is causing the primitive failure in Cog VM's released after 2776 that I'm seeing.
| file | file:=StandardFileStream newFileNamed: 'mybigfile'. file binary. [1234 timesRepeat: [ file nextPutAll: (ByteArray new: 1 million) ]. file position: file size - 100 ] ensure: [file close].
Magma uses a random file position for every single object retrieved; so the performance of primitiveFileSetPosition is crucial to the performance of Magma.
Thanks.
On linux? What's the failure mode in your snippet? The position: primitive fails?
On Thu, Sep 4, 2014 at 3:36 PM, Chris Muller asqueaker@gmail.com wrote:
Hi Eliot, it looks like any attempt to position a file beyond some threshold is causing the primitive failure in Cog VM's released after 2776 that I'm seeing.
| file | file:=StandardFileStream newFileNamed: 'mybigfile'. file binary. [1234 timesRepeat: [ file nextPutAll: (ByteArray new: 1 million) ]. file position: file size - 100 ] ensure: [file close].
Magma uses a random file position for every single object retrieved; so the performance of primitiveFileSetPosition is crucial to the performance of Magma.
Thanks.
On Thu, Sep 04, 2014 at 03:53:32PM -0700, Eliot Miranda wrote:
On linux? What's the failure mode in your snippet? The position: primitive fails?
Probably a compile time option. For file addressing over 2GB, you need to compile with -D_FILE_OFFSET_BITS=64. Possibly something changed in the build scripts?
http://users.suse.com/~aj/linux_lfs.html
In addition to Magma, this comes into play if you make a really big 64 bit image, then try to save it. The image runs but cannot be saved unless the VM was compiled with LFS support.
Dave
On Thu, Sep 4, 2014 at 3:36 PM, Chris Muller asqueaker@gmail.com wrote:
Hi Eliot, it looks like any attempt to position a file beyond some threshold is causing the primitive failure in Cog VM's released after 2776 that I'm seeing.
| file | file:=StandardFileStream newFileNamed: 'mybigfile'. file binary. [1234 timesRepeat: [ file nextPutAll: (ByteArray new: 1 million) ]. file position: file size - 100 ] ensure: [file close].
Magma uses a random file position for every single object retrieved; so the performance of primitiveFileSetPosition is crucial to the performance of Magma.
Thanks.
-- best, Eliot
Hi David,
On Thu, Sep 4, 2014 at 4:10 PM, David T. Lewis lewis@mail.msen.com wrote:
On Thu, Sep 04, 2014 at 03:53:32PM -0700, Eliot Miranda wrote:
On linux? What's the failure mode in your snippet? The position: primitive fails?
Probably a compile time option. For file addressing over 2GB, you need to compile with -D_FILE_OFFSET_BITS=64. Possibly something changed in the build scripts?
No. Large file support has been enabled in the builds via -D_FILE_OFFSET_BITS=64 for a while now. I made a transcription error when eliminating the cCode: from
sz := self cCode: 'sizeof(squeakFileOffsetType)'. (interpreterProxy byteSizeOf: (interpreterProxy stackValue: 0)) > sz ifTrue: [^interpreterProxy primitiveFail]
I rewrote it as
(interpreterProxy byteSizeOf: (interpreterProxy stackValue: 0)) ~= (self sizeof: #squeakFileOffsetType) ifTrue: [^interpreterProxy primitiveFail]
instead of
(interpreterProxy byteSizeOf: (interpreterProxy stackValue: 0)) > (self sizeof: #squeakFileOffsetType) ifTrue: [^interpreterProxy primitiveFail]
doh.
http://users.suse.com/~aj/linux_lfs.html
In addition to Magma, this comes into play if you make a really big 64 bit image, then try to save it. The image runs but cannot be saved unless the VM was compiled with LFS support.
Dave
On Thu, Sep 4, 2014 at 3:36 PM, Chris Muller asqueaker@gmail.com
wrote:
Hi Eliot, it looks like any attempt to position a file beyond some threshold is causing the primitive failure in Cog VM's released after 2776 that I'm seeing.
| file | file:=StandardFileStream newFileNamed: 'mybigfile'. file
binary.
[1234 timesRepeat: [ file nextPutAll: (ByteArray new: 1 million) ]. file position: file size - 100 ] ensure: [file close].
Magma uses a random file position for every single object retrieved; so the performance of primitiveFileSetPosition is crucial to the performance of Magma.
Thanks.
-- best, Eliot
squeak-dev@lists.squeakfoundation.org