static void load_code_heap(FILE *file, image_header *h, vm_parameters *p) { cell good_size = h->code_size + (1 << 19); if(good_size > p->code_size) p->code_size = good_size; init_code_heap(p->code_size); if(h->code_size != 0) { size_t bytes_read = fread(first_block(&code),1,h->code_size,file); if(bytes_read != h->code_size) { print_string("truncated image: "); print_fixnum(bytes_read); print_string(" bytes read, "); print_cell(h->code_size); print_string(" bytes expected\n"); fatal_error("load_code_heap failed",0); } } code_relocation_base = h->code_relocation_base; build_free_list(&code,h->code_size); }
static void load_data_heap(FILE *file, image_header *h, vm_parameters *p) { cell good_size = h->data_size + (1 << 20); if(good_size > p->tenured_size) p->tenured_size = good_size; init_data_heap(p->gen_count, p->young_size, p->aging_size, p->tenured_size, p->secure_gc); clear_gc_stats(); zone *tenured = &data->generations[data->tenured()]; fixnum bytes_read = fread((void*)tenured->start,1,h->data_size,file); if((cell)bytes_read != h->data_size) { print_string("truncated image: "); print_fixnum(bytes_read); print_string(" bytes read, "); print_cell(h->data_size); print_string(" bytes expected\n"); fatal_error("load_data_heap failed",0); } tenured->here = tenured->start + h->data_size; data_relocation_base = h->data_relocation_base; }
void factor_vm::load_data_heap(FILE *file, image_header *h, vm_parameters *p) { cell good_size = h->data_size + (1 << 20); if(good_size > p->tenured_size) p->tenured_size = good_size; init_data_heap(p->young_size, p->aging_size, p->tenured_size, p->secure_gc); clear_gc_stats(); fixnum bytes_read = fread((void*)data->tenured->start,1,h->data_size,file); if((cell)bytes_read != h->data_size) { print_string("truncated image: "); print_fixnum(bytes_read); print_string(" bytes read, "); print_cell(h->data_size); print_string(" bytes expected\n"); fatal_error("load_data_heap failed",0); } data->tenured->here = data->tenured->start + h->data_size; }
void factor_vm::load_code_heap(FILE *file, image_header *h, vm_parameters *p) { if(h->code_size > p->code_size) fatal_error("Code heap too small to fit image",h->code_size); init_code_heap(p->code_size); if(h->code_size != 0) { size_t bytes_read = fread(code->first_block(),1,h->code_size,file); if(bytes_read != h->code_size) { print_string("truncated image: "); print_fixnum(bytes_read); print_string(" bytes read, "); print_cell(h->code_size); print_string(" bytes expected\n"); fatal_error("load_code_heap failed",0); } } code->build_free_list(h->code_size); }