| Index: Source/bindings/dart/DartScriptWrappable.h
|
| diff --git a/Source/bindings/dart/DartScriptWrappable.h b/Source/bindings/dart/DartScriptWrappable.h
|
| index 4e576521720c0651b4ca933c5cf39c9a46aec84c..562b1d1a5f249376b0da2f5407e7442c8f994908 100644
|
| --- a/Source/bindings/dart/DartScriptWrappable.h
|
| +++ b/Source/bindings/dart/DartScriptWrappable.h
|
| @@ -37,41 +37,26 @@ namespace blink {
|
|
|
| class DartWrapperInfo {
|
| public:
|
| - ScriptWrappable::TaggedPointer v8WrapperOrEmpty;
|
| void* domData;
|
| void* wrapper;
|
| };
|
|
|
| class DartMultiWrapperInfo {
|
| public:
|
| - ScriptWrappable::TaggedPointer v8WrapperOrEmpty;
|
| Vector<void*> domDatas;
|
| Vector<void*> wrappers;
|
| };
|
|
|
| -inline ScriptWrappable::TaggedPointer ScriptWrappable::getV8WrapperOrEmpty() const
|
| -{
|
| - if (LIKELY(m_wrapper.isV8WrapperOrEmpty())) {
|
| - return m_wrapper;
|
| - }
|
| - if (UNLIKELY(m_wrapper.isDartWrapperInfo())) {
|
| - return m_wrapper.dartWrapperInfo()->v8WrapperOrEmpty;
|
| - }
|
| - ASSERT(m_wrapper.isDartMultiWrapperInfo());
|
| - return m_wrapper.dartMultiWrapperInfo()->v8WrapperOrEmpty;
|
| -}
|
| -
|
| void ScriptWrappable::setDartWrapper(void* domData, void* wrapper)
|
| {
|
| ASSERT(domData);
|
| - if (LIKELY(m_wrapper.isEmpty() || m_wrapper.isV8Wrapper())) {
|
| + if (LIKELY(m_dartWrapperInfo.isEmpty())) {
|
| DartWrapperInfo* wrapperInfo = new DartWrapperInfo;
|
| - wrapperInfo->v8WrapperOrEmpty = m_wrapper;
|
| wrapperInfo->domData = domData;
|
| wrapperInfo->wrapper = wrapper;
|
| - m_wrapper = TaggedPointer(wrapperInfo);
|
| - } else if (m_wrapper.isDartWrapperInfo()) {
|
| - DartWrapperInfo* wrapperInfo = m_wrapper.dartWrapperInfo();
|
| + m_dartWrapperInfo = TaggedPointer(wrapperInfo);
|
| + } else if (m_dartWrapperInfo.isDartWrapperInfo()) {
|
| + DartWrapperInfo* wrapperInfo = m_dartWrapperInfo.dartWrapperInfo();
|
| if (wrapperInfo->domData == domData) {
|
| // Replace the current wrapper (e.g., upgrading a custom element).
|
| wrapperInfo->wrapper = wrapper;
|
| @@ -80,7 +65,7 @@ void ScriptWrappable::setDartWrapper(void* domData, void* wrapper)
|
| ASSERT_NOT_REACHED();
|
| }
|
| } else {
|
| - ASSERT(m_wrapper.isDartMultiWrapperInfo());
|
| + ASSERT(m_dartWrapperInfo.isDartMultiWrapperInfo());
|
| // Replace or append wrapper, unimplemented.
|
| ASSERT_NOT_REACHED();
|
| }
|
| @@ -89,15 +74,15 @@ void ScriptWrappable::setDartWrapper(void* domData, void* wrapper)
|
| void* ScriptWrappable::getDartWrapper(void* domData) const
|
| {
|
| ASSERT(domData);
|
| - if (m_wrapper.isDartWrapperInfo()) {
|
| - DartWrapperInfo* wrapperInfo = m_wrapper.dartWrapperInfo();
|
| + if (m_dartWrapperInfo.isDartWrapperInfo()) {
|
| + DartWrapperInfo* wrapperInfo = m_dartWrapperInfo.dartWrapperInfo();
|
| if (wrapperInfo->domData == domData) {
|
| return wrapperInfo->wrapper;
|
| }
|
| return 0;
|
| }
|
| - if (m_wrapper.isDartMultiWrapperInfo()) {
|
| - DartMultiWrapperInfo* wrapperInfo = m_wrapper.dartMultiWrapperInfo();
|
| + if (m_dartWrapperInfo.isDartMultiWrapperInfo()) {
|
| + DartMultiWrapperInfo* wrapperInfo = m_dartWrapperInfo.dartMultiWrapperInfo();
|
| for (unsigned i = 0; i < wrapperInfo->domDatas.size(); ++i) {
|
| if (wrapperInfo->domDatas.at(i) == domData) {
|
| return wrapperInfo->wrappers.at(i);
|
| @@ -105,18 +90,18 @@ void* ScriptWrappable::getDartWrapper(void* domData) const
|
| }
|
| return 0;
|
| }
|
| - ASSERT(m_wrapper.isEmpty() || m_wrapper.isV8Wrapper());
|
| + ASSERT(m_wrapper.isEmpty());
|
| return 0;
|
| }
|
|
|
| void ScriptWrappable::clearDartWrapper(void* wrapper)
|
| {
|
| - if (LIKELY(m_wrapper.isDartWrapperInfo())) {
|
| - DartWrapperInfo* wrapperInfo = m_wrapper.dartWrapperInfo();
|
| + if (LIKELY(m_dartWrapperInfo.isDartWrapperInfo())) {
|
| + DartWrapperInfo* wrapperInfo = m_dartWrapperInfo.dartWrapperInfo();
|
| // ASSERT(Dart_IdentityEquals(wrapper, wrapperInfo->wrapper));
|
| - m_wrapper = wrapperInfo->v8WrapperOrEmpty;
|
| + m_dartWrapperInfo = TaggedPointer();
|
| delete wrapperInfo;
|
| - } else if (m_wrapper.isDartMultiWrapperInfo()) {
|
| + } else if (m_dartWrapperInfo.isDartMultiWrapperInfo()) {
|
| // Remove or deflate, unimplemented.
|
| ASSERT_NOT_REACHED();
|
| } else {
|
|
|