[Places] windows fixes
This commit is contained in:
parent
c0bd4e8dbc
commit
9d55c6c202
|
@ -16,7 +16,7 @@ enum {
|
||||||
MMU_WRITABLE = 1,
|
MMU_WRITABLE = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef MZ_USE_PLACES
|
#if defined(MZ_USE_PLACES) && !defined(_WIN32)
|
||||||
#define USE_BLOCK_CACHE
|
#define USE_BLOCK_CACHE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -138,18 +138,8 @@ void scheme_init_dynamic_extension(Scheme_Env *env)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
scheme_add_global_constant("load-extension",
|
GLOBAL_PRIM_W_ARITY2("load-extension", load_extension, 1, 1, 0, -1, env);
|
||||||
scheme_make_prim_w_arity2(load_extension,
|
GLOBAL_PARAMETER("current-load-extension", current_load_extension, MZCONFIG_LOAD_EXTENSION_HANDLER, env);
|
||||||
"load-extension",
|
|
||||||
1, 1,
|
|
||||||
0, -1),
|
|
||||||
env);
|
|
||||||
|
|
||||||
scheme_add_global_constant("current-load-extension",
|
|
||||||
scheme_register_parameter(current_load_extension,
|
|
||||||
"current-load-extension",
|
|
||||||
MZCONFIG_LOAD_EXTENSION_HANDLER),
|
|
||||||
env);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Scheme_Object *
|
static Scheme_Object *
|
||||||
|
@ -226,7 +216,19 @@ static Scheme_Object *do_load_extension(const char *filename,
|
||||||
if (filename[0] != '/') {
|
if (filename[0] != '/') {
|
||||||
int l = strlen(filename);
|
int l = strlen(filename);
|
||||||
char *s;
|
char *s;
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
void *original_gc;
|
||||||
|
original_gc = GC_switch_to_master_gc();
|
||||||
|
scheme_start_atomic();
|
||||||
|
# endif
|
||||||
|
|
||||||
s = (char *)scheme_malloc_atomic(l + 3);
|
s = (char *)scheme_malloc_atomic(l + 3);
|
||||||
|
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
scheme_end_atomic_no_swap();
|
||||||
|
GC_switch_back_from_master(original_gc);
|
||||||
|
# endif
|
||||||
|
|
||||||
s[0] = '.';
|
s[0] = '.';
|
||||||
s[1] = '/';
|
s[1] = '/';
|
||||||
memcpy(s + 2, filename, l + 1);
|
memcpy(s + 2, filename, l + 1);
|
||||||
|
@ -406,8 +408,20 @@ static Scheme_Object *do_load_extension(const char *filename,
|
||||||
return NULL;
|
return NULL;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
if (comppath)
|
if (comppath) {
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
void *original_gc;
|
||||||
|
original_gc = GC_switch_to_master_gc();
|
||||||
|
scheme_start_atomic();
|
||||||
|
# endif
|
||||||
|
|
||||||
scheme_hash_set(fullpath_loaded_extensions, (Scheme_Object *)filename, mzPROC_TO_HASH_OBJ(init_f));
|
scheme_hash_set(fullpath_loaded_extensions, (Scheme_Object *)filename, mzPROC_TO_HASH_OBJ(init_f));
|
||||||
|
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
scheme_end_atomic_no_swap();
|
||||||
|
GC_switch_back_from_master(original_gc);
|
||||||
|
# endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -418,12 +432,24 @@ static Scheme_Object *do_load_extension(const char *filename,
|
||||||
init_f = ed->reload_f;
|
init_f = ed->reload_f;
|
||||||
modname_f = ed->modname_f;
|
modname_f = ed->modname_f;
|
||||||
} else {
|
} else {
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
void *original_gc;
|
||||||
|
original_gc = GC_switch_to_master_gc();
|
||||||
|
scheme_start_atomic();
|
||||||
|
# endif
|
||||||
|
|
||||||
ed = MALLOC_ONE_ATOMIC(ExtensionData);
|
ed = MALLOC_ONE_ATOMIC(ExtensionData);
|
||||||
ed->handle = handle;
|
ed->handle = handle;
|
||||||
ed->init_f = init_f;
|
ed->init_f = init_f;
|
||||||
ed->reload_f = reload_f;
|
ed->reload_f = reload_f;
|
||||||
ed->modname_f = modname_f;
|
ed->modname_f = modname_f;
|
||||||
scheme_hash_set(loaded_extensions, mzPROC_TO_HASH_OBJ(init_f), (Scheme_Object *)ed);
|
scheme_hash_set(loaded_extensions, mzPROC_TO_HASH_OBJ(init_f), (Scheme_Object *)ed);
|
||||||
|
|
||||||
|
# if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC)
|
||||||
|
scheme_end_atomic_no_swap();
|
||||||
|
GC_switch_back_from_master(original_gc);
|
||||||
|
# endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SCHEME_SYMBOLP(expected_module)) {
|
if (SCHEME_SYMBOLP(expected_module)) {
|
||||||
|
@ -441,6 +467,7 @@ static Scheme_Object *do_load_extension(const char *filename,
|
||||||
slen = SCHEME_SYM_LEN(n);
|
slen = SCHEME_SYM_LEN(n);
|
||||||
|
|
||||||
s = (char *)scheme_malloc_atomic(len + slen + 2);
|
s = (char *)scheme_malloc_atomic(len + slen + 2);
|
||||||
|
|
||||||
memcpy(s, t, len);
|
memcpy(s, t, len);
|
||||||
memcpy(s + len, SCHEME_SYM_VAL(n), slen);
|
memcpy(s + len, SCHEME_SYM_VAL(n), slen);
|
||||||
s[len + slen] = '\'';
|
s[len + slen] = '\'';
|
||||||
|
|
|
@ -41,6 +41,9 @@
|
||||||
/* Enable futures: */
|
/* Enable futures: */
|
||||||
#define MZ_USE_FUTURES
|
#define MZ_USE_FUTURES
|
||||||
|
|
||||||
|
/* Enable places: */
|
||||||
|
/* #define MZ_USE_PLACES */
|
||||||
|
|
||||||
/* Enable single-precision floats: */
|
/* Enable single-precision floats: */
|
||||||
#define USE_SINGLE_FLOATS
|
#define USE_SINGLE_FLOATS
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user