Thread overview
[Issue 942] New: a delegate defaults to 8 byte alignment when 4 byte is sufficient
Feb 09, 2007
d-bugmail
Mar 20, 2007
d-bugmail
Jul 02, 2007
d-bugmail
Aug 14, 2010
Don
Aug 14, 2010
nfxjfg@gmail.com
Aug 14, 2010
Mark Guidarelli
Aug 16, 2010
Don
Aug 16, 2010
nfxjfg@gmail.com
February 09, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=942

           Summary: a delegate defaults to 8 byte alignment when 4 byte is
                    sufficient
           Product: D
           Version: 1.005
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: patch
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: guido@grumpy-cat.com


Delegate variables default to 8 byte alignment.  Delegates consist of two pointer elements and should use 4 byte alignment instead.

The TypeDelegate struct does not override "unsigned alignsize()" from Type and defaults to using "d_uns64 size(Loc loc)" to determine the alignment, which is PTRSIZE * 2.  mtype.c could be updated as follows:

struct TypeDelegate : Type
{
    TypeDelegate(Type *t);
    Type *syntaxCopy();
    Type *semantic(Loc loc, Scope *sc);
    d_uns64 size(Loc loc);
+   unsigned alignsize();
    void toCBuffer2(OutBuffer *buf, Identifier *ident, HdrGenState *hgs);
    Expression *defaultInit();
    int isZeroInit();
    int checkBoolean();
    TypeInfoDeclaration *getTypeInfoDeclaration();
    Expression *dotExp(Scope *sc, Expression *e, Identifier *ident);
    int hasPointers();

    type *toCtype();
};

d_uns64 TypeDelegate::size(Loc loc)
{
    return PTRSIZE * 2;
}

+unsigned TypeDelegate::alignsize()
+{
+    // A Delegate consists of two ptr-sized values, so align it on pointer
size
+    // boundary
+    return PTRSIZE;
+}


-- 

March 20, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=942


bugzilla@digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WONTFIX




------- Comment #1 from bugzilla@digitalmars.com  2007-03-20 02:35 -------
Doing this fix would break backwards compatibility, so I don't think this can be changed at this point.


-- 

July 02, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=942


guido@grumpy-cat.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|WONTFIX                     |




------- Comment #2 from guido@grumpy-cat.com  2007-07-02 16:33 -------
Given all of the changes to D in 2.0, including adding new keywords, I don't believe "breaking backwards compatibility" should be an issue.


-- 

August 14, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |RESOLVED
                 CC|                            |clugdbug@yahoo.com.au
         Resolution|                            |WONTFIX


--- Comment #3 from Don <clugdbug@yahoo.com.au> 2010-08-13 22:35:16 PDT ---
Cases where Walter closes bugs as WONTFIX are so rare, that you have to respect that.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 14, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942


nfxjfg@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nfxjfg@gmail.com


--- Comment #4 from nfxjfg@gmail.com 2010-08-13 22:58:30 PDT ---
(In reply to comment #1)
> Doing this fix would break backwards compatibility, so I don't think this can be changed at this point.

What backward compatibility? Show me the D code that can't simply be recompiled using a fixed ABI.

Please be reminded that this would create stupid special cases in alternative compiler implementations AND C headers which try to use D types containing delegates.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 14, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942



--- Comment #5 from Mark Guidarelli <guido@grumpy-cat.com> 2010-08-13 23:52:24 PDT ---
I have long ago abandoned using D.  The fact that it took 3+ years to close this bug (incorrectly I might add) validates I made the correct choice.  D is nothing more than a play-thing for Walter, no serious commercial work will ever be shipped using it.  I submitted many bug reports and patches all of which were ignored by Walter.  I will spend my time improving viable projects like LLVM and Google's Go.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 15, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942


bearophile_hugs@eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs@eml.cc


--- Comment #6 from bearophile_hugs@eml.cc 2010-08-15 15:45:05 PDT ---
Answer to comment 3: It's true that WONTFIX from Walter are quite uncommon. But here no enough explanations are given to why this change would break backwards compatibility. So I think it's positive to have a bit of some more discussion here.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 16, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942



--- Comment #7 from Don <clugdbug@yahoo.com.au> 2010-08-16 00:03:50 PDT ---
(In reply to comment #6)
> Answer to comment 3: It's true that WONTFIX from Walter are quite uncommon. But here no enough explanations are given to why this change would break backwards compatibility. So I think it's positive to have a bit of some more discussion here.

Yes. But reopening a WONTFIX bug just because you don't like the answer is
inappropriate. Frankly, I think it was exceedingly rude.
Note that there's nothing still open about this particular bug: Walter said no.
The deeper problem is the absence of a roadmap. Better would be to create a bug
report about the unambiguous state of the ABI.

Note that this is a particularly dangerous breaking of the ABI: it silently changes the generated code without warning. This makes it quite different to things like name mangling changes, which always generate linking errors. Nonetheless, the presence of bugs like bug 3398, which was only recently fixed, does mean it's rather naive to think that the ABI is completely stable at present.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 16, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942



--- Comment #8 from bearophile_hugs@eml.cc 2010-08-16 04:51:09 PDT ---
Don:

> But reopening a WONTFIX bug just because you don't like the answer is
inappropriate. Frankly, I think it was exceedingly rude.

I have just added a comment. I have not reopened it. I think that adding a comment doesn't reopen the bug, so someone else has done it.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 16, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=942



--- Comment #9 from nfxjfg@gmail.com 2010-08-16 09:56:25 PDT ---
(In reply to comment #7)
> Note that there's nothing still open about this particular bug: Walter said no.

Walter is wrong and the argument of binary compatibility is ridiculous. Little issues like these should be resolved as quickly as possible because they are annoying and only cause headaches for everyone. Maybe comment #5 isn't so wrong here. There are many more issues similar to this bug report, and unlike this bug, cause actual problems in practice. But Walter doesn't seem to care. Sucks for the user, huh?

> Nonetheless, the presence of bugs like bug 3398, which was only recently fixed, does mean it's rather naive to think that the ABI is completely stable at present.

There you say it.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------