njvm/record.c
2024-01-23 17:18:54 +01:00

28 lines
679 B
C

//
// Created by Nils Polek on 23.01.24.
//
#ifndef RECORD
#define RECORD
#include "stackslot.c"
#include "instruktion.c"
ObjRef newRecord(int size){
ObjRef record;
unsigned int objSize;
objSize = sizeof(*record) + (size * sizeof(void *));
if((record = malloc(objSize))== NULL){
perror("malloc");
}
record->size = MSB & size;
for(int i = 0; i < size; i++) {
GET_REFS_PTR(record)[i] = malloc(8);
}
return record;
}
ObjRef getField(ObjRef arr, int point){
return *(ObjRef *)GET_REFS_PTR(arr)[point]->data;
}
void setField(ObjRef arr, int point, ObjRef value){
* (ObjRef *)GET_REFS_PTR(arr)[point]->data = value;
}
#endif