Hi Niels, First of all:
Wow! That's great! Now for the helpful bit... Looking at what clang generates for things taking NSRect as the argument, the only thing I can think of is to wonder if you forgot to add the byval attribute on the arguments? And did you set the alignment to 8 on the attribute? If the stack slot used for the argument has the incorrect alignment then this would give similar results to what you see... David On 28 Mar 2012, at 08:54, Niels Grewe wrote: > Hi guys, > > I finally took the time to complete the AMD64 ABI support in > LanguageKit and most of the ABI related boxing/unboxing failures in the > Smalltalk test-suite are now fixed. But there is one particularly puzzling > issue with the NSRect test: > From stepi-ing through the test and comparing it with what clang > generates for equivalent function calls (which is a bit of an > hit-an-miss thing due to sparse debug info), we seem to correctly > classify the NSRect structure and expect it on the stack when returning > from -rectValue, but when passing it back to +valueWithRect: we are 16 > bytes off. That means that we're placing the origin where the size > belongs and some other part of the stack in the origin part of the > NSRect. NSSize or NSPoint are not affected by this because they are > small enough to be passed in registers with the AMD64 ABI (at least LK > gets that part right!). > I'm a bit at a loss as to what might be causing this and would > appreciate any pointers. > > Cheers, > > Niels > _______________________________________________ > Etoile-dev mailing list > [email protected] > https://mail.gna.org/listinfo/etoile-dev -- Sent from my Cray X1 _______________________________________________ Etoile-dev mailing list [email protected] https://mail.gna.org/listinfo/etoile-dev
