diff options
-rw-r--r-- | generic/tclNRE.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/generic/tclNRE.h b/generic/tclNRE.h index af12f1e..db02520 100644 --- a/generic/tclNRE.h +++ b/generic/tclNRE.h @@ -87,9 +87,14 @@ typedef struct NRE_stack { return (result) #else /* no trampoline, optimized sibcalls */ -#define NRE_JUMP(interp,postProcPtr,data0,data1,data2) \ - TclNRAddCallback((interp),(postProcPtr),(data0),(data1),(data2)); \ - NRE_NEXT(TCL_OK) +#define NRE_JUMP(interp,postProcPtr,data0,data1,data2) \ + do { \ + NRE_callback *cbPtr; \ + ALLOC_CB(interp, cbPtr); \ + ++TOP_CB(interp); \ + INIT_CB(cbPtr, postProcPtr,data0,data1,data2); \ + return (postProcPtr)(cbPtr->data, interp, (result)); \ + } while (0) #define NRE_NEXT(result) \ do { /* optimized indirect sibling calls?! */ \ NRE_callback *cbPtr; \ |