mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 03:50:16 +00:00
some fix
This commit is contained in:
parent
c4897ea0fb
commit
773a05e25c
@ -13,7 +13,7 @@ bool Bytecode__is_forward_jump(const Bytecode* self) {
|
||||
return self->op >= OP_JUMP_FORWARD && self->op <= OP_LOOP_BREAK;
|
||||
}
|
||||
|
||||
FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_string name){
|
||||
FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_string name) {
|
||||
FuncDecl* self = malloc(sizeof(FuncDecl));
|
||||
self->rc.count = 1;
|
||||
self->rc.dtor = (void (*)(void*))FuncDecl__dtor;
|
||||
@ -33,21 +33,22 @@ FuncDecl_ FuncDecl__rcnew(pk_SourceData_ src, c11_string name){
|
||||
return self;
|
||||
}
|
||||
|
||||
void FuncDecl__dtor(FuncDecl* self){
|
||||
void FuncDecl__dtor(FuncDecl* self) {
|
||||
CodeObject__dtor(&self->code);
|
||||
c11_vector__dtor(&self->args);
|
||||
c11_vector__dtor(&self->kwargs);
|
||||
c11_smallmap_n2i__dtor(&self->kw_to_index);
|
||||
}
|
||||
|
||||
void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const PyVar* value){
|
||||
void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const PyVar* value) {
|
||||
c11_smallmap_n2i__set(&self->kw_to_index, key, index);
|
||||
FuncDeclKwArg item = {index, key, *value};
|
||||
c11_vector__push(FuncDeclKwArg, &self->kwargs, item);
|
||||
}
|
||||
|
||||
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_string name){
|
||||
self->src = src; PK_INCREF(src);
|
||||
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_string name) {
|
||||
self->src = src;
|
||||
PK_INCREF(src);
|
||||
py_Str__ctor2(&self->name, name.data, name.size);
|
||||
|
||||
c11_vector__ctor(&self->codes, sizeof(Bytecode));
|
||||
@ -70,10 +71,10 @@ void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_string name){
|
||||
c11_vector__push(CodeBlock, &self->blocks, root_block);
|
||||
}
|
||||
|
||||
void CodeObject__dtor(CodeObject* self){
|
||||
void CodeObject__dtor(CodeObject* self) {
|
||||
PK_DECREF(self->src);
|
||||
py_Str__dtor(&self->name);
|
||||
|
||||
|
||||
c11_vector__dtor(&self->codes);
|
||||
c11_vector__dtor(&self->codes_ex);
|
||||
|
||||
@ -85,7 +86,7 @@ void CodeObject__dtor(CodeObject* self){
|
||||
|
||||
c11_vector__dtor(&self->blocks);
|
||||
|
||||
for(int i=0; i<self->func_decls.count; i++){
|
||||
for(int i = 0; i < self->func_decls.count; i++) {
|
||||
FuncDecl_ decl = c11__getitem(FuncDecl_, &self->func_decls, i);
|
||||
PK_DECREF(decl);
|
||||
}
|
||||
|
@ -23,28 +23,22 @@ void py_finalize() {
|
||||
pk_MemoryPools__finalize();
|
||||
}
|
||||
|
||||
int py_exec(const char* source) {
|
||||
pk_SourceData_ src = pk_SourceData__rcnew(source, "main.py", EXEC_MODE, false);
|
||||
CodeObject co;
|
||||
Error* err = pk_compile(src, &co);
|
||||
PK_DECREF(src);
|
||||
if(err) abort();
|
||||
int py_exec(const char* source) { PK_UNREACHABLE(); }
|
||||
|
||||
int py_eval(const char* source) {
|
||||
CodeObject co;
|
||||
pk_SourceData_ src = pk_SourceData__rcnew(source, "main.py", EVAL_MODE, false);
|
||||
Error* err = pk_compile(src, &co);
|
||||
if(err) {
|
||||
PK_DECREF(src);
|
||||
return -1;
|
||||
}
|
||||
pk_VM* vm = pk_current_vm;
|
||||
Frame* frame = Frame__new(&co, &vm->main, NULL, vm->stack.sp, vm->stack.sp, &co);
|
||||
pk_VM__push_frame(vm, frame);
|
||||
pk_FrameResult res = pk_VM__run_top_frame(vm);
|
||||
if(res == RES_ERROR) return vm->last_error->type;
|
||||
if(res == RES_RETURN) return 0;
|
||||
PK_UNREACHABLE();
|
||||
}
|
||||
|
||||
int py_eval(const char* source) {
|
||||
CodeObject* co = NULL;
|
||||
pk_VM* vm = pk_current_vm;
|
||||
Frame* frame = Frame__new(co, &vm->main, NULL, vm->stack.sp, vm->stack.sp, co);
|
||||
pk_VM__push_frame(vm, frame);
|
||||
pk_FrameResult res = pk_VM__run_top_frame(vm);
|
||||
CodeObject__dtor(&co);
|
||||
PK_DECREF(src);
|
||||
if(res == RES_ERROR) return vm->last_error->type;
|
||||
if(res == RES_RETURN) return 0;
|
||||
PK_UNREACHABLE();
|
||||
|
Loading…
x
Reference in New Issue
Block a user