cbqn_evalSrc

This commit is contained in:
dzaima 2022-04-07 19:45:43 +03:00
parent 7adb06a43d
commit e38226895e
2 changed files with 26 additions and 3 deletions

View File

@ -31,7 +31,7 @@ rtverifyn-singeli:
wasi-o3:
@${MAKE} singeli=0 t=wasi_o3 f="-DWASM -DWASI -DNO_MMAP -O3 -DCATCH_ERRORS=0 -D_WASI_EMULATED_MMAN --target=wasm32-wasi" LDFLAGS="-lwasi-emulated-mman --target=wasm32-wasi -Wl,-z,stack-size=8388608 -Wl,--initial-memory=67108864" LD_LIBS= PIE= c
emcc-o3:
@${MAKE} singeli=0 t=emcc_o3 f='-DWASM -DEMCC -O3' LDFLAGS='-s EXPORTED_FUNCTIONS=_main,_cbqn_runLine -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s ALLOW_MEMORY_GROWTH=1' CC=emcc OUTPUT=BQN.js c
@${MAKE} singeli=0 t=emcc_o3 f='-DWASM -DEMCC -O3' LDFLAGS='-s EXPORTED_FUNCTIONS=_main,_cbqn_runLine,_cbqn_evalSrc -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -s ALLOW_MEMORY_GROWTH=1' CC=emcc OUTPUT=BQN.js c
# compiler setup

View File

@ -209,7 +209,7 @@ void cbqn_runLine0(char* ln, i64 read) {
gc_maybeGC();
}
void cbqn_runLine(char* ln, i64 read) {
void cbqn_runLine(char* ln, i64 len) {
if(CATCH) {
fprintf(stderr, "Error: "); printErrMsg(thrownMsg); fputc('\n', stderr);
vm_pst(envCurr+1, envStart+envPrevHeight);
@ -220,16 +220,39 @@ void cbqn_runLine(char* ln, i64 read) {
gc_maybeGC();
return;
}
cbqn_runLine0(ln, read);
cbqn_runLine0(ln, len);
popCatch();
}
#if WASM
void cbqn_evalSrc(char* src, i64 len) {
Body* body = m_nnsDesc();
B ns = m_nns(body);
Scope* sc = ptr_inc(c(NS, ns)->sc);
ptr_dec(v(ns));
B code = fromUTF8l(src);
Block* block = bqn_compSc(code, inc(replPath), emptySVec(), sc, true);
ptr_dec(sc->body);
sc->body = ptr_inc(block->bodies[0]);
B res = execBlockInline(block, sc);
ptr_dec(block);
ptr_dec(sc);
B resFmt = bqn_fmt(res);
printRaw(resFmt); dec(resFmt);
putchar('\n');
}
#endif
#if EMCC
int main() {
repl_init();
}
#else
int main(int argc, char* argv[]) {
repl_init();
bool startREPL = argc==1;
bool silentREPL = false;
bool execStdin = false;