TRACE now handles the new bytecodes format, and SI::BC-SPLIT now outputs an array with the data of a bytecodes function.

This commit is contained in:
jjgarcia 2003-11-25 15:56:21 +00:00
parent 713c5ad0b1
commit 02fddd850d
2 changed files with 11 additions and 7 deletions

View file

@ -715,10 +715,13 @@ cl_object
si_bc_split(cl_object b)
{
cl_object vector;
cl_object data;
if (type_of(b) != t_bytecodes)
@(return Cnil Cnil)
vector = cl_alloc_simple_vector(b->bytecodes.code_size, aet_fix);
vector->vector.self.fix = b->bytecodes.code;
@(return b->bytecodes.lex vector)
vector = cl_alloc_simple_vector(b->bytecodes.code_size, aet_b8);
vector->vector.self.b8 = b->bytecodes.code;
data = cl_alloc_simple_vector(b->bytecodes.data_size, aet_object);
data->vector.self.t = b->bytecodes.data;
@(return b->bytecodes.lex vector data)
}

View file

@ -187,10 +187,11 @@ SI::ARGS."
(defun tracing-body (fname &aux (fun (symbol-function fname)))
(when (functionp fun)
(let ((bytecodes (si::bc-split fun)))
(when bytecodes
(dotimes (i (length bytecodes))
(when (eq (aref bytecodes i) +tracing-block+)
(multiple-value-bind (env code data)
(si::bc-split fun)
(when data
(dotimes (i (length data))
(when (eq (aref data i) +tracing-block+)
(return-from tracing-body t))))))
nil)