[Vm-dev] CArray arithmetic methods...

stephane ducasse stephane.ducasse at gmail.com
Sun Oct 10 06:57:08 UTC 2010


Eliot

how do you run the simulator?

Long time ago we had to use an MVC image and after it got broken and we could not use it anymore.
Now in Pharo we do not have MVC so are we talking about the same?

Stef

On Oct 10, 2010, at 12:01 AM, Eliot Miranda wrote:

> Hi All,
> 
>     now I'm successfully simulating the LargeIntegers plugin I'm hitting what I consider a bug in CArray, used to model C pointers in the simulator.  The first problem is that CArray>>#+ & #- return an integer value, not another CArray,  (in C (char *)(exp) + n is still of type (char *), not int) and that the addition/subtraction doesn't scale by the unit size (in C (type *)p + n == (type *)((char *)p + n * sizeof(type))).  The second problem is that << >> * & // are meaningless on C pointers.  Anyone think of a good reason why I shouldn't a) rewrite CArray>>#+ & #- to read
> 
> + n
> 	^ self shallowCopy += (n * unitSize)
> 
> - n
> 	^ self shallowCopy -= (n * unitSize)
> 
> (since e.g. 
> += increment
> 
> 	ptrOffset := ptrOffset + increment)
> 
> and b) delete CArray>>#*, #//, #<<, #>>, #bitAnd:, #bitOr:, #bitShift: & #signedBitShift: ?
> 
> best
> Eliot



More information about the Vm-dev mailing list