mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-23 04:50:17 +00:00
up _0
This commit is contained in:
parent
1e3e88d832
commit
c2a9b77a18
@ -69,7 +69,8 @@ inline PyObject* Generator::next(){
|
|||||||
frame = std::move(vm->callstack.top());
|
frame = std::move(vm->callstack.top());
|
||||||
vm->callstack.pop();
|
vm->callstack.pop();
|
||||||
state = 1;
|
state = 1;
|
||||||
return frame.popx();
|
PyObject** _sp = frame._sp;
|
||||||
|
return POPX();
|
||||||
}else{
|
}else{
|
||||||
state = 2;
|
state = 2;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -139,11 +139,11 @@ struct Py_ final: PyObject {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define OBJ_GET(T, obj) (((Py_<T>*)(obj))->_value)
|
#define OBJ_GET(T, obj) (((Py_<T>*)(obj))->_value)
|
||||||
#define OBJ_MARK(obj) if(!is_tagged(obj)) obj->_obj_gc_mark()
|
#define OBJ_MARK(obj) if(!is_tagged(obj)) (obj)->_obj_gc_mark()
|
||||||
|
|
||||||
Str obj_type_name(VM* vm, Type type);
|
Str obj_type_name(VM* vm, Type type);
|
||||||
|
|
||||||
#if DEBUG_NO_BUILTIN_MODULES
|
#if DEBUG_NO_BUILTIN_MODULES || DEBUG_NO_NAME_GETTER
|
||||||
#define OBJ_NAME(obj) Str("<?>")
|
#define OBJ_NAME(obj) Str("<?>")
|
||||||
#else
|
#else
|
||||||
#define OBJ_NAME(obj) OBJ_GET(Str, vm->getattr(obj, __name__))
|
#define OBJ_NAME(obj) OBJ_GET(Str, vm->getattr(obj, __name__))
|
||||||
|
@ -60,13 +60,6 @@ public:
|
|||||||
PyObject** begin() const { return _args; }
|
PyObject** begin() const { return _args; }
|
||||||
PyObject** end() const { return _args + _size; }
|
PyObject** end() const { return _args + _size; }
|
||||||
|
|
||||||
List to_list() noexcept {
|
|
||||||
List ret(_size);
|
|
||||||
// TODO: use move/memcpy
|
|
||||||
for(int i=0; i<_size; i++) ret[i] = _args[i];
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void extend_self(PyObject* self){
|
void extend_self(PyObject* self){
|
||||||
PyObject** old_args = _args;
|
PyObject** old_args = _args;
|
||||||
int old_size = _size;
|
int old_size = _size;
|
||||||
@ -99,6 +92,18 @@ struct ArgsView{
|
|||||||
int size() const { return _end - _begin; }
|
int size() const { return _end - _begin; }
|
||||||
bool empty() const { return _begin == _end; }
|
bool empty() const { return _begin == _end; }
|
||||||
PyObject* operator[](int i) const { return _begin[i]; }
|
PyObject* operator[](int i) const { return _begin[i]; }
|
||||||
|
|
||||||
|
List to_list() const{
|
||||||
|
List ret(size());
|
||||||
|
for(int i=0; i<size(); i++) ret[i] = _begin[i];
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Tuple to_tuple() const{
|
||||||
|
Tuple ret(size());
|
||||||
|
for(int i=0; i<size(); i++) ret[i] = _begin[i];
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace pkpy
|
} // namespace pkpy
|
Loading…
x
Reference in New Issue
Block a user