....
This commit is contained in:
parent
f4b1ce03c5
commit
f0c7f31655
@ -5,7 +5,8 @@ set(CMAKE_C_STANDARD 99)
|
||||
|
||||
add_compile_options(-g -Wall -pedantic)
|
||||
|
||||
add_executable(njvm njvm.c)
|
||||
add_executable(njvm njvm.c
|
||||
njvm.h)
|
||||
|
||||
# Include directories for njvm executable
|
||||
target_include_directories(njvm PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/bigint/build/include)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
12
njvm.c
12
njvm.c
@ -417,23 +417,23 @@ void garbageCollector() {
|
||||
gcCount++;
|
||||
}
|
||||
|
||||
ObjRef alloc(unsigned int size) {
|
||||
if (freeHeapPtr + size > halfHeapPtr) {
|
||||
ObjRef alloc(unsigned int objectSize) {
|
||||
if (freeHeapPtr + objectSize > halfHeapPtr) {
|
||||
garbageCollector();
|
||||
if (freeHeapPtr + size > halfHeapPtr) {
|
||||
if (freeHeapPtr + objectSize > halfHeapPtr) {
|
||||
fprintf(stderr, "Heap is full\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
ObjRef or;
|
||||
or = (ObjRef) freeHeapPtr;
|
||||
freeHeapPtr = freeHeapPtr + size;
|
||||
freeHeapPtr = freeHeapPtr + objectSize;
|
||||
return or;
|
||||
}
|
||||
|
||||
void heapAllocator(int n) {
|
||||
heapSizeKiB = n;
|
||||
if ((heap = alloc(n * 1024)) == NULL) {
|
||||
if ((heap = malloc(n * 1024)) == NULL) {
|
||||
perror("malloc");
|
||||
exit(1);
|
||||
}
|
||||
@ -503,7 +503,7 @@ int main(int argc, char *argv[]) {
|
||||
run = 1;
|
||||
}
|
||||
}
|
||||
//heapAllocator(argVheapSizeKiB);
|
||||
heapAllocator(argVheapSizeKiB);
|
||||
// Init the sda
|
||||
ObjRef s[sizeSDA];
|
||||
sda.size = &sizeSDA;
|
||||
|
||||
11
njvm.h
Normal file
11
njvm.h
Normal file
@ -0,0 +1,11 @@
|
||||
//
|
||||
// Created by Elias Bennour on 28.01.24.
|
||||
//
|
||||
|
||||
#ifndef NINJA_NJVM_H
|
||||
#define NINJA_NJVM_H
|
||||
#include "objref.c"
|
||||
|
||||
ObjRef alloc(unsigned int size);
|
||||
|
||||
#endif //NINJA_NJVM_H
|
||||
Loading…
x
Reference in New Issue
Block a user