@@ -45,15 +45,9 @@ VM* init_vm(int stack_size, size_t heap_size,
45 vm->max_threads = max_threads;
45 vm->max_threads = max_threads;
46 vm->processes = 0;
46 vm->processes = 0;
48− int i;
48+ vm->argv = argv;
49− // Assumption: there's enough space for this in the initial heap.
50− vm->argv = malloc(argc*sizeof(VAL));
51 vm->argc = argc;
49 vm->argc = argc;
53− for(i = 0; i < argc; ++i) {
54− vm->argv[i] = MKSTR(vm, argv[i]);
57 STATS_LEAVE_INIT(vm->stats)
51 STATS_LEAVE_INIT(vm->stats)
58 return vm;
52 return vm;
@@ -65,7 +59,6 @@ Stats terminate(VM* vm) {
65 free(vm->inbox);
59 free(vm->inbox);
66 free(vm->valstack);
60 free(vm->valstack);
67 free_heap(&(vm->heap));
61 free_heap(&(vm->heap));
70 pthread_mutex_destroy(&(vm -> inbox_lock));
63 pthread_mutex_destroy(&(vm -> inbox_lock));
71 pthread_mutex_destroy(&(vm -> inbox_block));
64 pthread_mutex_destroy(&(vm -> inbox_block));
@@ -584,11 +577,10 @@ int idris_numArgs(VM* vm) {
586VAL idris_getArg(VM* vm, int i) {
579VAL idris_getArg(VM* vm, int i) {
587− return vm->argv[i];
580+ return MKSTR(vm, vm->argv[i]);
590void stackOverflow() {
583void stackOverflow() {
591 fprintf(stderr, "Stack overflow");
584 fprintf(stderr, "Stack overflow");
592 exit(-1);
585 exit(-1);