Index: generic/xotcl.decls =================================================================== diff -u -r2da271ea64afbde77c0b4608164d5f666edd1a69 -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotcl.decls (.../xotcl.decls) (revision 2da271ea64afbde77c0b4608164d5f666edd1a69) +++ generic/xotcl.decls (.../xotcl.decls) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -127,9 +127,9 @@ declare 29 generic { void XOTclStackDump (Tcl_Interp *interp) } -declare 30 generic { - void XOTclCallStackDump (Tcl_Interp *interp) -} +#declare 30 generic { +# void XOTclCallStackDump (Tcl_Interp *interp) +#} #declare 31 generic { # void XOTclDeprecatedMsg(char *oldCmd, char *newCmd) #} Index: generic/xotclDecls.h =================================================================== diff -u -r2da271ea64afbde77c0b4608164d5f666edd1a69 -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotclDecls.h (.../xotclDecls.h) (revision 2da271ea64afbde77c0b4608164d5f666edd1a69) +++ generic/xotclDecls.h (.../xotclDecls.h) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -152,11 +152,7 @@ /* 29 */ EXTERN void XOTclStackDump (Tcl_Interp * interp); #endif -#ifndef XOTclCallStackDump_TCL_DECLARED -#define XOTclCallStackDump_TCL_DECLARED -/* 30 */ -EXTERN void XOTclCallStackDump (Tcl_Interp * interp); -#endif +/* Slot 30 is reserved */ /* Slot 31 is reserved */ #ifndef XOTclSetObjClientData_TCL_DECLARED #define XOTclSetObjClientData_TCL_DECLARED @@ -275,7 +271,7 @@ int (*xOTclErrBadVal_) (Tcl_Interp * interp, char * expected, char * value); /* 27 */ int (*xOTclObjErrType) (Tcl_Interp * interp, Tcl_Obj * nm, char * wt, char * parameterName); /* 28 */ void (*xOTclStackDump) (Tcl_Interp * interp); /* 29 */ - void (*xOTclCallStackDump) (Tcl_Interp * interp); /* 30 */ + void *reserved30; void *reserved31; void (*xOTclSetObjClientData) (XOTcl_Object * obj, ClientData data); /* 32 */ ClientData (*xOTclGetObjClientData) (XOTcl_Object * obj); /* 33 */ @@ -392,10 +388,7 @@ #define XOTclStackDump \ (xotclStubsPtr->xOTclStackDump) /* 29 */ #endif -#ifndef XOTclCallStackDump -#define XOTclCallStackDump \ - (xotclStubsPtr->xOTclCallStackDump) /* 30 */ -#endif +/* Slot 30 is reserved */ /* Slot 31 is reserved */ #ifndef XOTclSetObjClientData #define XOTclSetObjClientData \ Index: generic/xotclStack.c =================================================================== diff -u -r485f041db31fc83046fbeba0d3e64beeb1abca1f -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotclStack.c (.../xotclStack.c) (revision 485f041db31fc83046fbeba0d3e64beeb1abca1f) +++ generic/xotclStack.c (.../xotclStack.c) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -266,4 +266,41 @@ Tcl_PopCallFrame(interp); } } + +void +XOTclCallStackDump(Tcl_Interp *interp) { + XOTclCallStack *cs = &RUNTIME_STATE(interp)->cs; + XOTclCallStackContent *cscPtr; + int i=1, entries = cs->top - cs->content; + + fprintf (stderr, " XOTCL CALLSTACK: (%d entries, top: %p) \n", entries, cs->top); + for (cscPtr = &cs->content[1]; cscPtr <= cs->top; cscPtr++) { + fprintf(stderr, " %d: %p ",i++,cscPtr); + if (cscPtr->self) + fprintf(stderr, "OBJ %s (%p), ", ObjStr(cscPtr->self->cmdName), cscPtr->self); + if (cscPtr->cl) + fprintf(stderr, "INSTPROC %s->", className(cscPtr->cl)); + else + fprintf(stderr, "PROC "); + /* + fprintf(stderr, " cmd %p, obj %p, epoch %d, ", + cscPtr->cmdPtr, cscPtr->self, cscPtr->cmdPtr ? Tcl_Command_cmdEpoch(cscPtr->cmdPtr) : -1); + */ + if (cscPtr->cmdPtr && !Tcl_Command_cmdEpoch(cscPtr->cmdPtr)) + fprintf(stderr, "%s (%p), ", Tcl_GetCommandName(interp, (Tcl_Command)cscPtr->cmdPtr), + cscPtr->cmdPtr); + else + fprintf(stderr, "NULL, "); + + fprintf(stderr, "frameType: %d, ", cscPtr->frameType); + fprintf(stderr, "callType: %d ", cscPtr->callType); + + fprintf(stderr, "cframe %p ", cscPtr->currentFramePtr); + if (cscPtr->currentFramePtr) + fprintf(stderr,"l=%d ",Tcl_CallFrame_level(cscPtr->currentFramePtr)); + + fprintf(stderr, "\n"); + } +} + #endif /* NOT TCL85STACK */ Index: generic/xotclStack85.c =================================================================== diff -u -r091d3c94b06fd94c8e2bf39f806c43483909e2af -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotclStack85.c (.../xotclStack85.c) (revision 091d3c94b06fd94c8e2bf39f806c43483909e2af) +++ generic/xotclStack85.c (.../xotclStack85.c) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -424,7 +424,7 @@ object->activationCount --; /* fprintf(stderr, "decr activationCount for %s to %d cscPtr->cl %p\n", objectName(cscPtr->self), - csc->self->activationCount, cscPtr->cl);*/ + cscPtr->self->activationCount, cscPtr->cl);*/ if (object->activationCount < 1 && object->flags & XOTCL_DESTROY_CALLED) { CallStackDoDestroy(interp, object); Index: generic/xotclStubInit.c =================================================================== diff -u -re476fd3814e139958bab9cacbd8e2f8def632d00 -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotclStubInit.c (.../xotclStubInit.c) (revision e476fd3814e139958bab9cacbd8e2f8def632d00) +++ generic/xotclStubInit.c (.../xotclStubInit.c) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -66,7 +66,7 @@ XOTclErrBadVal_, /* 27 */ XOTclObjErrType, /* 28 */ XOTclStackDump, /* 29 */ - XOTclCallStackDump, /* 30 */ + NULL, /* 30 */ NULL, /* 31 */ XOTclSetObjClientData, /* 32 */ XOTclGetObjClientData, /* 33 */ Index: generic/xotclTrace.c =================================================================== diff -u -rf6775105babd749f662856c7eff1a903636e80e0 -r46968ac6fcde3c5046aa0ede9a0e4c349e868de4 --- generic/xotclTrace.c (.../xotclTrace.c) (revision f6775105babd749f662856c7eff1a903636e80e0) +++ generic/xotclTrace.c (.../xotclTrace.c) (revision 46968ac6fcde3c5046aa0ede9a0e4c349e868de4) @@ -60,50 +60,6 @@ DECR_REF_COUNT(varCmdObj); } -#if !defined(TCL85STACK) -void -XOTclCallStackDump(Tcl_Interp *interp) { - XOTclCallStack *cs = &RUNTIME_STATE(interp)->cs; - XOTclCallStackContent *csc; - int i=1, entries = cs->top - cs->content; - - fprintf (stderr, " XOTCL CALLSTACK: (%d entries, top: %p) \n", entries, cs->top); - for (csc = &cs->content[1]; csc <= cs->top; csc++) { - fprintf(stderr, " %d: %p ",i++,csc); - if (csc->self) - fprintf(stderr, "OBJ %s (%p), ", ObjStr(csc->self->cmdName), csc->self); - if (csc->cl) - fprintf(stderr, "INSTPROC %s->", className(csc->cl)); - else - fprintf(stderr, "PROC "); - /* - fprintf(stderr, " cmd %p, obj %p, epoch %d, ", - csc->cmdPtr, csc->self, csc->cmdPtr ? Tcl_Command_cmdEpoch(csc->cmdPtr) : -1); - */ - if (csc->cmdPtr && !Tcl_Command_cmdEpoch(csc->cmdPtr)) - fprintf(stderr, "%s (%p), ", Tcl_GetCommandName(interp, (Tcl_Command)csc->cmdPtr), - csc->cmdPtr); - else - fprintf(stderr, "NULL, "); - - fprintf(stderr, "frameType: %d, ", csc->frameType); - fprintf(stderr, "callType: %d ", csc->callType); - -#if !defined(TCL85STACK) - fprintf(stderr, "cframe %p ", csc->currentFramePtr); - if (csc->currentFramePtr) - fprintf(stderr,"l=%d ",Tcl_CallFrame_level(csc->currentFramePtr)); -#endif - - fprintf(stderr, "\n"); - } -} -#else -void XOTclCallStackDump(Tcl_Interp *interp) { - /* dummy function, since this is referenced in stubs table */ -} -#endif - void XOTclPrintObjv(char *string, int objc, Tcl_Obj *CONST objv[]) { int j;