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 python prebuild.py
SRC_C=$(find src/ -name "*.c") SRC=$(find src/ -name "*.c")
SRC_CPP=$(find src/ -name "*.cpp")
COMMON_FLAGS="-Iinclude -O0 -Wfatal-errors -g -DDEBUG -DPK_ENABLE_OS=1" # -fsanitize=address,leak,undefined" FLAGS="-std=c11 -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"
echo "Compiling C files..." echo "Compiling C files..."
clang $FLAGS_C -c $SRC_C clang $FLAGS $SRC src2/main.c -o main
ar rcs libpocketpy_c.a *.o
rm *.o
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/object.h"
#include "pocketpy/objects/public.h"
#include "pocketpy/common/config.h" #include "pocketpy/common/config.h"
#ifdef __cplusplus #ifdef __cplusplus

View File

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

View File

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

View File

@ -2,7 +2,7 @@
#include "pocketpy/common/strname.h" #include "pocketpy/common/strname.h"
#include "pocketpy/common/sstream.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->type = type;
self->is_re = true; self->is_re = true;
self->_ip_on_error = -1; 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){ 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(); Frame* self = PoolFrame_alloc();
self->f_back = f_back; self->f_back = f_back;
self->ip = (Bytecode*)co->codes.data - 1; 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){ static void pk_default_stdout(pk_VM* vm, const char* s){
fprintf(stdout, "%s", s); fprintf(stdout, "%s", s);
fflush(stdout);
} }
static void pk_default_stderr(pk_VM* vm, const char* s){ static void pk_default_stderr(pk_VM* vm, const char* s){
fprintf(stderr, "%s", 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){ 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 */ /* Init Builtin Types */
// 0: unused // 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() #define validate(t, expr) if(t != (expr)) abort()
validate(tp_object, pk_VM__new_type(self, "object", 0, NULL, true)); validate(tp_object, pk_VM__new_type(self, "object", 0, NULL, true));

View File

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