2011-05-19 Vitaly Repeshko <vitalyr@chromium.org>
authorvitalyr@chromium.org <vitalyr@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 May 2011 08:48:35 +0000 (08:48 +0000)
committervitalyr@chromium.org <vitalyr@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 May 2011 08:48:35 +0000 (08:48 +0000)
commitabdaf9e2f1d6101ffc1366c4e69f135315e33b3e
treefdee85836148b96977e86801c62abfe5867bca92
parent06c4e46bc46d6d21fe0017320c4cad1fd2448a4a
2011-05-19  Vitaly Repeshko  <vitalyr@chromium.org>

        Reviewed by Adam Barth.

        [V8] Explicitly mark objects with complex GC rules.
        https://bugs.webkit.org/show_bug.cgi?id=61131

        From the GC point view there are two kinds of objects: the ones
        that may participate in object grouping (i.e. their lifetime
        depends on other objects) and the ones that never participate in
        grouping (independent). V8 added support for marking persistent
        handles as independent so that the GC can process the objects they
        hold faster. The motivating use case here is typed arrays.

        This patch adds V8-specific inherited IDL attribute
        V8DependentLifetime to types used in V8GCController, which is
        exactly the set of types with object lifetimes depending on other
        objects. The handles for the types that are not marked with the
        new attribute can be marked as independent and GC-ed faster.

        * bindings/scripts/CodeGeneratorV8.pm: Added proccessing of the new attribute.

        Updated test output:
        * bindings/scripts/test/V8/V8TestInterface.cpp:
        (WebCore::V8TestInterface::wrapSlow):
        * bindings/scripts/test/V8/V8TestInterface.h:
        * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp:
        (WebCore::V8TestMediaQueryListListener::wrapSlow):
        * bindings/scripts/test/V8/V8TestMediaQueryListListener.h:
        * bindings/scripts/test/V8/V8TestObj.cpp:
        (WebCore::V8TestObj::wrapSlow):
        * bindings/scripts/test/V8/V8TestObj.h:
        * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
        (WebCore::V8TestSerializedScriptValueInterface::wrapSlow):
        * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:

        Added the new attribute:
        * css/CSSRule.idl:
        * css/CSSRuleList.idl:
        * css/CSSStyleDeclaration.idl:
        * css/CSSValue.idl:
        * css/StyleSheet.idl:
        * css/StyleSheetList.idl:
        * dom/DOMImplementation.idl:
        * dom/Node.idl:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@87063 268f45cc-cd09-0410-ab3c-d52691b4dbfc
18 files changed:
Source/WebCore/ChangeLog
Source/WebCore/bindings/scripts/CodeGeneratorV8.pm
Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h
Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h
Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestObj.h
Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h
Source/WebCore/css/CSSRule.idl
Source/WebCore/css/CSSRuleList.idl
Source/WebCore/css/CSSStyleDeclaration.idl
Source/WebCore/css/CSSValue.idl
Source/WebCore/css/StyleSheet.idl
Source/WebCore/css/StyleSheetList.idl
Source/WebCore/dom/DOMImplementation.idl
Source/WebCore/dom/Node.idl