mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 06:22:25 +00:00
More adjustments to ADDRESS vs LONGINT. An -O2 on 64 bit compiler has worked once!
This commit is contained in:
parent
7b8eed9993
commit
cca132d784
201 changed files with 1468 additions and 1456 deletions
|
|
@ -243,10 +243,16 @@ static inline double SYSTEM_ABSD(double i) {return i >= 0.0 ? i : -i;}
|
|||
#define __CASECHK __HALT(-4)
|
||||
#define __WITHCHK __HALT(-7)
|
||||
|
||||
#define __IS(tag, typ, level) (*(tag-(__BASEOFF-level))==(LONGINT)(address)typ##__typ)
|
||||
#define __TYPEOF(p) ((LONGINT*)(address)(*(((LONGINT*)(p))-1)))
|
||||
|
||||
//#define __IS(tag, typ, level) (*(tag-(__BASEOFF-level))==(LONGINT)(address)typ##__typ)
|
||||
//#define __TYPEOF(p) ((address*)(address)(*(((LONGINT*)(p))-1)))
|
||||
//#define __ISP(p, typ, level) __IS(__TYPEOF(p),typ,level)
|
||||
|
||||
#define __IS(tag, typ, level) (*(tag-(__BASEOFF-level))==(address)typ##__typ)
|
||||
#define __TYPEOF(p) ((address*)(address)(*(((address*)(p))-1)))
|
||||
#define __ISP(p, typ, level) __IS(__TYPEOF(p),typ,level)
|
||||
|
||||
|
||||
#define __GUARDP(p, typ, level) ((typ*)(__ISP(p,typ,level)?p:(__HALT(-5),p)))
|
||||
#define __GUARDR(r, typ, level) (*((typ*)(__IS(r##__typ,typ,level)?r:(__HALT(-5),r))))
|
||||
#define __GUARDA(p, typ, level) ((struct typ*)(__IS(__TYPEOF(p),typ,level)?p:(__HALT(-5),p)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue