record the C++ compiler version in the VM, and expose it with a vm-compiler word
parent
2c5deba1d1
commit
ac979619e6
|
@ -66,6 +66,7 @@ M: string string>symbol string>symbol* ;
|
||||||
M: sequence string>symbol [ string>symbol* ] map ;
|
M: sequence string>symbol [ string>symbol* ] map ;
|
||||||
|
|
||||||
[
|
[
|
||||||
8 special-object utf8 alien>string string>cpu \ cpu set-global
|
8 special-object utf8 alien>string string>cpu \ cpu set-global
|
||||||
9 special-object utf8 alien>string string>os \ os set-global
|
9 special-object utf8 alien>string string>os \ os set-global
|
||||||
|
67 special-object utf8 alien>string \ vm-compiler set-global
|
||||||
] "alien.strings" add-startup-hook
|
] "alien.strings" add-startup-hook
|
||||||
|
|
|
@ -24,6 +24,8 @@ UNION: unix bsd solaris linux haiku ;
|
||||||
|
|
||||||
: os ( -- class ) \ os get-global ; foldable
|
: os ( -- class ) \ os get-global ; foldable
|
||||||
|
|
||||||
|
: vm-compiler ( -- string ) \ vm-compiler get-global ; foldable
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: string>cpu ( str -- class )
|
: string>cpu ( str -- class )
|
||||||
|
|
|
@ -136,6 +136,7 @@ void factor_vm::init_factor(vm_parameters *p)
|
||||||
special_objects[OBJ_EXECUTABLE] = allot_alien(false_object,(cell)p->executable_path);
|
special_objects[OBJ_EXECUTABLE] = allot_alien(false_object,(cell)p->executable_path);
|
||||||
special_objects[OBJ_ARGS] = false_object;
|
special_objects[OBJ_ARGS] = false_object;
|
||||||
special_objects[OBJ_EMBEDDED] = false_object;
|
special_objects[OBJ_EMBEDDED] = false_object;
|
||||||
|
special_objects[OBJ_VM_COMPILER] = allot_alien(false_object,(cell)FACTOR_COMPILER_VERSION);
|
||||||
|
|
||||||
/* We can GC now */
|
/* We can GC now */
|
||||||
gc_off = false;
|
gc_off = false;
|
||||||
|
|
|
@ -29,6 +29,19 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
/* Record compiler version */
|
||||||
|
#if defined(__clang__)
|
||||||
|
#define FACTOR_COMPILER_VERSION "Clang (GCC " __VERSION__ ")"
|
||||||
|
#elif defined(__INTEL_COMPILER)
|
||||||
|
#define FACTOR_COMPILER_VERSION "Intel C Compiler " #__INTEL_COMPILER
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#define FACTOR_COMPILER_VERSION "GCC " __VERSION__
|
||||||
|
#elif defined(_MSC_FULL_VER)
|
||||||
|
#define FACTOR_COMPILER_VERSION "Microsoft Visual C++ " #_MSC_FULL_VER
|
||||||
|
#else
|
||||||
|
#define FACTOR_COMPILER_VERSION "unknown"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Detect target CPU type */
|
/* Detect target CPU type */
|
||||||
#if defined(__arm__)
|
#if defined(__arm__)
|
||||||
#define FACTOR_ARM
|
#define FACTOR_ARM
|
||||||
|
|
|
@ -95,6 +95,8 @@ enum special_object {
|
||||||
OBJ_THREADS = 64,
|
OBJ_THREADS = 64,
|
||||||
OBJ_RUN_QUEUE = 65,
|
OBJ_RUN_QUEUE = 65,
|
||||||
OBJ_SLEEP_QUEUE = 66,
|
OBJ_SLEEP_QUEUE = 66,
|
||||||
|
|
||||||
|
OBJ_VM_COMPILER = 67, /* version string of the compiler we were built with */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* save-image-and-exit discards special objects that are filled in on startup
|
/* save-image-and-exit discards special objects that are filled in on startup
|
||||||
|
|
Loading…
Reference in New Issue