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
>





--
best,
Eliot