aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/Mac/Clean System Files/backend_library1
-rw-r--r--backendC/CleanCompilerSources/path_cache.c9
-rw-r--r--main/Mac/CoclSystemDependent.icl14
3 files changed, 21 insertions, 3 deletions
diff --git a/backend/Mac/Clean System Files/backend_library b/backend/Mac/Clean System Files/backend_library
index 16cd02d..1ff82e5 100644
--- a/backend/Mac/Clean System Files/backend_library
+++ b/backend/Mac/Clean System Files/backend_library
@@ -1,4 +1,5 @@
CleanCompilerLib
+clear_cache
BEGetVersion
BEInit
BECloseFiles
diff --git a/backendC/CleanCompilerSources/path_cache.c b/backendC/CleanCompilerSources/path_cache.c
index c8b7325..c9873d0 100644
--- a/backendC/CleanCompilerSources/path_cache.c
+++ b/backendC/CleanCompilerSources/path_cache.c
@@ -177,6 +177,15 @@ struct file_block **get_file_blocks_p_of_dcl_file (char *file_name)
return NULL;
}
+extern void clear_inline_cache (void);
+
+void clear_cache (void)
+{
+ clear_path_cache();
+ clear_inline_cache();
+ FreePathList();
+}
+
void clear_path_cache (void)
{
int n;
diff --git a/main/Mac/CoclSystemDependent.icl b/main/Mac/CoclSystemDependent.icl
index 39e2451..2cc2b22 100644
--- a/main/Mac/CoclSystemDependent.icl
+++ b/main/Mac/CoclSystemDependent.icl
@@ -24,10 +24,12 @@ script_handler script files
["clear_cache"]
# cache = load_state 0;
| store_state (empty_cache cache.hash_table.hte_symbol_heap)>0
- # (r,s) = DoCommandNullTerminated ("clear_cache" +++ "\0") 0
+// # (r,s) = DoCommandNullTerminated ("clear_cache" +++ "\0") 0
+ # r=clear_cache 1
// # r=1
-> (r,files)
- # (r,s) = DoCommandNullTerminated ("clear_cache" +++ "\0") 0
+// # (r,s) = DoCommandNullTerminated ("clear_cache" +++ "\0") 0
+ # r=clear_cache 1
// # r=1
-> (r,files)
_
@@ -44,7 +46,8 @@ script_handler script files
store_cache_or_clear_cache cache files
| isMember "-clear_cache" scriptArgs
| store_state (empty_cache cache.hash_table.hte_symbol_heap)>0
- # (r,s)=DoCommandNullTerminated "clear_cache\0" 0
+ # r=clear_cache 1
+// # (r,s)=DoCommandNullTerminated "clear_cache\0" 0
| r==0
= files;
= files;
@@ -115,6 +118,11 @@ set_compiler_id id = code {
ccall set_compiler_id "I:I"
};
+clear_cache :: !Int -> Int;
+clear_cache i = code {
+ ccall clear_cache ":V:I"
+ }
+
:: * MyFiles = MyFiles;
create_myfiles = MyFiles;