Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Auto-format: cargo fmt --all
  • Loading branch information
github-actions[bot] committed Mar 3, 2026
commit 981dafd5207746f9f84fc2497b564a65f15cf34c
3 changes: 2 additions & 1 deletion crates/vm/src/builtins/builtin_func.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,8 @@ fn vectorcall_native_function(
pos_args.extend(args.into_iter().take(nargs));

if let Some(kwnames_slice) = kwnames {
let kwargs = FuncArgs::from_vectorcall(&pos_args, total_pos, Some(kwnames_slice)).kwargs;
let kwargs =
FuncArgs::from_vectorcall(&pos_args, total_pos, Some(kwnames_slice)).kwargs;
FuncArgs {
args: pos_args,
kwargs,
Expand Down
39 changes: 10 additions & 29 deletions crates/vm/src/frame.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3935,8 +3935,7 @@ impl ExecutingFrame<'_> {
&& cached_version != 0
{
let nargs_usize = nargs as usize;
let pos_args: Vec<PyObjectRef> =
self.pop_multiple(nargs_usize).collect();
let pos_args: Vec<PyObjectRef> = self.pop_multiple(nargs_usize).collect();
let self_or_null = self.pop_value_opt();
let callable = self.pop_value();
let (args_vec, effective_nargs) = if let Some(self_val) = self_or_null {
Expand Down Expand Up @@ -3968,20 +3967,14 @@ impl ExecutingFrame<'_> {
&& cached_version != 0
{
let nargs_usize = nargs as usize;
let pos_args: Vec<PyObjectRef> =
self.pop_multiple(nargs_usize).collect();
let pos_args: Vec<PyObjectRef> = self.pop_multiple(nargs_usize).collect();
let self_val = self.pop_value();
let callable = self.pop_value();
let mut args_vec = Vec::with_capacity(nargs_usize + 1);
args_vec.push(self_val);
args_vec.extend(pos_args);
let result = vectorcall_function(
&callable,
args_vec,
nargs_usize + 1,
None,
vm,
)?;
let result =
vectorcall_function(&callable, args_vec, nargs_usize + 1, None, vm)?;
self.push_value(result);
Ok(None)
} else {
Expand Down Expand Up @@ -4248,8 +4241,7 @@ impl ExecutingFrame<'_> {
.downcast_ref::<PyTuple>()
.expect("kwarg names should be tuple");
let kw_count = kwarg_names_tuple.len();
let all_args: Vec<PyObjectRef> =
self.pop_multiple(nargs_usize).collect();
let all_args: Vec<PyObjectRef> = self.pop_multiple(nargs_usize).collect();
let self_or_null = self.pop_value_opt();
let callable = self.pop_value();
let pos_count = nargs_usize - kw_count;
Expand Down Expand Up @@ -4293,22 +4285,16 @@ impl ExecutingFrame<'_> {
.downcast_ref::<PyTuple>()
.expect("kwarg names should be tuple");
let kw_count = kwarg_names_tuple.len();
let all_args: Vec<PyObjectRef> =
self.pop_multiple(nargs_usize).collect();
let all_args: Vec<PyObjectRef> = self.pop_multiple(nargs_usize).collect();
let self_val = self.pop_value();
let callable = self.pop_value();
let pos_count = nargs_usize - kw_count;
let mut args_vec = Vec::with_capacity(nargs_usize + 1);
args_vec.push(self_val);
args_vec.extend(all_args);
let kwnames = kwarg_names_tuple.as_slice();
let result = vectorcall_function(
&callable,
args_vec,
pos_count + 1,
Some(kwnames),
vm,
)?;
let result =
vectorcall_function(&callable, args_vec, pos_count + 1, Some(kwnames), vm)?;
self.push_value(result);
return Ok(None);
}
Expand Down Expand Up @@ -5807,11 +5793,7 @@ impl ExecutingFrame<'_> {
let has_self = self_or_null.is_some();

let pos_count = nargs_usize - kw_count;
let effective_nargs = if has_self {
pos_count + 1
} else {
pos_count
};
let effective_nargs = if has_self { pos_count + 1 } else { pos_count };

// Build the full args slice: positional (including self) + kwarg values
let total_args = effective_nargs + kw_count;
Expand All @@ -5828,8 +5810,7 @@ impl ExecutingFrame<'_> {
self.state.stack.truncate(callable_idx);

let kwnames = kwarg_names_tuple.as_slice();
let result =
callable_obj.vectorcall(args_vec, effective_nargs, Some(kwnames), vm)?;
let result = callable_obj.vectorcall(args_vec, effective_nargs, Some(kwnames), vm)?;
self.push_value(result);
Ok(None)
}
Expand Down
6 changes: 3 additions & 3 deletions crates/vm/src/types/slot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,9 @@ pub(crate) type GenericMethod = fn(&PyObject, FuncArgs, &VirtualMachine) -> PyRe
/// nargs: number of positional args (self prepended by caller if needed).
/// kwnames: keyword argument names (last kwnames.len() entries in args are kwarg values).
pub(crate) type VectorCallFunc = fn(
&PyObject, // callable
Vec<PyObjectRef>, // owned args (positional + kwarg values)
usize, // nargs (positional count)
&PyObject, // callable
Vec<PyObjectRef>, // owned args (positional + kwarg values)
usize, // nargs (positional count)
Option<&[PyObjectRef]>, // kwnames (keyword argument names)
&VirtualMachine,
) -> PyResult;
Expand Down
Loading