Mercurial > projects > ldc
comparison dmd/class.c @ 809:69a5e4a6fc0f
Changed some hardcoded offset/alignment for classes in DMD, broke offsets for 64bits.
Changed ClassInfo generation to no longer access the default initializer of ClassInfo, fixes problems with index mismatch.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 30 Nov 2008 20:22:09 +0100 |
parents | 50383e476c7e |
children | 330f999ade44 |
comparison
equal
deleted
inserted
replaced
808:4ad1e7b10378 | 809:69a5e4a6fc0f |
---|---|
549 alignsize = baseClass->alignsize; | 549 alignsize = baseClass->alignsize; |
550 // if (isnested) | 550 // if (isnested) |
551 // sc->offset += PTRSIZE; // room for uplevel context pointer | 551 // sc->offset += PTRSIZE; // room for uplevel context pointer |
552 } | 552 } |
553 else | 553 else |
554 { sc->offset = 8; // allow room for vptr[] and monitor | 554 { sc->offset = 2*PTRSIZE; // allow room for vptr[] and monitor |
555 alignsize = 4; | 555 alignsize = PTRSIZE; |
556 } | 556 } |
557 structsize = sc->offset; | 557 structsize = sc->offset; |
558 Scope scsave = *sc; | 558 Scope scsave = *sc; |
559 int members_dim = members->dim; | 559 int members_dim = members->dim; |
560 sizeok = 0; | 560 sizeok = 0; |
1137 sc->parent = this; | 1137 sc->parent = this; |
1138 if (isCOMinterface()) | 1138 if (isCOMinterface()) |
1139 sc->linkage = LINKwindows; | 1139 sc->linkage = LINKwindows; |
1140 sc->structalign = 8; | 1140 sc->structalign = 8; |
1141 structalign = sc->structalign; | 1141 structalign = sc->structalign; |
1142 sc->offset = 8; | 1142 sc->offset = 2*PTRSIZE; |
1143 inuse++; | 1143 inuse++; |
1144 for (i = 0; i < members->dim; i++) | 1144 for (i = 0; i < members->dim; i++) |
1145 { | 1145 { |
1146 Dsymbol *s = (Dsymbol *)members->data[i]; | 1146 Dsymbol *s = (Dsymbol *)members->data[i]; |
1147 s->semantic(sc); | 1147 s->semantic(sc); |