Files
ldc/runtime/internal/invariant.d
Frits van Bommel a517adb426 Adjust runtime for recent ABI change on x86-64, since member functions are no
longer equivalent to regular functions with `this` as their first argument.
(They weren't anyway, but it happened to work as long as there was no `sret`
parameter)
2009-05-31 14:27:01 +02:00

29 lines
527 B
D

/*
* Placed into the Public Domain
* written by Walter Bright
* www.digitalmars.com
*/
extern(C) void _d_invariant(Object o)
{ ClassInfo c;
//printf("__d_invariant(%p)\n", o);
// BUG: needs to be filename/line of caller, not library routine
assert(o !is null); // just do null check, not invariant check
c = o.classinfo;
do
{
if (c.classInvariant)
{
void delegate() inv;
inv.ptr = cast(void*) o;
inv.funcptr = c.classInvariant;
inv();
}
c = c.base;
} while (c);
}