add 'vm mode to system-type
This commit is contained in:
parent
1ebb3d5ef3
commit
1d61d9b752
|
@ -4,7 +4,7 @@
|
|||
|
||||
@title[#:tag "runtime"]{Environment and Runtime Information}
|
||||
|
||||
@defproc[(system-type [mode (or/c 'os 'word 'gc 'link 'machine
|
||||
@defproc[(system-type [mode (or/c 'os 'word 'vm 'gc 'link 'machine
|
||||
'so-suffix 'so-mode 'fs-change)
|
||||
'os])
|
||||
(or/c symbol? string? bytes? exact-positive-integer? vector?)]{
|
||||
|
@ -26,6 +26,13 @@ In @indexed-racket['word] mode, the result is either @racket[32] or
|
|||
@racket[64] to indicate whether Racket is running as a 32-bit program
|
||||
or 64-bit program.
|
||||
|
||||
In @indexed-racket['vm] mode,
|
||||
the only possible symbol result is:
|
||||
|
||||
@itemize[
|
||||
@item{@indexed-racket['racket]}
|
||||
]
|
||||
|
||||
In @indexed-racket['gc] mode,
|
||||
the possible symbol results are:
|
||||
|
||||
|
@ -82,7 +89,8 @@ are:
|
|||
event} can track changes at the level of a file, as opposed to the
|
||||
file's directory; this property is @racket[#f] on Windows}
|
||||
]
|
||||
}
|
||||
|
||||
@history[#:changed "6.8.0.2" @elem{Added @racket['vm] mode.}]}
|
||||
|
||||
|
||||
@defproc[(system-language+country) string?]{
|
||||
|
|
|
@ -375,9 +375,10 @@ static char *string_to_from_locale(int to_bytes,
|
|||
#define portable_isspace(x) (((x) < 128) && isspace(x))
|
||||
|
||||
ROSYM static Scheme_Object *sys_symbol;
|
||||
ROSYM static Scheme_Object *link_symbol, *machine_symbol, *gc_symbol;
|
||||
ROSYM static Scheme_Object *link_symbol, *machine_symbol, *vm_symbol, *gc_symbol;
|
||||
ROSYM static Scheme_Object *so_suffix_symbol, *so_mode_symbol, *word_symbol;
|
||||
ROSYM static Scheme_Object *os_symbol, *fs_change_symbol;
|
||||
ROSYM static Scheme_Object *racket_symbol, *cgc_symbol, *_3m_symbol;
|
||||
ROSYM static Scheme_Object *platform_3m_path, *platform_cgc_path;
|
||||
READ_ONLY static Scheme_Object *zero_length_char_string;
|
||||
READ_ONLY static Scheme_Object *zero_length_byte_string;
|
||||
|
@ -406,6 +407,7 @@ scheme_init_string (Scheme_Env *env)
|
|||
REGISTER_SO(link_symbol);
|
||||
REGISTER_SO(machine_symbol);
|
||||
REGISTER_SO(gc_symbol);
|
||||
REGISTER_SO(vm_symbol);
|
||||
REGISTER_SO(so_suffix_symbol);
|
||||
REGISTER_SO(so_mode_symbol);
|
||||
REGISTER_SO(word_symbol);
|
||||
|
@ -413,6 +415,7 @@ scheme_init_string (Scheme_Env *env)
|
|||
REGISTER_SO(fs_change_symbol);
|
||||
link_symbol = scheme_intern_symbol("link");
|
||||
machine_symbol = scheme_intern_symbol("machine");
|
||||
vm_symbol = scheme_intern_symbol("vm");
|
||||
gc_symbol = scheme_intern_symbol("gc");
|
||||
so_suffix_symbol = scheme_intern_symbol("so-suffix");
|
||||
so_mode_symbol = scheme_intern_symbol("so-mode");
|
||||
|
@ -420,6 +423,13 @@ scheme_init_string (Scheme_Env *env)
|
|||
os_symbol = scheme_intern_symbol("os");
|
||||
fs_change_symbol = scheme_intern_symbol("fs-change");
|
||||
|
||||
REGISTER_SO(racket_symbol);
|
||||
REGISTER_SO(cgc_symbol);
|
||||
REGISTER_SO(_3m_symbol);
|
||||
racket_symbol = scheme_intern_symbol("racket");
|
||||
cgc_symbol = scheme_intern_symbol("cgc");
|
||||
_3m_symbol = scheme_intern_symbol("3m");
|
||||
|
||||
REGISTER_SO(zero_length_char_string);
|
||||
REGISTER_SO(zero_length_byte_string);
|
||||
zero_length_char_string = scheme_alloc_char_string(0, 0);
|
||||
|
@ -2774,12 +2784,16 @@ static Scheme_Object *system_type(int argc, Scheme_Object *argv[])
|
|||
|
||||
if (SAME_OBJ(argv[0], gc_symbol)) {
|
||||
#ifdef MZ_PRECISE_GC
|
||||
return scheme_intern_symbol("3m");
|
||||
return _3m_symbol;
|
||||
#else
|
||||
return scheme_intern_symbol("cgc");
|
||||
return cgc_symbol;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (SAME_OBJ(argv[0], vm_symbol)) {
|
||||
return racket_symbol;
|
||||
}
|
||||
|
||||
if (SAME_OBJ(argv[0], so_suffix_symbol)) {
|
||||
return scheme_make_byte_string(MZ_SYSTEM_TYPE_SO_SUFFIX);
|
||||
}
|
||||
|
@ -2798,7 +2812,7 @@ static Scheme_Object *system_type(int argc, Scheme_Object *argv[])
|
|||
}
|
||||
|
||||
if (!SAME_OBJ(argv[0], os_symbol)) {
|
||||
scheme_wrong_contract("system-type", "(or/c 'os 'word 'link 'machine 'gc 'so-suffix 'so-mode 'word 'fs-change)", 0, argc, argv);
|
||||
scheme_wrong_contract("system-type", "(or/c 'os 'word 'link 'machine 'vm 'gc 'so-suffix 'so-mode 'word 'fs-change)", 0, argc, argv);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -2809,17 +2823,13 @@ static Scheme_Object *system_type(int argc, Scheme_Object *argv[])
|
|||
static Scheme_Object *system_library_subpath(int argc, Scheme_Object *argv[])
|
||||
{
|
||||
if (argc > 0) {
|
||||
Scheme_Object *sym;
|
||||
|
||||
if (SCHEME_FALSEP(argv[0]))
|
||||
return platform_cgc_path;
|
||||
|
||||
sym = scheme_intern_symbol("cgc");
|
||||
if (SAME_OBJ(sym, argv[0]))
|
||||
if (SAME_OBJ(cgc_symbol, argv[0]))
|
||||
return platform_cgc_path;
|
||||
|
||||
sym = scheme_intern_symbol("3m");
|
||||
if (SAME_OBJ(sym, argv[0]))
|
||||
if (SAME_OBJ(_3m_symbol, argv[0]))
|
||||
return platform_3m_path;
|
||||
|
||||
scheme_wrong_contract("system-library-subpath", "(or/c 'cgc '3m #f)", 0, argc, argv);
|
||||
|
|
Loading…
Reference in New Issue
Block a user