Skip to content

Commit f2fbb07

Browse files
authored
Merge pull request RustPython#1837 from RustPython/coolreader18/prep-multithread
Prep some things for threading
2 parents 8b23271 + 7ae0244 commit f2fbb07

25 files changed

+374
-316
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/test/list_tests.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -565,8 +565,6 @@ def __iter__(self):
565565
raise KeyboardInterrupt
566566
self.assertRaises(KeyboardInterrupt, list, F())
567567

568-
# TODO: RUSTPYTHON
569-
@unittest.expectedFailure
570568
def test_exhausted_iterator(self):
571569
a = self.type2test([1, 2, 3])
572570
exhit = iter(a)

vm/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ foreign-types = "0.3"
7373
num_enum = "0.4"
7474
smallbox = "0.8"
7575
bstr = "0.2.12"
76+
crossbeam-utils = "0.7"
7677

7778
flame = { version = "0.2", optional = true }
7879
flamer = { version = "0.3", optional = true }

vm/src/builtins.rs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
//!
33
//! Implements functions listed here: https://docs.python.org/3/library/builtins.html
44
5-
use std::cell::Cell;
65
use std::char;
76
use std::str;
87

@@ -261,14 +260,7 @@ fn make_scope(vm: &VirtualMachine, scope: ScopeArgs) -> PyResult<Scope> {
261260
let globals = match globals {
262261
Some(dict) => {
263262
if !dict.contains_key("__builtins__", vm) {
264-
let builtins_dict = vm
265-
.builtins
266-
.dict
267-
.as_ref()
268-
.unwrap()
269-
.borrow()
270-
.as_object()
271-
.clone();
263+
let builtins_dict = vm.builtins.dict().unwrap().as_object().clone();
272264
dict.set_item("__builtins__", builtins_dict, vm).unwrap();
273265
}
274266
dict
@@ -679,12 +671,9 @@ fn builtin_reversed(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult {
679671
vm.get_method_or_type_error(obj.clone(), "__getitem__", || {
680672
"argument to reversed() must be a sequence".to_owned()
681673
})?;
682-
let len = vm.call_method(&obj.clone(), "__len__", PyFuncArgs::default())?;
683-
let obj_iterator = objiter::PySequenceIterator {
684-
position: Cell::new(objint::get_value(&len).to_isize().unwrap() - 1),
685-
obj: obj.clone(),
686-
reversed: true,
687-
};
674+
let len = vm.call_method(&obj, "__len__", PyFuncArgs::default())?;
675+
let len = objint::get_value(&len).to_isize().unwrap();
676+
let obj_iterator = objiter::PySequenceIterator::new_reversed(obj, len);
688677
Ok(obj_iterator.into_ref(vm).into_object())
689678
}
690679
}

0 commit comments

Comments
 (0)