shithub: mc

ref: d4bb1a020b60fe906dfa7ee2a12cc4fee1513e6a
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
}