Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Unified Diff: Source/bindings/dart/DartScriptWrappable.h

Issue 611833004: [multivm] Re-split fields for V8 and Dart wrappers. (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/multivm
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/bindings/core/v8/V8ScriptWrappable.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « Source/bindings/core/v8/V8ScriptWrappable.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698