> On Nov 17, 2016, at 12:36 PM, Alexis via swift-dev <swift-dev@swift.org> > wrote: > > I’m currently looking at pushing the storage of the empty Dictionary > singleton into rodata, using Array as a reference. Most things are pretty > straightforward, except the symbol for the metadata for _EmptyArrayStorage > that’s hardcoded in GlobalObjects.cpp: > > extern "C" ClassMetadata _TMCs18_EmptyArrayStorage; > > How was the _TMCs18 mangle discovered? Does anything need to be done to > ensure this is stable? Blindly applying that prefix to the Dictionary class > sadly just leads to a linker error. For reference, the current decl for > Dictionary is (after gyb expansion):
_T — Swift mangling prefix M — metadata C — class s — ‘Swift’ module 18 — length of ‘_EmptyArrayStorage’ > > @objc_non_lazy_realization > internal class _RawNativeDictionaryStorage: > _SwiftNativeNSDictionary, _NSDictionaryCore > > Related: is it completely busted that GlobalObjects.[h/cpp] is blatantly > assuming the layout of _EmptyArrayStorage? The doesn’t seem to be any > @_fixed_layout annotation on it or its base classes. > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev