Skip to content

Commit 5febd2e

Browse files
authored
Optimize list removal lock usage (RustPython#8451)
Assisted-by: WarpForgeAgent:DeepSeek-v4-flash
1 parent 184db11 commit 5febd2e

3 files changed

Lines changed: 9 additions & 6 deletions

File tree

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ repos:
4242

4343
- id: generate-rs-opcode-metadata
4444
name: generate rust opcode metadata
45-
entry: python tools/opcode_metadata/generate_rs_opcode_metadata.py
45+
entry: python3 tools/opcode_metadata/generate_rs_opcode_metadata.py
4646
files: '^(crates/compiler-core/src/bytecode/instruction\.rs|tools/opcode_metadata/*)$'
4747
pass_filenames: false
4848
language: system
@@ -53,7 +53,7 @@ repos:
5353

5454
- id: generate-py-opcode-metadata
5555
name: generate python opcode metadata
56-
entry: python tools/opcode_metadata/generate_py_opcode_metadata.py
56+
entry: python3 tools/opcode_metadata/generate_py_opcode_metadata.py
5757
files: '^(crates/compiler-core/src/bytecode/instruction\.rs|tools/opcode_metadata/*)$'
5858
pass_filenames: false
5959
language: system

crates/vm/src/builtins/list.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,15 @@ impl PyList {
372372

373373
if let Some(index) = index.into() {
374374
// defer delete out of borrow
375-
let is_inside_range = index < self.borrow_vec().len();
376-
Ok(is_inside_range.then(|| self.borrow_vec_mut().remove(index)))
375+
let removed = {
376+
let mut elements = self.borrow_vec_mut();
377+
(index < elements.len()).then(|| elements.remove(index))
378+
};
379+
drop(removed);
380+
Ok(())
377381
} else {
378382
Err(vm.new_value_error(format!("'{}' is not in list", needle.str(vm)?)))
379383
}
380-
.map(drop)
381384
}
382385

383386
fn _delitem(&self, needle: &PyObject, vm: &VirtualMachine) -> PyResult<()> {

scripts/check_redundant_patches.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python
1+
#!/usr/bin/env python3
22
import argparse
33
import ast
44
import glob

0 commit comments

Comments
 (0)