Comment #2 on issue 585 by hapalibashi: v8::Array::Length unresolved external symbol in r3658
http://code.google.com/p/v8/issues/detail?id=585

I had worked around, but today I looked closer.

v8.h defines (u)int32_t as (unsigned)int, whereas cstdint, Boost (C99) define it as (unsigned)long.

To avoid the "ambiguous typedef" errors I commented out the typedefs in v8.h, however, this led to the link problems (several symbols were missing, I only noticed Array Length() in January).

So I changed my local definition of (u)int_32t in Boost to match V8 and it links.

I tried changing the typedef in v8.h to use long and rebuilt but there were warnings:

src\assembler.cc(173) : warning C4244: '=' : conversion from 'uint32_t' to 'v8::internal::byte', possible loss of data src\assembler.cc(193) : warning C4244: '=' : conversion from 'uint32_t' to 'v8::internal::byte', possible loss of data

According to a Google and a quick test, long and int are both 4 bytes on 32bit and 64bit Windows, I supposed this should be safe to ignore. Is V8 out of step with its definition of (u)int32_t?


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to