Summary: | use AtomicString to speed up window and document interceptors | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Antony Sargent <asargent> | ||||||
Component: | WebCore Misc. | Assignee: | Antony Sargent <asargent> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | dglazkov | ||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | PC | ||||||||
OS: | OS X 10.5 | ||||||||
Attachments: |
|
Description
Antony Sargent
2009-04-17 16:02:47 PDT
Created attachment 29590 [details]
patch v1
Comment on attachment 29590 [details] patch v1 Looks good. > + http://codereview.chromium.org/67141 Don't need Chromium review in ChangeLog, probably. Just mention it on bug. Comment on attachment 29590 [details]
patch v1
WebKit uses DEFINE_STATIC_LOCAL for local statics. The Mac build will have trouble if we don't here too.
// Use these to declare and define a static local variable (static T;) so that
// it is leaked so that its destructors are not called at exit. Using this
// macro also allows workarounds a compiler bug present in Apple's version of GCC 4.0.1.
#if COMPILER(GCC) && defined(__APPLE_CC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 0 && __GNUC_PATCHLEVEL__ == 1
#define DEFINE_STATIC_LOCAL(type, name, arguments) \
static type* name##Ptr = new type arguments; \
type& name = *name##Ptr
#else
#define DEFINE_STATIC_LOCAL(type, name, arguments) \
static type& name = *new type arguments
#endif
cc-ing Dimitri so he can see my comments. Created attachment 29896 [details]
patch v2
Switched to using DEFINE_STATIC_LOCAL. Thanks for catching this Eric!
Comment on attachment 29896 [details]
patch v2
Looks fine. Will land.
Do we have any performance tests which show that this is actually faster? I'm going to land it as-is... but it seems this sort of change should have some perf-data associated with it. Committing to http://svn.webkit.org/repository/webkit/trunk ... M WebCore/ChangeLog M WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp M WebCore/bindings/v8/custom/V8HTMLDocumentCustom.cpp Committed r43022 Whoops. Last patch actually introduced variable redefinition. Fixing... Fix landed in http://trac.webkit.org/changeset/43066. |