/* Sun-$Revision: 23.3 $ */ /* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University. See the LICENSE file for license information. */ /* control stuff for instruction tracing with shade */ /* C not C++ for compatibility with shade */ # pragma interface # define NTRBUF 50 /* size of trace buffer */ # define MAGIC 123456789 typedef enum TraceFun { TraceOff, TraceOn, TraceClear, TracePrint, TraceFinish } TraceFun; typedef struct TraceControl { int magic; /* must have value MAGIC */ int ack; /* set to 1 by tracer when data received */ TraceFun fn; /* 1 = switch tracing on, 0 = switch off */ int niranges; /* # of address ranges to trace (instructions) */ char* irange[50*3]; /* 3 entries per address range: */ /* 1. = name, 2./3. = [start..end) */ /* name == NULL means dont trace this range */ int ndranges; /* # of data address ranges */ char* drange[50*3]; /* 3 entries per address range: */ /* 1. = name, 2./3. = [start..end) */ } TraceControl; /* encoding for TypeTestStart */ # define tt_immediateOnlyMask (1 << 9) # define tt_prologueMask (1 << 8) # define tt_arityMask ((1 << 7) - 1) # if defined(SIC_COMPILER) && !defined(NOASM) oop itrace_prim(oop onoff, oop mode); void itrace(bool onoff); # endif