shithub: mc

ref: e1e17a5cc5a65c21dec6a77ea4147a58610497f2
dir: /lib/std/backtrace+x64.myr/

View raw version
use "types"

pkg std =
	const backtrace	: (pc	: void#[:] -> std.size)
;;

type stackrec = struct
	next	: stackrec#
	pc	: void#
;;

extern const getbp	: (-> stackrec#)
const backtrace = {pc
	var bp, i, len

	i = 0
	len = pc.len
	bp = getbp()
	while bp != (0 : stackrec#) && i < len
		pc[i++] = bp.pc
		bp = bp.next
	;;
	-> i
}