summaryrefslogtreecommitdiffstats
path: root/Python/import.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-08-12 14:53:39 (GMT)
committerGuido van Rossum <guido@python.org>1997-08-12 14:53:39 (GMT)
commit741689d5f3570a2e56bf166e6dfc6417749b0790 (patch)
tree22d52ae51943263acfc3b670a34d0027292a62dc /Python/import.c
parente5b40268817b517b2759ffb71d79e8979ad9bae2 (diff)
downloadcpython-741689d5f3570a2e56bf166e6dfc6417749b0790.zip
cpython-741689d5f3570a2e56bf166e6dfc6417749b0790.tar.gz
cpython-741689d5f3570a2e56bf166e6dfc6417749b0790.tar.bz2
Use string interning and caching to get speedups on the mac (Jack).
Diffstat (limited to 'Python/import.c')
-rw-r--r--Python/import.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/Python/import.c b/Python/import.c
index 446b499..f33e5d6 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -570,7 +570,17 @@ find_module(name, path, buf, buflen, p_fp)
if ((int)strlen(buf) != len)
continue; /* v contains '\0' */
#ifdef macintosh
- if ( PyMac_FindResourceModule(name, buf) ) {
+#ifdef INTERN_STRINGS
+ /*
+ ** Speedup: each sys.path item is interned, and
+ ** FindResourceModule remembers which items refer to
+ ** folders (so we don't have to bother trying to look
+ ** into them for resources).
+ */
+ PyString_InternInPlace(&PyList_GET_ITEM(path, i));
+ v = PyList_GET_ITEM(path, i);
+#endif
+ if ( PyMac_FindResourceModule((PyStringObject *)v, name, buf) ) {
static struct filedescr resfiledescr =
{"", "", PY_RESOURCE};
@@ -579,6 +589,11 @@ find_module(name, path, buf, buflen, p_fp)
#endif
if (len > 0 && buf[len-1] != SEP)
buf[len++] = SEP;
+#ifdef macintosh
+ fdp = PyMac_FindModuleExtension(buf, &len, name);
+ if ( fdp )
+ fp = fopen(buf, fdp->mode);
+#else
#ifdef IMPORT_8x3_NAMES
/* see if we are searching in directory dos_8x3 */
if (len > 7 && !strncmp(buf + len - 8, "dos_8x3", 7)){
@@ -604,6 +619,7 @@ find_module(name, path, buf, buflen, p_fp)
if (fp != NULL)
break;
}
+#endif /* !macintosh */
if (fp != NULL)
break;
}