/* Copyright (c) 1993 Stephen F. White */ #include "cool.h" #include "proto.h" #include "code.h" Inst *machine; int progi, machine_size; int code (int inst) { Inst *new_machine; int i; if (!machine || !machine_size) { code_init (); } if (progi >= machine_size) { new_machine = MALLOC (Inst, machine_size *= 2); for (i = 0; i < progi; i++) { new_machine[i] = machine[i]; } FREE (machine); machine = new_machine; } machine[progi] = inst; progi++; return progi - 1; } void code_copy (Method * m) { int i; if (progi) { m->code = MALLOC (Inst, progi); for (i = 0; i < progi; i++) { m->code[i] = machine[i]; } } else { m->code = 0; } m->ninst = progi; if (machine) { FREE (machine); } machine_size = 0; machine = 0; progi = 0; } void code_init (void) { machine = MALLOC (Inst, CODE_INIT_SIZE); machine_size = CODE_INIT_SIZE; progi = 0; }