blueloveTH vor 6 Monaten
Ursprung
Commit
33be8e869a
3 geänderte Dateien mit 5 neuen und 13 gelöschten Zeilen
  1. 1 4
      include/pocketpy/interpreter/frame.h
  2. 0 6
      src/interpreter/frame.c
  3. 4 3
      src/interpreter/vm.c

+ 1 - 4
include/pocketpy/interpreter/frame.h

@@ -11,12 +11,9 @@ typedef struct ValueStack {
     py_TValue* sp;
     py_TValue* end;
     // We allocate extra places to keep `_sp` valid to detect stack overflow
-    py_TValue begin[PK_VM_STACK_SIZE + PK_MAX_CO_VARNAMES * 2];
+    py_TValue begin[PK_VM_STACK_SIZE + PK_MAX_CO_VARNAMES];
 } ValueStack;
 
-void ValueStack__ctor(ValueStack* self);
-void ValueStack__dtor(ValueStack* self);
-
 typedef struct UnwindTarget {
     struct UnwindTarget* next;
     int iblock;

+ 0 - 6
src/interpreter/frame.c

@@ -7,12 +7,6 @@
 #include <stdbool.h>
 #include <assert.h>
 
-void ValueStack__ctor(ValueStack* self) {
-    self->sp = self->begin;
-    self->end = self->begin + PK_VM_STACK_SIZE;
-}
-
-void ValueStack__dtor(ValueStack* self) { self->sp = self->begin; }
 
 void FastLocals__to_dict(py_TValue* locals, const CodeObject* co) {
     py_StackRef dict = py_pushtmp();

+ 4 - 3
src/interpreter/vm.c

@@ -110,7 +110,8 @@ void VM__ctor(VM* self) {
     FixedMemoryPool__ctor(&self->pool_frame, sizeof(py_Frame), 32);
 
     ManagedHeap__ctor(&self->heap);
-    ValueStack__ctor(&self->stack);
+    self->stack.sp = self->stack.begin;
+    self->stack.end = self->stack.begin + PK_VM_STACK_SIZE;
 
     CachedNames__ctor(&self->cached_names);
     NameDict__ctor(&self->compile_time_funcs, PK_TYPE_ATTR_LOAD_FACTOR);
@@ -288,11 +289,11 @@ void VM__dtor(VM* self) {
     // destroy all objects
     ManagedHeap__dtor(&self->heap);
     // clear frames
-    while(self->top_frame)
+    while(self->top_frame) {
         VM__pop_frame(self);
+    }
     BinTree__dtor(&self->modules);
     FixedMemoryPool__dtor(&self->pool_frame);
-    ValueStack__dtor(&self->stack);
     CachedNames__dtor(&self->cached_names);
     NameDict__dtor(&self->compile_time_funcs);
     c11_vector__dtor(&self->types);