[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Wed, 1 Jun 2011 19:30:02 +0100
I'm trying to make NSHashTable / NSMapTable use the correct read / write
barrier functions in GC mode, but I don't really understand the GSIMap code.
Does it define macros for reading / writing pointers anywhere? In GC mode, we
need to call the relevant read and write barrier functions for assigning
pointer values, depending in the pointer functions:
For storing strong pointers, we should call objc_assign_strongCast(value,
address), and read directly.
For storing weak pointers, we should call objc_assign_weak(value, address) and
read using objc_read_weak(address).
This is the main thing required still for full Apple-compatible GC support.
There also seem to be a few places (I've not identified them yet) where GNUstep
code is storing strong pointers in globals that are not marked as strong. The
compiler will only generate a write barrier if the pointer is either id, or has
the __strong qualifier. Without these, we need to mark the entire data segment
as potentially containing pointers, which adds some overhead (I'm currently
doing this, but I'd like to turn it off).
-- Sent from my brain
David Chisnall <=
- Re: GSIMap, Richard Frith-Macdonald, 2011/06/01
- Re: GSIMap, David Chisnall, 2011/06/01
- Re: GSIMap, Richard Frith-Macdonald, 2011/06/02
- Re: GSIMap, David Chisnall, 2011/06/02
- Re: GSIMap, Richard Frith-Macdonald, 2011/06/10
- Re: GSIMap, David Chisnall, 2011/06/10
- Re: GSIMap, Jens Ayton, 2011/06/16
- Re: GSIMap, Helge Hess, 2011/06/25
- Re: GSIMap, Nat!, 2011/06/25
- Re: GSIMap, Richard Frith-Macdonald, 2011/06/25