aboutsummaryrefslogtreecommitdiff
path: root/src/vm/runner/runner.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/runner/runner.h')
-rw-r--r--src/vm/runner/runner.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/vm/runner/runner.h b/src/vm/runner/runner.h
index e81aed7..d2df5d7 100644
--- a/src/vm/runner/runner.h
+++ b/src/vm/runner/runner.h
@@ -2,6 +2,11 @@
#include <compiler/code_generator/code_generator.h>
+typedef struct RunnerVariable {
+ SizedString const *name;
+ void *value;
+} RunnerVariable;
+
typedef void (*BuiltinFunction)(void ***restrict stack,
size_t *restrict stack_inserted);
@@ -9,10 +14,28 @@ extern const BuiltinFunction BUILTIN_FUNCTIONS[];
extern const char *BUILTIN_FUNCTION_NAMES[];
extern const size_t BUILTIN_FUNCTIONS_SIZE;
-extern bool runner(Instructions instructions);
+extern bool runner(SourceCode code);
+extern bool _runner(Instructions instructions);
extern bool runInstruction(Instruction instruction, void ***restrict stack,
size_t *restrict stack_size,
- size_t *restrict stack_inserted);
+ size_t *restrict stack_inserted,
+ RunnerVariable ***restrict variables,
+ size_t *restrict variables_size,
+ size_t *restrict variables_inserted);
+
+extern RunnerVariable *getRunnerVariable(const SizedString *varName,
+ RunnerVariable ***restrict variables,
+ size_t *restrict variables_inserted);
+extern void setRunnerVariable(void *value, const SizedString *varName,
+ RunnerVariable ***restrict variables,
+ size_t *restrict variables_size,
+ size_t *restrict variables_inserted);
+
+extern void *popFromStack(void ***restrict stack,
+ size_t *restrict stack_inserted);
+extern void pushToStack(void *value, void ***restrict stack,
+ size_t *restrict stack_size,
+ size_t *restrict stack_inserted);
extern void print(void ***restrict stack, size_t *restrict stack_inserted);