[Vm-dev] CArray arithmetic methods...

Eliot Miranda eliot.miranda at gmail.com
Sat Oct 9 22:01:03 UTC 2010

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: ?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20101009/bec29ca5/attachment-0001.htm

More information about the Vm-dev mailing list