[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

dglazkov at chromium.org dglazkov at chromium.org
Thu Apr 8 00:37:25 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 7b074310089ea9d1995e80eae90b169b2b4b538e
Author: dglazkov at chromium.org <dglazkov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Dec 15 19:55:33 2009 +0000

    2009-12-15  Dimitri Glazkov  <dglazkov at chromium.org>
    
            Reviewed by Eric Seidel.
    
            [V8] Generate trivial named property getters.
            https://bugs.webkit.org/show_bug.cgi?id=32562
    
            Covered by existing tests.
    
            * bindings/scripts/CodeGeneratorV8.pm: Added GenerateImplementationNamedPropertyGetter.
            * bindings/v8/V8Collection.h:
            (WebCore::getNamedPropertyOfCollection): Fixed a booboo by using AtomicString like we're supposed to.
            * bindings/v8/V8DOMWrapper.cpp:
            (WebCore::V8DOMWrapper::getTemplate): Removed code that's now generated.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52166 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9283785..e3f3ec1 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2009-12-15  Dimitri Glazkov  <dglazkov at chromium.org>
+
+        Reviewed by Eric Seidel.
+
+        [V8] Generate trivial named property getters.
+        https://bugs.webkit.org/show_bug.cgi?id=32562
+
+        Covered by existing tests.
+
+        * bindings/scripts/CodeGeneratorV8.pm: Added GenerateImplementationNamedPropertyGetter.
+        * bindings/v8/V8Collection.h:
+        (WebCore::getNamedPropertyOfCollection): Fixed a booboo by using AtomicString like we're supposed to.
+        * bindings/v8/V8DOMWrapper.cpp:
+        (WebCore::V8DOMWrapper::getTemplate): Removed code that's now generated.
+
 2009-12-15  Brian Weinstein  <bweinstein at apple.com>
 
         Reviewed by Timothy Hatcher.
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 9b6349f..5961946 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -1158,6 +1158,22 @@ END
     }
 }
 
+sub GenerateImplementationNamedPropertyGetter
+{
+    my $dataNode = shift;
+    my $namedPropertyGetter = shift;
+    my $interfaceName = $dataNode->name;
+
+    if ($dataNode->extendedAttributes->{"HasNameGetter"} && !$namedPropertyGetter->extendedAttributes->{"Custom"}) {
+        $implIncludes{"V8Collection.h"} = 1;
+        my $type = $namedPropertyGetter->type;
+        my $classIndex = uc($type);
+        push(@implContent, <<END);
+  setCollectionNamedGetter<${interfaceName}, ${type}>(desc, V8ClassIndex::${classIndex});
+END
+    }
+}
+
 sub GenerateImplementation
 {
     my $object = shift;
@@ -1247,6 +1263,7 @@ sub GenerateImplementation
     }
 
     my $indexer;
+    my $namedPropertyGetter;
     # Generate methods for functions.
     foreach my $function (@{$dataNode->functions}) {
         # hack for addEventListener/RemoveEventListener
@@ -1261,6 +1278,10 @@ sub GenerateImplementation
             $indexer = $function->signature;
         }
 
+        if ($function->signature->name eq "namedItem") {
+            $namedPropertyGetter = $function->signature;
+        }
+
         # If the function does not need domain security check, we need to
         # generate an access getter that returns different function objects
         # for different calling context.
@@ -1446,6 +1467,7 @@ END
     }
 
     GenerateImplementationIndexer($dataNode, $indexer) if $indexer;
+    GenerateImplementationNamedPropertyGetter($dataNode, $namedPropertyGetter) if $namedPropertyGetter;
 
     # Define our functions with Set() or SetAccessor()
     $total_functions = 0;
diff --git a/WebCore/bindings/v8/V8Collection.h b/WebCore/bindings/v8/V8Collection.h
index 8dea839..6961d5a 100644
--- a/WebCore/bindings/v8/V8Collection.h
+++ b/WebCore/bindings/v8/V8Collection.h
@@ -65,7 +65,7 @@ namespace WebCore {
         V8ClassIndex::V8WrapperType wrapperType = V8DOMWrapper::domWrapperType(object);
         ASSERT(wrapperType != V8ClassIndex::NODE);
         Collection* collection = V8DOMWrapper::convertToNativeObject<Collection>(wrapperType, object);
-        String propertyName = toWebCoreString(name);
+        AtomicString propertyName = toAtomicWebCoreStringWithNullCheck(name);
         return getV8Object<ItemType>(collection->namedItem(propertyName), implementationType);
     }
 
diff --git a/WebCore/bindings/v8/V8DOMWrapper.cpp b/WebCore/bindings/v8/V8DOMWrapper.cpp
index 4263e73..29c7726 100644
--- a/WebCore/bindings/v8/V8DOMWrapper.cpp
+++ b/WebCore/bindings/v8/V8DOMWrapper.cpp
@@ -347,9 +347,6 @@ v8::Persistent<v8::FunctionTemplate> V8DOMWrapper::getTemplate(V8ClassIndex::V8W
         instanceTemplate->SetInternalFieldCount(V8Custom::kStyleSheetInternalFieldCount);
         break;
     }
-    case V8ClassIndex::MIMETYPEARRAY:
-        setCollectionNamedGetter<MimeTypeArray, MimeType>(descriptor, V8ClassIndex::MIMETYPE);
-        break;
     case V8ClassIndex::NAMEDNODEMAP: {
         // We add an extra internal field to hold a reference to the owner node.
         v8::Local<v8::ObjectTemplate> instanceTemplate = descriptor->InstanceTemplate();
@@ -368,12 +365,6 @@ v8::Persistent<v8::FunctionTemplate> V8DOMWrapper::getTemplate(V8ClassIndex::V8W
     case V8ClassIndex::NODELIST:
         descriptor->InstanceTemplate()->SetNamedPropertyHandler(USE_NAMED_PROPERTY_GETTER(NodeList));
         break;
-    case V8ClassIndex::PLUGIN:
-        setCollectionNamedGetter<Plugin, MimeType>(descriptor, V8ClassIndex::MIMETYPE);
-        break;
-    case V8ClassIndex::PLUGINARRAY:
-        setCollectionNamedGetter<PluginArray, Plugin>(descriptor, V8ClassIndex::PLUGIN);
-        break;
     case V8ClassIndex::STYLESHEETLIST:
         descriptor->InstanceTemplate()->SetNamedPropertyHandler(USE_NAMED_PROPERTY_GETTER(StyleSheetList));
         break;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list