BTW has anyone done an audit of comparing an oops offset to ZERO to see if there is other interesting issues when 64bit vm and 32bit mode with a free space or oops at offset 0?
On 2010-06-15, at 8:52 PM, David T. Lewis wrote:
On Tue, Jun 15, 2010 at 11:17:48AM -0700, ungar@mac.com wrote:
On Jun 15, 2010, at 1:02 AM, John M McIntosh wrote:
PS the reason why David thundered into this is because
(a) on a 32bit system with 32bit image the oops start address is never zero, base is constant 0 (b) on a 64bit system with 64bit image the oops start address is never zero, base is zero (c) on a 64bit system with 32bit image the oops start address is zero, offset by the mmap as the base (d) on a 32bit system with 64bit image the oops start address is never zero (and the image size would be less than the 32bit address range), base is constant zero
Exactly!
John,
Change set attached to the Mantis report, hopefully implementing the change as you proposed. I think all that is needed is to use the value -1 to represent an invalid object memory pointer, rather than 0. This should work for 32-bit and 64-bit object word size. It limits 32 bit address range to 32 bits, but this restriction exists already in many places and should cause no additional problems here.
Dave
-- =========================================================================== John M. McIntosh johnmci@smalltalkconsulting.com Twitter: squeaker68882 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ===========================================================================