Skip to content
Snippets Groups Projects
Commit 560d7acc authored by wlott's avatar wlott
Browse files

Initial revision

parent 1f4a317d
No related branches found
No related tags found
No related merge requests found
;;; -*- Package: C; Log: C.Log -*-
;;;
;;; **********************************************************************
;;; This code was written as part of the Spice Lisp project at
;;; Carnegie-Mellon University, and has been placed in the public domain.
;;; If you want to use this code or any part of Spice Lisp, please contact
;;; Scott Fahlman (FAHLMAN@CMUC).
;;; **********************************************************************
;;;
;;; This file contains support for collecting dynamic vop statistics.
;;;
(in-package "C")
(export '(*collect-dynamic-statistics*))
(export '(count-me))
(defvar *collect-dynamic-statistics* nil
"When T, emit extra code to collect dynamic statistics about vop usages.")
(defvar *dynamic-counts-tn* nil
"Holds the TN for the counts vector.")
(defstruct (dyncount-info
(:print-function %print-dyncount-info))
for
(counts (required-argument) :type (simple-array (unsigned-byte 32) (*)))
(vops (required-argument) :type simple-vector))
(defprinter dyncount-info
for
counts
vops)
(defun setup-dynamic-count-info (component)
(let* ((info (ir2-component-dyncount-info (component-info component)))
(vops (dyncount-info-vops info)))
(do-ir2-blocks (block component)
(when (ir2-block-start-vop block)
(let* ((1block (ir2-block-block block))
(index (1- (block-number 1block)))
(counts (svref vops index)))
(do ((vop (ir2-block-start-vop block) (vop-next vop)))
((null vop))
(let* ((vop-name (vop-info-name (vop-info vop)))
(entry (assoc vop-name counts :test #'eq)))
(if entry
(incf (cdr entry))
(setf counts (acons vop-name 1 counts)))))
(setf (svref vops index) counts))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment