On Wed, 10 Mar 2010, Jan Dubois wrote:
> 
> So from my point of view Devel-NYTProf is working just fine on Windows
> (at least 32-bit; haven't tried it with 64-bit in a while).

Ok, so I did try to build it on Win64 again, and it all compiles and the
test suite doesn't throw any errors.

I went in and cleaned up various type mismatches though, and noticed that
the XS code uses "long" and "unsigned long" types in various places.

This doesn't really make much sense; the type should be either just "int"
and "unsigned int" if 32 bits will always be big enough, or "UV" and "IV"
when they need to be able to hold a size_t.  There is no guarantee that
sizeof(long) > sizeof(int), and there is no guarantee either that
sizeof(long) >= sizeof(size_t).

For example in 64-bit Perl on Windows these types are 8 bytes:

    IV, UV, STRLEN, size_t, char*

but all these are just 4 bytes:

    int, long, unsigned, unsigned long, I32

So whenever I need to cast e.g. a UV to (unsigned long) I'm wondering if there
isn't a subtle bug hiding somewhere.

So ideally someone should do an audit and make an explicit decision for
each "long" type if they need to be big enough to hold a pointer, or not.
I don't have time for that right now though.

Devel-NYTProf passes all tests on 32 and 64-bit Windows for all Perl versions
and compilers that I tested. I'm not sure if it is completely functional
though, as I see some noise about "ignored #line directives for autosplit
files" and warnings about negative time values.  But again, I don't have
any more time to spend on this right now.

Cheers,
-Jan

-- 
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.

Group hosted at:  http://groups.google.com/group/develnytprof-dev
Project hosted at:  http://perl-devel-nytprof.googlecode.com
CPAN distribution:  http://search.cpan.org/dist/Devel-NYTProf

To post, email:  [email protected]
To unsubscribe, email:  [email protected]

Reply via email to