/* 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;
}