mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-30 23:23:07 +00:00 
			
		
		
		
	Make the assembler optional during compilation.
This commit is contained in:
		| @@ -24,6 +24,9 @@ | ||||
| #include <janet/janet.h> | ||||
| #include "util.h" | ||||
|  | ||||
| /* Conditionally compile this file */ | ||||
| #ifdef JANET_ASSEMBLER | ||||
|  | ||||
| /* Definition for an instruction in the assembler */ | ||||
| typedef struct JanetInstructionDef JanetInstructionDef; | ||||
| struct JanetInstructionDef { | ||||
| @@ -932,3 +935,5 @@ int janet_lib_asm(JanetArgs args) { | ||||
|     janet_cfuns(env, NULL, cfuns); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -48,12 +48,6 @@ | ||||
|   [name & more] | ||||
|   (tuple.slice (array.concat @['def name :private] more) 0)) | ||||
|  | ||||
| (defmacro defasm | ||||
|   "Define a function using assembly" | ||||
|   [name & body] | ||||
|   (def tab (apply table body)) | ||||
|   (tuple 'def name (tuple asm (tuple 'quote tab)))) | ||||
|  | ||||
| (defn defglobal | ||||
|   "Dynamically create a global def." | ||||
|   [name value] | ||||
|   | ||||
| @@ -594,9 +594,11 @@ JanetTable *janet_core_env(void) { | ||||
|         janet_lib_os(args); | ||||
|         janet_lib_parse(args); | ||||
|         janet_lib_compile(args); | ||||
|         janet_lib_asm(args); | ||||
|         janet_lib_string(args); | ||||
|         janet_lib_marsh(args); | ||||
| #ifdef JANET_ASSEMBLER | ||||
|         janet_lib_asm(args); | ||||
| #endif | ||||
|     } | ||||
|  | ||||
|     /* Allow references to the environment */ | ||||
|   | ||||
| @@ -53,7 +53,9 @@ int janet_lib_os(JanetArgs args); | ||||
| int janet_lib_string(JanetArgs args); | ||||
| int janet_lib_marsh(JanetArgs args); | ||||
| int janet_lib_parse(JanetArgs args); | ||||
| #ifdef JANET_ASSEMBLER | ||||
| int janet_lib_asm(JanetArgs args); | ||||
| #endif | ||||
| int janet_lib_compile(JanetArgs args); | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -109,6 +109,11 @@ extern "C" { | ||||
| #define JANET_DYNAMIC_MODULES | ||||
| #endif | ||||
|  | ||||
| /* Enable or disable the assembler. Enabled by default. */ | ||||
| #ifndef JANET_NO_ASSEMBLER | ||||
| #define JANET_ASSEMBLER | ||||
| #endif | ||||
|  | ||||
| /* How to export symbols */ | ||||
| #ifndef JANET_API | ||||
| #ifdef JANET_WINDOWS | ||||
| @@ -852,8 +857,8 @@ JANET_API void janet_parser_flush(JanetParser *parser); | ||||
| JANET_API JanetParser *janet_check_parser(Janet x); | ||||
|  | ||||
| /* Assembly */ | ||||
| #ifdef JANET_ASSEMBLER | ||||
| typedef struct JanetAssembleResult JanetAssembleResult; | ||||
| typedef struct JanetAssembleOptions JanetAssembleOptions; | ||||
| enum JanetAssembleStatus { | ||||
|     JANET_ASSEMBLE_OK, | ||||
|     JANET_ASSEMBLE_ERROR | ||||
| @@ -866,9 +871,9 @@ struct JanetAssembleResult { | ||||
| JANET_API JanetAssembleResult janet_asm(Janet source, int flags); | ||||
| JANET_API Janet janet_disasm(JanetFuncDef *def); | ||||
| JANET_API Janet janet_asm_decode_instruction(uint32_t instr); | ||||
| #endif | ||||
|  | ||||
| /* Compilation */ | ||||
| typedef struct JanetCompileOptions JanetCompileOptions; | ||||
| typedef struct JanetCompileResult JanetCompileResult; | ||||
| enum JanetCompileStatus { | ||||
|     JANET_COMPILE_OK, | ||||
|   | ||||
| @@ -46,7 +46,7 @@ | ||||
|       (+= i (dohandler (string.slice arg 1 2) i)) | ||||
|       (do | ||||
|         (:= *no-file* false) | ||||
|         (import* _env arg :exit *exit-on-error*) | ||||
|         (import* _env arg :prefix "" :exit *exit-on-error*) | ||||
|         (++ i)))) | ||||
|  | ||||
|   (when (or *should-repl* *no-file*) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose