@@ -76,14 +76,12 @@ pub(crate) fn set_frame_arguments(
76
76
callee_lfp : Lfp ,
77
77
caller_lfp : Lfp ,
78
78
callid : CallSiteId ,
79
- src : * const Value ,
80
- pos_num : usize ,
81
79
) -> Result < ( ) > {
82
80
let callee_fid = callee_lfp. meta ( ) . func_id ( ) ;
83
81
let callee = & globals. store [ callee_fid] ;
84
82
let caller = & globals. store [ callid] ;
85
83
86
- positional ( caller, callee, src , pos_num , callee_lfp, caller_lfp) ?;
84
+ positional ( caller, callee, callee_lfp, caller_lfp) ?;
87
85
if !callee. no_keyword ( ) || !caller. kw_may_exists ( ) {
88
86
handle_keyword ( callee, caller, callee_lfp, caller_lfp) ?;
89
87
}
@@ -158,7 +156,7 @@ pub(crate) extern "C" fn jit_generic_set_arguments(
158
156
let caller = & globals. store [ caller] ;
159
157
let callee_fid = meta. func_id ( ) ;
160
158
let callee = & globals. store [ callee_fid] ;
161
- match positional ( caller, callee, src , caller . pos_num , callee_lfp, caller_lfp) {
159
+ match positional ( caller, callee, callee_lfp, caller_lfp) {
162
160
Ok ( _) => Some ( Value :: nil ( ) ) ,
163
161
Err ( err) => {
164
162
vm. set_error ( err) ;
@@ -173,15 +171,15 @@ pub(crate) extern "C" fn jit_generic_set_arguments(
173
171
fn positional (
174
172
caller : & CallSiteInfo ,
175
173
callee : & FuncInfo ,
176
- src : * const Value ,
177
- pos_num : usize ,
178
174
mut callee_lfp : Lfp ,
179
175
caller_lfp : Lfp ,
180
176
) -> Result < ( ) > {
181
177
let max_pos = callee. max_positional_args ( ) ;
182
178
let no_push = callee. discard_excess_positional_args ( ) ;
183
179
let splat_pos = & caller. splat_pos ;
180
+ let src = caller_lfp. register_ptr ( caller. args . 0 as usize ) as _ ;
184
181
let dst = callee_lfp. register_ptr ( 1 ) as * mut Value ;
182
+ let pos_num = caller. pos_num ;
185
183
186
184
let ex = if callee. no_keyword ( ) && caller. kw_may_exists ( ) {
187
185
// handle excessive keyword arguments
0 commit comments