@@ -12,8 +12,8 @@
1212
1313
1414VM* init_vm(int stack_size, size_t heap_size,
15− int max_threads, // not implemented yet
16− int argc, char* argv[]) {
15+ int max_threads // not implemented yet
16+ ) {
1717
1818 VM* vm = malloc(sizeof(VM));
1919 STATS_INIT_STATS(vm->stats)
@@ -45,9 +45,6 @@ VM* init_vm(int stack_size, size_t heap_size,
4545 vm->max_threads = max_threads;
4646 vm->processes = 0;
4747
48− vm->argv = argv;
49− vm->argc = argc;
50−
5148 STATS_LEAVE_INIT(vm->stats)
5249 return vm;
5350}
@@ -145,7 +142,7 @@ VAL MKFLOAT(VM* vm, double val) {
145142 return cl;
146143}
147144
148−VAL MKSTR(VM* vm, char* str) {
145+VAL MKSTR(VM* vm, const char* str) {
149146 int len;
150147 if (str == NULL) {
151148 len = 0;
@@ -164,7 +161,7 @@ VAL MKSTR(VM* vm, char* str) {
164161 return cl;
165162}
166163
167−VAL MKPTR(VM* vm, void* ptr) {
164+VAL MKPTR(VM* vm, const void* ptr) {
168165 Closure* cl = allocate(vm, sizeof(Closure), 0);
169166 SETTY(cl, PTR);
170167 cl -> info.ptr = ptr;
@@ -462,8 +459,7 @@ void* runThread(void* arg) {
462459
463460void* vmThread(VM* callvm, func f, VAL arg) {
464461 VM* vm = init_vm(callvm->stack_max - callvm->valstack, callvm->heap.size,
465− callvm->max_threads,
466− 0, NULL);
462+ callvm->max_threads);
467463 vm->processes=1; // since it can send and receive messages
468464 pthread_t t;
469465 pthread_attr_t attr;
@@ -626,12 +622,15 @@ VAL idris_recvMessage(VM* vm) {
626622 return msg;
627623}
628624
629−int idris_numArgs(VM* vm) {
630− return vm->argc;
625+int __idris_argc;
626+char **__idris_argv;
627+
628+int idris_numArgs() {
629+ return __idris_argc;
631630}
632631
633−VAL idris_getArg(VM* vm, int i) {
634− return MKSTR(vm, vm->argv[i]);
632+const char* idris_getArg(int i) {
633+ return __idris_argv[i];
635634}
636635
637636void stackOverflow() {