make array iter smaller

This commit is contained in:
blueloveTH 2024-05-26 02:14:39 +08:00
parent 4c15f278d0
commit 2d77622476
2 changed files with 6 additions and 7 deletions

View File

@ -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);
};

View File

@ -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) {