[Webkit-unassigned] [Bug 101740] [Qt][ARM][MIPS]REGRESSION(r133953): It broke the build

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Nov 15 04:24:30 PST 2012


https://bugs.webkit.org/show_bug.cgi?id=101740





--- Comment #29 from Balazs Kilvady <kilvadyb at homejinni.com>  2012-11-15 04:26:19 PST ---
(In reply to comment #22)
> Any idea?

It's a very hacky solution but if with keeping templates much performance gain can be achieved then:
By the error messages the problem comes up when the body of the 3 inline functions from the JIT.h header should be linked. We could force the compiler to compile in the template codes instantiated with all the 3 type parameters with a simple function in JITPropertyAccess32_64.cpp:

void forceTemplateCompilation()
{
    emitInt32PutByVal(currentInstruction, badType); // emitGenericContiguousPutByVal<(unsigned char)20>
    emitDoublePutByVal(currentInstruction, badType);
    emitContiguousPutByVal(currentInstruction, badType);
}

This function shouldn't be called ever but as an exportable one the compiler cannot optimize out the 3 version of the template whichever ENABLE_/USE_ macro combination are used. This function would be "Objective-C like private: not mentioned in the header).

As I tested the compilation the problems come from that that the above listed 3 functions declared in JIT.h so for <(unsigned char)20>, <(unsigned char)22>, <(unsigned char)26> the template codes of emitGenericContiguousPutByVal<> should be in the object file compiled from the cpp file which contains the template body. But with some ENABLE_ macro configurations the compiler sees that some of the 3 functions not used in JITPropertyAccess32_64.cpp so not compiled in.

I can't test it in EFL build env.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list