mirror of
https://github.com/pocketpy/pocketpy
synced 2025-12-07 18:50:19 +00:00
make array iter smaller
This commit is contained in:
parent
4c15f278d0
commit
2d77622476
@ -23,15 +23,14 @@ struct RangeIterR{ // step < 0
|
||||
};
|
||||
|
||||
struct ArrayIter{
|
||||
PyVar ref;
|
||||
PyVar* begin;
|
||||
PyObject* ref;
|
||||
PyVar* end;
|
||||
PyVar* current;
|
||||
|
||||
ArrayIter(PyVar ref, PyVar* begin, PyVar* end)
|
||||
: ref(ref), begin(begin), end(end), current(begin) {}
|
||||
ArrayIter(PyObject* ref, PyVar* begin, PyVar* end)
|
||||
: ref(ref), end(end), current(begin) {}
|
||||
|
||||
void _gc_mark(VM* vm) const{ PK_OBJ_MARK(ref); }
|
||||
void _gc_mark(VM* vm) const{ vm->__obj_gc_mark(ref); }
|
||||
static void _register(VM* vm, PyVar mod, PyVar type);
|
||||
};
|
||||
|
||||
|
||||
@ -995,7 +995,7 @@ void __init_builtins(VM* _vm) {
|
||||
});
|
||||
_vm->bind__iter__(VM::tp_list, [](VM* vm, PyVar _0) {
|
||||
List& self = _CAST(List&, _0);
|
||||
return vm->new_user_object<ArrayIter>(_0, self.begin(), self.end());
|
||||
return vm->new_user_object<ArrayIter>(_0.get(), self.begin(), self.end());
|
||||
});
|
||||
_vm->bind__getitem__(VM::tp_list, PyArrayGetItem<List>);
|
||||
_vm->bind__setitem__(VM::tp_list, [](VM* vm, PyVar _0, PyVar _1, PyVar _2){
|
||||
@ -1057,7 +1057,7 @@ void __init_builtins(VM* _vm) {
|
||||
|
||||
_vm->bind__iter__(VM::tp_tuple, [](VM* vm, PyVar _0) {
|
||||
Tuple& self = _CAST(Tuple&, _0);
|
||||
return vm->new_user_object<ArrayIter>(_0, self.begin(), self.end());
|
||||
return vm->new_user_object<ArrayIter>(_0.get(), self.begin(), self.end());
|
||||
});
|
||||
_vm->bind__getitem__(VM::tp_tuple, PyArrayGetItem<Tuple>);
|
||||
_vm->bind__len__(VM::tp_tuple, [](VM* vm, PyVar obj) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user