[Vm-dev] Bug in Interpreter>>primitiveNextPut:

David T. Lewis lewis at mail.msen.com
Thu Nov 26 16:43:43 UTC 2009


I opened a Mantis bug report for this issue:

  http://bugs.squeak.org/view.php?id=7421

Dave

On Thu, Nov 26, 2009 at 03:10:52PM +0100, Henrik Johansen wrote:
> 
> Interpreter >> primitiveNextPut:
>  limit := self fetchInteger: StreamReadLimitIndex ofObject: stream.
> 	atIx := (array bitAnd: AtCacheMask) + AtPutBase.
> 	(index < limit and: [(atCache at: atIx+AtCacheOop) = array])
> 
> so basically, it needs ReadLimit to be > 0. (Which is only true for (Read)WriteStreams if created with on:from:to:).
> 
> Changing the first line to 
>  limit := self fetchInteger: StreamWriteLimitIndex ofObject: stream.
> 
> and the primitive now works.
> ws := WriteStream on: (String new: 500000).
> [1 to: 500000 do: [:ix | ws nextPut: $a]] timeToRun
> 
> before: 130
>  after: 33 
> 
> Inserted a counter after the prim call, for the loop above it was always >= 500000, with fix it's >=1.
> 
> Cheers,
> Henry
> 


More information about the Vm-dev mailing list