diff options
Diffstat (limited to 'lib/nimbase.h')
-rw-r--r-- | lib/nimbase.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/lib/nimbase.h b/lib/nimbase.h index 818bff462..a5d2616e7 100644 --- a/lib/nimbase.h +++ b/lib/nimbase.h @@ -402,16 +402,29 @@ struct TFrame { NI16 calldepth; }; -#define nimfr(proc, file) \ - TFrame FR; \ - FR.procname = proc; FR.filename = file; FR.line = 0; FR.len = 0; nimFrame(&FR); +#ifdef NIM_NEW_MANGLING_RULES + #define nimfr_(proc, file) \ + TFrame FR_; \ + FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_); -#define nimfrs(proc, file, slots, length) \ - struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR; \ - FR.procname = proc; FR.filename = file; FR.line = 0; FR.len = length; nimFrame((TFrame*)&FR); + #define nimfrs_(proc, file, slots, length) \ + struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \ + FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_); -#define nimln(n, file) \ - FR.line = n; FR.filename = file; + #define nimln_(n, file) \ + FR_.line = n; FR_.filename = file; +#else + #define nimfr(proc, file) \ + TFrame FR; \ + FR.procname = proc; FR.filename = file; FR.line = 0; FR.len = 0; nimFrame(&FR); + + #define nimfrs(proc, file, slots, length) \ + struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR; \ + FR.procname = proc; FR.filename = file; FR.line = 0; FR.len = length; nimFrame((TFrame*)&FR); + + #define nimln(n, file) \ + FR.line = n; FR.filename = file; +#endif #define NIM_POSIX_INIT __attribute__((constructor)) |