* libguile/programs.c (parse_arity): Lookup rtl-program-minimum-arity
from (system vm debug).
* module/system/vm/debug.scm (find-first-arity): Fix the linear search.
Whoops!
if (scm_is_false (rtl_program_minimum_arity) && scm_module_system_booted_p)
rtl_program_minimum_arity =
- scm_c_private_variable ("system vm debug",
+ scm_c_private_variable ("system vm program",
"rtl-program-minimum-arity");
l = scm_call_1 (scm_variable_ref (rtl_program_minimum_arity), program);
(let lp ((pos headers-start))
(cond
((>= pos headers-end) #f)
- ((< text-offset (arity-low-pc* bv pos))
- (lp (+ pos arity-header-len)))
- ((< (arity-high-pc* bv pos) text-offset)
+ ((< text-offset (* (arity-low-pc* bv pos) 4))
#f)
+ ((<= (* (arity-high-pc* bv pos) 4) text-offset)
+ (lp (+ pos arity-header-len)))
(else
(make-arity context base pos))))))