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): @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