improve wren vm config
This commit is contained in:
parent
5f83bcb300
commit
e9c9a38e63
53
src/main.c
53
src/main.c
|
@ -5,6 +5,7 @@
|
|||
#include <gint/drivers/r61524.h>
|
||||
#include <gint/gint.h>
|
||||
#include <gint/keyboard.h>
|
||||
#include <gint/kmalloc.h>
|
||||
#include <gint/mpu/power.h>
|
||||
#include <gint/timer.h>
|
||||
|
||||
|
@ -14,31 +15,14 @@
|
|||
#include "term.h"
|
||||
#include "ui.h"
|
||||
|
||||
static char *LOREM_IPSUM =
|
||||
"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nNam vitae purus dolor.\nPraesent in ex tempus, auctor velit at, "
|
||||
"vulputate sapien.\nAenean semper, dui vitae iaculis mattis, odio libero aliquet elit, nec tempor nisl turpis vel arcu.\n"
|
||||
"Vestibulum eleifend maximus enim at sollicitudin.\nNulla eu commodo justo.\nUt vitae pellentesque erat.\nDuis magna nisl, "
|
||||
"eleifend ac massa at, blandit sollicitudin ipsum.\nIntegint_world_swrdum et malesuada fames ac ante ipsum primis in "
|
||||
"faucibus.\n"
|
||||
"Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.\nUt at libero in turpis porttitor "
|
||||
"viverra.\nUt eu pellentesque purus.\nVestibulum aliquet facilisis ante, eget volutpat metus.\nCras semper lacus ac mauris "
|
||||
"imperdiet, vel egestas est luctus.\nAliquam elit enim, dignissim nec enim vel, consequat ullamcorper libero.\nPellentesque "
|
||||
"at "
|
||||
"iaculis lctus.\nPraesent sed velit at tellus hendrerit mattis eu nec velit.\nPhasellus eu quam nec nisi mattis elementum "
|
||||
"quis "
|
||||
"nec enim.\nNulla efficitur turpis id tempus ultricies.\nPellentesque semper lacinia mi vitae feugiat.\nVestibulum leo nisi, "
|
||||
"pretium quis felis non, mattis varius risus.\n"
|
||||
"Suspendisse porttitor purus lacinia ante euismod, ut eleifend massa fermentum.\nProin pretium elementum massa, at efficitur "
|
||||
"risus iaculis sed.\n";
|
||||
|
||||
static volatile int key_poll_timeout;
|
||||
static int callback_keypoll(void) {
|
||||
key_poll_timeout = 0;
|
||||
return TIMER_STOP;
|
||||
}
|
||||
|
||||
void writeFn(WrenVM *vm, const char *text) { term_print(text); }
|
||||
void errorFn(WrenVM *vm, WrenErrorType errorType, const char *module, const int line, const char *msg) {
|
||||
static void wn_write(WrenVM *vm, const char *text) { term_print(text); }
|
||||
static void wn_error(WrenVM *vm, WrenErrorType errorType, const char *module, const int line, const char *msg) {
|
||||
switch (errorType) {
|
||||
case WREN_ERROR_COMPILE: {
|
||||
term_printf("[%s line %d] [Error] %s\n", module, line, msg);
|
||||
|
@ -52,6 +36,21 @@ void errorFn(WrenVM *vm, WrenErrorType errorType, const char *module, const int
|
|||
}
|
||||
}
|
||||
|
||||
static void *wn_reallocate(void *memory, size_t newSize, void *_) {
|
||||
if (memory == NULL && newSize == 0)
|
||||
return NULL;
|
||||
|
||||
if (memory == NULL)
|
||||
return kmalloc(newSize, "_uram");
|
||||
|
||||
if (newSize == 0) {
|
||||
kfree(memory);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return krealloc(memory, newSize);
|
||||
}
|
||||
|
||||
int main(int isappli, int optnum) {
|
||||
int tick_ctr = 0;
|
||||
int shift_state = 0;
|
||||
|
@ -59,18 +58,14 @@ int main(int isappli, int optnum) {
|
|||
int off_state = 0;
|
||||
uint16_t backlight_save;
|
||||
|
||||
term_print(LOREM_IPSUM);
|
||||
|
||||
term_eprint("----------------------------------------------------------------\n");
|
||||
|
||||
term_printf("isappli=%d optnum=%d\n", isappli, optnum);
|
||||
|
||||
term_eprint("----------------------------------------------------------------\n");
|
||||
|
||||
WrenConfiguration config;
|
||||
wrenInitConfiguration(&config);
|
||||
config.writeFn = &writeFn;
|
||||
config.errorFn = &errorFn;
|
||||
config.reallocateFn = &wn_reallocate;
|
||||
config.initialHeapSize = 1024 * 4; // 4kiB
|
||||
config.minHeapSize = 1024; // 1kiB
|
||||
config.heapGrowthPercent = 20;
|
||||
config.writeFn = &wn_write;
|
||||
config.errorFn = &wn_error;
|
||||
WrenVM *vm = wrenNewVM(&config);
|
||||
WrenInterpretResult result = wrenInterpret(vm, "my_module",
|
||||
"System.print(\"I am running in a VM!\")\n"
|
||||
|
|
Loading…
Reference in New Issue