Changeset 110004 in webkit


Ignore:
Timestamp:
Mar 6, 2012 7:53:17 PM (12 years ago)
Author:
haraken@chromium.org
Message:

Unreviewed, rolling out r109969.
http://trac.webkit.org/changeset/109969
https://bugs.webkit.org/show_bug.cgi?id=80376

layout tests crash

  • bindings/v8/V8HiddenPropertyName.cpp:

(WebCore):
(WebCore::V8HiddenPropertyName::hiddenReferenceName):

  • bindings/v8/V8HiddenPropertyName.h:

(WebCore):
(V8HiddenPropertyName):

  • bindings/v8/custom/V8DOMStringMapCustom.cpp:

(WebCore::toV8):

  • bindings/v8/custom/V8DOMTokenListCustom.cpp:

(WebCore::toV8):

  • bindings/v8/custom/V8NamedNodeMapCustom.cpp:

(WebCore::toV8):

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r110003 r110004  
     12012-03-06  Kentaro Hara  <haraken@chromium.org>
     2
     3        Unreviewed, rolling out r109969.
     4        http://trac.webkit.org/changeset/109969
     5        https://bugs.webkit.org/show_bug.cgi?id=80376
     6
     7        layout tests crash
     8
     9        * bindings/v8/V8HiddenPropertyName.cpp:
     10        (WebCore):
     11        (WebCore::V8HiddenPropertyName::hiddenReferenceName):
     12        * bindings/v8/V8HiddenPropertyName.h:
     13        (WebCore):
     14        (V8HiddenPropertyName):
     15        * bindings/v8/custom/V8DOMStringMapCustom.cpp:
     16        (WebCore::toV8):
     17        * bindings/v8/custom/V8DOMTokenListCustom.cpp:
     18        (WebCore::toV8):
     19        * bindings/v8/custom/V8NamedNodeMapCustom.cpp:
     20        (WebCore::toV8):
     21
    1222012-03-06  Kentaro Hara  <haraken@chromium.org>
    223
  • trunk/Source/WebCore/bindings/v8/V8HiddenPropertyName.cpp

    r109969 r110004  
    3434#include "V8Binding.h"
    3535#include <string.h>
    36 #include <wtf/StdLibExtras.h>
    3736#include <wtf/Vector.h>
    3837
     
    4241#define V8_AS_STRING_IMPL(x) #x
    4342
    44 #define V8_DEFINE_HIDDEN_PROPERTY(name, prefix) \
     43#define V8_DEFINE_PROPERTY(name) \
    4544v8::Handle<v8::String> V8HiddenPropertyName::name() \
    4645{ \
    47     DEFINE_STATIC_LOCAL(v8::Persistent<v8::String>, hiddenPropertyName, (createString(prefix V8_AS_STRING(name)))); \
    48     return hiddenPropertyName; \
     46    V8HiddenPropertyName* hiddenPropertyName = V8BindingPerIsolateData::current()->hiddenPropertyName(); \
     47    if (hiddenPropertyName->m_##name.IsEmpty()) { \
     48        hiddenPropertyName->m_##name = createString("WebCore::HiddenProperty::" V8_AS_STRING(name)); \
     49    } \
     50    return hiddenPropertyName->m_##name; \
    4951}
    5052
    51 V8_HIDDEN_PROPERTIES(V8_DEFINE_HIDDEN_PROPERTY);
     53V8_HIDDEN_PROPERTIES(V8_DEFINE_PROPERTY);
     54
     55static const char hiddenReferenceNamePrefix[] = "WebCore::HiddenReference::";
    5256
    5357v8::Handle<v8::String> V8HiddenPropertyName::hiddenReferenceName(const char* name)
    5458{
    5559    Vector<char, 64> prefixedName;
    56     prefixedName.append(V8_HIDDEN_REFERENCE_PREFIX, sizeof(V8_HIDDEN_REFERENCE_PREFIX) - 1);
     60    prefixedName.append(hiddenReferenceNamePrefix, sizeof(hiddenReferenceNamePrefix) - 1);
    5761    ASSERT(name && strlen(name));
    5862    prefixedName.append(name, strlen(name));
  • trunk/Source/WebCore/bindings/v8/V8HiddenPropertyName.h

    r109969 r110004  
    3636namespace WebCore {
    3737
    38 #define V8_HIDDEN_PROPERTY_PREFIX "WebCore::HiddenProperty::"
    39 #define V8_HIDDEN_REFERENCE_PREFIX "WebCore::HiddenReference::"
     38#define V8_HIDDEN_PROPERTIES(V) \
     39    V(objectPrototype) \
     40    V(listener) \
     41    V(attributeListener) \
     42    V(scriptState) \
     43    V(devtoolsInjectedScript) \
     44    V(sleepFunction) \
     45    V(toStringString) \
     46    V(event) \
     47    V(state)
    4048
    41 #define V8_HIDDEN_PROPERTIES(V) \
    42     V(objectPrototype, V8_HIDDEN_PROPERTY_PREFIX) \
    43     V(listener, V8_HIDDEN_PROPERTY_PREFIX) \
    44     V(attributeListener, V8_HIDDEN_PROPERTY_PREFIX) \
    45     V(scriptState, V8_HIDDEN_PROPERTY_PREFIX) \
    46     V(devtoolsInjectedScript, V8_HIDDEN_PROPERTY_PREFIX) \
    47     V(sleepFunction, V8_HIDDEN_PROPERTY_PREFIX) \
    48     V(toStringString, V8_HIDDEN_PROPERTY_PREFIX) \
    49     V(event, V8_HIDDEN_PROPERTY_PREFIX) \
    50     V(state, V8_HIDDEN_PROPERTY_PREFIX) \
    51     V(domStringMap, V8_HIDDEN_REFERENCE_PREFIX) \
    52     V(domTokenList, V8_HIDDEN_REFERENCE_PREFIX) \
    53     V(ownerNode, V8_HIDDEN_REFERENCE_PREFIX)
    5449
    5550    class V8HiddenPropertyName {
    5651    public:
    5752        V8HiddenPropertyName() { }
    58 #define V8_DECLARE_PROPERTY(name, prefix) static v8::Handle<v8::String> name();
     53#define V8_DECLARE_PROPERTY(name) static v8::Handle<v8::String> name();
    5954        V8_HIDDEN_PROPERTIES(V8_DECLARE_PROPERTY);
    6055#undef V8_DECLARE_PROPERTY
     
    6459    private:
    6560        static v8::Persistent<v8::String> createString(const char* key);
     61#define V8_DECLARE_FIELD(name) v8::Persistent<v8::String> m_##name;
     62        V8_HIDDEN_PROPERTIES(V8_DECLARE_FIELD);
     63#undef V8_DECLARE_FIELD
    6664    };
    6765
  • trunk/Source/WebCore/bindings/v8/custom/V8DOMStringMapCustom.cpp

    r110003 r110004  
    9292    // Add a hidden reference from the element to the DOMStringMap.
    9393    Element* element = impl->element();
    94     if (!wrapper.IsEmpty() && element)
    95         toV8(element).As<v8::Object>()->SetHiddenValue(V8HiddenPropertyName::domStringMap(), wrapper);
     94    if (!wrapper.IsEmpty() && element) {
     95        v8::Handle<v8::Value> elementValue = toV8(element);
     96        if (!elementValue.IsEmpty() && elementValue->IsObject())
     97            V8DOMWrapper::setNamedHiddenReference(elementValue.As<v8::Object>(), "domStringMap", wrapper);
     98    }
    9699    return wrapper;
    97100}
  • trunk/Source/WebCore/bindings/v8/custom/V8DOMTokenListCustom.cpp

    r110003 r110004  
    4646    // Add a hidden reference from the element to the DOMTokenList.
    4747    Element* element = impl->element();
    48     if (!wrapper.IsEmpty() && element)
    49         toV8(element).As<v8::Object>()->SetHiddenValue(V8HiddenPropertyName::domTokenList(), wrapper);
     48    if (!wrapper.IsEmpty() && element) {
     49        v8::Handle<v8::Value> elementValue = toV8(element);
     50        if (!elementValue.IsEmpty() && elementValue->IsObject())
     51            V8DOMWrapper::setNamedHiddenReference(elementValue.As<v8::Object>(), "domTokenList", wrapper);
     52    }
    5053    return wrapper;
    5154}
  • trunk/Source/WebCore/bindings/v8/custom/V8NamedNodeMapCustom.cpp

    r109969 r110004  
    8080    Element* element = impl->element();
    8181    if (!wrapper.IsEmpty() && element)
    82         toV8(element).As<v8::Object>()->SetHiddenValue(V8HiddenPropertyName::ownerNode(), wrapper);
     82        V8DOMWrapper::setNamedHiddenReference(wrapper, "ownerNode", toV8(element));
    8383    return wrapper;
    8484}
Note: See TracChangeset for help on using the changeset viewer.