@@ -45,15 +45,9 @@ VM* init_vm(int stack_size, size_t heap_size,
4545 vm->max_threads = max_threads;
4646 vm->processes = 0;
4747
48− int i;
49− // Assumption: there's enough space for this in the initial heap.
50− vm->argv = malloc(argc*sizeof(VAL));
48+ vm->argv = argv;
5149 vm->argc = argc;
5250
53− for(i = 0; i < argc; ++i) {
54− vm->argv[i] = MKSTR(vm, argv[i]);
55− }
56−
5751 STATS_LEAVE_INIT(vm->stats)
5852 return vm;
5953}
@@ -65,7 +59,6 @@ Stats terminate(VM* vm) {
6559 free(vm->inbox);
6660 free(vm->valstack);
6761 free_heap(&(vm->heap));
68− free(vm->argv);
6962
7063 pthread_mutex_destroy(&(vm -> inbox_lock));
7164 pthread_mutex_destroy(&(vm -> inbox_block));
@@ -584,11 +577,10 @@ int idris_numArgs(VM* vm) {
584577}
585578
586579VAL idris_getArg(VM* vm, int i) {
587− return vm->argv[i];
580+ return MKSTR(vm, vm->argv[i]);
588581}
589582
590583void stackOverflow() {
591584 fprintf(stderr, "Stack overflow");
592585 exit(-1);
593586}
594−