This commit is contained in:
blueloveTH 2024-06-24 00:19:00 +08:00
parent b4da713ac1
commit 857b798172
9 changed files with 1138 additions and 1147 deletions

View File

@ -2,19 +2,10 @@ set -e
python prebuild.py
SRC_C=$(find src/ -name "*.c")
SRC_CPP=$(find src/ -name "*.cpp")
SRC=$(find src/ -name "*.c")
COMMON_FLAGS="-Iinclude -O0 -Wfatal-errors -g -DDEBUG -DPK_ENABLE_OS=1" # -fsanitize=address,leak,undefined"
FLAGS_C="-std=c11 $COMMON_FLAGS"
FLAGS_CPP="-std=c++17 -stdlib=libc++ -frtti $COMMON_FLAGS"
FLAGS="-std=c11 -Iinclude -O0 -Wfatal-errors -g -DDEBUG -DPK_ENABLE_OS=1" # -fsanitize=address,leak,undefined"
echo "Compiling C files..."
clang $FLAGS_C -c $SRC_C
ar rcs libpocketpy_c.a *.o
rm *.o
clang $FLAGS $SRC src2/main.c -o main
echo "Compiling C++ files..."
clang++ $FLAGS_CPP -o main src2/main.cpp $SRC_CPP libpocketpy_c.a
rm libpocketpy_c.a

View File

@ -1,5 +1,4 @@
#include "pocketpy/objects/object.h"
#include "pocketpy/objects/public.h"
#include "pocketpy/common/config.h"
#ifdef __cplusplus

View File

@ -17,7 +17,7 @@ typedef struct pkpy_ExceptionFrame {
} pkpy_ExceptionFrame;
typedef struct pkpy_Exception {
pk_StrName type;
StrName type;
pkpy_Str msg;
bool is_re;
@ -29,7 +29,7 @@ typedef struct pkpy_Exception {
c11_vector/*T=pkpy_ExceptionFrame*/ stacktrace;
} pkpy_Exception;
void pkpy_Exception__ctor(pkpy_Exception* self, pk_StrName type);
void pkpy_Exception__ctor(pkpy_Exception* self, StrName type);
void pkpy_Exception__dtor(pkpy_Exception* self);
void pkpy_Exception__stpush(pkpy_Exception* self, pkpy_SourceData_ src, int lineno, const char* cursor, const char* name);
pkpy_Str pkpy_Exception__summary(pkpy_Exception* self);

View File

@ -32,7 +32,7 @@ PK_INLINE PyVar PyVar__fromobj(PyObject* obj){
PyVar retval = {
.type = obj->type,
.is_ptr = true,
._obj = obj;
._obj = obj
};
return retval;
}

View File

@ -2,7 +2,7 @@
#include "pocketpy/common/strname.h"
#include "pocketpy/common/sstream.h"
void pkpy_Exception__ctor(pkpy_Exception* self, pk_StrName type){
void pkpy_Exception__ctor(pkpy_Exception* self, StrName type){
self->type = type;
self->is_re = true;
self->_ip_on_error = -1;

File diff suppressed because it is too large Load Diff

View File

@ -40,7 +40,7 @@ void UnwindTarget__delete(UnwindTarget* self){
}
Frame* Frame__new(Frame* f_back, const CodeObject* co, PyObject* module_, PyObject* function, PyVar* p0, PyVar* locals, const CodeObject* locals_co){
static_assert(sizeof(Frame) <= kPoolFrameBlockSize);
static_assert(sizeof(Frame) <= kPoolFrameBlockSize, "!(sizeof(Frame) <= kPoolFrameBlockSize)");
Frame* self = PoolFrame_alloc();
self->f_back = f_back;
self->ip = (Bytecode*)co->codes.data - 1;

View File

@ -6,10 +6,12 @@ static unsigned char* pk_default_import_file(pk_VM* vm, const char* path){
static void pk_default_stdout(pk_VM* vm, const char* s){
fprintf(stdout, "%s", s);
fflush(stdout);
}
static void pk_default_stderr(pk_VM* vm, const char* s){
fprintf(stderr, "%s", s);
fflush(stderr);
}
void pk_TypeInfo__ctor(pk_TypeInfo *self, StrName name, Type base, PyObject* obj, PyObject* module, bool subclass_enabled){
@ -70,7 +72,7 @@ void pk_VM__ctor(pk_VM* self){
/* Init Builtin Types */
// 0: unused
pk_TypeInfo__ctor(c11_vector__emplace(&self->types), 0, 0, NULL, NULL);
pk_TypeInfo__ctor(c11_vector__emplace(&self->types), 0, 0, NULL, NULL, false);
#define validate(t, expr) if(t != (expr)) abort()
validate(tp_object, pk_VM__new_type(self, "object", 0, NULL, true));

View File

@ -3,7 +3,6 @@
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include "pocketpy/objects/public.h"
#define DICT_MAX_LOAD 0.75
#define DICT_HASH_NEXT(h) ((h) * 5 + 1)