@@ -235,7 +235,15 @@ typedef intptr_t i_int;
235235
236236// Stack management
237237
238−#define INITFRAME VAL* myoldbase
238+#ifdef IDRIS_TRACE
239+#define TRACE idris_trace(vm, __FUNCTION__, __LINE__);
240+#else
241+#define TRACE
242+#endif
243+
244+#define INITFRAME TRACE\
245+ VAL* myoldbase
246+
239247#define REBASE vm->valstack_base = oldbase
240248#define RESERVE(x) if (vm->valstack_top+(x) > vm->stack_max) { stackOverflow(); } \
241249 else { memset(vm->valstack_top, 0, (x)*sizeof(VAL)); }
@@ -348,6 +356,7 @@ VM* idris_getSender(Msg* msg);
348356int idris_getChannel(Msg* msg);
349357void idris_freeMsg(Msg* msg);
350358
359+void idris_trace(VM* vm, const char* func, int line);
351360void dumpVal(VAL r);
352361void dumpStack(VM* vm);
353362