mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-21 20:10:17 +00:00
some fix
This commit is contained in:
parent
c4897ea0fb
commit
773a05e25c
@ -47,7 +47,8 @@ void FuncDecl__add_kwarg(FuncDecl* self, int index, uint16_t key, const PyVar* v
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_string name) {
|
void CodeObject__ctor(CodeObject* self, pk_SourceData_ src, c11_string name) {
|
||||||
self->src = src; PK_INCREF(src);
|
self->src = src;
|
||||||
|
PK_INCREF(src);
|
||||||
py_Str__ctor2(&self->name, name.data, name.size);
|
py_Str__ctor2(&self->name, name.data, name.size);
|
||||||
|
|
||||||
c11_vector__ctor(&self->codes, sizeof(Bytecode));
|
c11_vector__ctor(&self->codes, sizeof(Bytecode));
|
||||||
|
@ -23,28 +23,22 @@ void py_finalize() {
|
|||||||
pk_MemoryPools__finalize();
|
pk_MemoryPools__finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
int py_exec(const char* source) {
|
int py_exec(const char* source) { PK_UNREACHABLE(); }
|
||||||
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_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;
|
pk_VM* vm = pk_current_vm;
|
||||||
Frame* frame = Frame__new(&co, &vm->main, NULL, vm->stack.sp, vm->stack.sp, &co);
|
Frame* frame = Frame__new(&co, &vm->main, NULL, vm->stack.sp, vm->stack.sp, &co);
|
||||||
pk_VM__push_frame(vm, frame);
|
pk_VM__push_frame(vm, frame);
|
||||||
pk_FrameResult res = pk_VM__run_top_frame(vm);
|
pk_FrameResult res = pk_VM__run_top_frame(vm);
|
||||||
if(res == RES_ERROR) return vm->last_error->type;
|
CodeObject__dtor(&co);
|
||||||
if(res == RES_RETURN) return 0;
|
PK_DECREF(src);
|
||||||
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);
|
|
||||||
if(res == RES_ERROR) return vm->last_error->type;
|
if(res == RES_ERROR) return vm->last_error->type;
|
||||||
if(res == RES_RETURN) return 0;
|
if(res == RES_RETURN) return 0;
|
||||||
PK_UNREACHABLE();
|
PK_UNREACHABLE();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user