@@ -48,55 +48,6 @@ TODO: File Manager Speedup:
4848 3. Reading the dir uses the getdirentries syscall, creating an FileEntry
4949 for all files found.
5050
51- //===---------------------------------------------------------------------===//
52-
53- TODO: Fast #Import:
54-
55- * Get frameworks that don't use #import to do so, e.g.
56- DirectoryService, AudioToolbox, CoreFoundation, etc. Why not using #import?
57- Because they work in C mode? C has #import.
58- * Have the lexer return a token for #import instead of handling it itself.
59- - Create a new preprocessor object with no external state (no -D/U options
60- from the command line, etc). Alternatively, keep track of exactly which
61- external state is used by a #import: declare it somehow.
62- * When having reading a #import file, keep track of whether we have (and/or
63- which) seen any "configuration" macros. Various cases:
64- - Uses of target args (__POWERPC__, __i386): Header has to be parsed
65- multiple times, per-target. What about #ifndef checks? How do we know?
66- - "Configuration" preprocessor macros not defined: POWERPC, etc. What about
67- things like __STDC__ etc? What is and what isn't allowed.
68- * Special handling for "umbrella" headers, which just contain #import stmts:
69- - Cocoa.h/AppKit.h - Contain pointers to digests instead of entire digests
70- themselves? Foundation.h isn't pure umbrella!
71- * Frameworks digests:
72- - Can put "digest" of a framework-worth of headers into the framework
73- itself. To open AppKit, just mmap
74- /System/Library/Frameworks/AppKit.framework/"digest", which provides a
75- symbol table in a well defined format. Lazily unstream stuff that is
76- needed. Contains declarations, macros, and debug information.
77- - System frameworks ship with digests. How do we handle configuration
78- information? How do we handle stuff like:
79- #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2
80- which guards a bunch of decls? Should there be a couple of default
81- configs, then have the UI fall back to building/caching its own?
82- - GUI automatically builds digests when UI is idle, both of system
83- frameworks if they aren't not available in the right config, and of app
84- frameworks.
85- - GUI builds dependence graph of frameworks/digests based on #imports. If a
86- digest is out date, dependent digests are automatically invalidated.
87-
88- * New constraints on #import for objc-v3:
89- - #imported file must not define non-inline function bodies.
90- - Alternatively, they can, and these bodies get compiled/linked *once*
91- per app into a dylib. What about building user dylibs?
92- - Restrictions on ObjC grammar: can't #import the body of a for stmt or fn.
93- - Compiler must detect and reject these cases.
94- - #defines defined within a #import have two behaviors:
95- - By default, they escape the header. These macros *cannot* be #undef'd
96- by other code: this is enforced by the front-end.
97- - Optionally, user can specify what macros escape (whitelist) or can use
98- #undef.
99-
10051//===---------------------------------------------------------------------===//
10152// Specifying targets: -triple and -arch
10253===---------------------------------------------------------------------===//
0 commit comments