I spent a little bit more time with this to be able to come up with a reduced testcase. The plan is to file a bug with Apple on the toolchain part of the issue. Eventually, I realized that all four of the cases were the same toolchain issue.
V8's use of statics inside inline functions was not improper. A program will only wind up with one definition of such static data when it occurs inside methods and static methods, even when inlined, per the C++ spec. This is different from the behavior of static data inside inlined C functions. The actual toolchain bug is as I described it before. Knowing what I now know about it, I can say that I can't find any other affected static variables within mksnapshot. It's possible that others are present in other areas of v8, however. The fix I sent out yesterday that's now been rolled into v8 still appears to me to be the best way to work around this bug. I just wanted to make clear to everyone that the old code was not wrong, it just happened to trigger a bug in the Apple toolchain Mark --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
