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

Side by Side Diff: Source/bindings/v8/V8DOMWrapper.h

Issue 314603003: Don't add extra 8 byte to DOM wrappers in non-oilpan builds (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 { 80 {
81 // see V8WindowShell::installDOMWindow() comment for why this version is needed and safe. 81 // see V8WindowShell::installDOMWindow() comment for why this version is needed and safe.
82 ASSERT(wrapper->InternalFieldCount() >= 2); 82 ASSERT(wrapper->InternalFieldCount() >= 2);
83 ASSERT(object); 83 ASSERT(object);
84 ASSERT(wrapperTypeInfo); 84 ASSERT(wrapperTypeInfo);
85 #if ENABLE(OILPAN) 85 #if ENABLE(OILPAN)
86 ASSERT(wrapperTypeInfo->gcType != RefCountedObject); 86 ASSERT(wrapperTypeInfo->gcType != RefCountedObject);
87 #else 87 #else
88 ASSERT(wrapperTypeInfo->gcType == RefCountedObject || wrapperTypeInfo->g cType == WillBeGarbageCollectedObject); 88 ASSERT(wrapperTypeInfo->gcType == RefCountedObject || wrapperTypeInfo->g cType == WillBeGarbageCollectedObject);
89 #endif 89 #endif
90
91 // Clear out the last internal field, which is assumed to contain a vali d persistent pointer value.
92 if (wrapperTypeInfo->gcType == GarbageCollectedObject) {
93 wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCoun t() - 1, 0);
94 } else if (wrapperTypeInfo->gcType == WillBeGarbageCollectedObject) {
95 #if ENABLE(OILPAN)
96 wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCoun t() - 1, 0);
97 #endif
98 }
90 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, objec t); 99 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, objec t);
91 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_c ast<WrapperTypeInfo*>(wrapperTypeInfo)); 100 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_c ast<WrapperTypeInfo*>(wrapperTypeInfo));
92 // Clear out the last internal field, which is assumed to contain a vali d persistent pointer value.
93 wrapper->SetAlignedPointerInInternalField(wrapper->InternalFieldCount() - 1, 0);
94 } 101 }
95 102
96 inline void V8DOMWrapper::setNativeInfoWithPersistentHandle(v8::Handle<v8::O bject> wrapper, const WrapperTypeInfo* wrapperTypeInfo, void* object, Persistent Node* handle) 103 inline void V8DOMWrapper::setNativeInfoWithPersistentHandle(v8::Handle<v8::O bject> wrapper, const WrapperTypeInfo* wrapperTypeInfo, void* object, Persistent Node* handle)
97 { 104 {
98 ASSERT(wrapper->InternalFieldCount() >= 3); 105 ASSERT(wrapper->InternalFieldCount() >= 3);
99 ASSERT(object); 106 ASSERT(object);
100 ASSERT(wrapperTypeInfo); 107 ASSERT(wrapperTypeInfo);
101 ASSERT(wrapperTypeInfo->gcType != RefCountedObject); 108 ASSERT(wrapperTypeInfo->gcType != RefCountedObject);
102 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, objec t); 109 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperObjectIndex, objec t);
103 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_c ast<WrapperTypeInfo*>(wrapperTypeInfo)); 110 wrapper->SetAlignedPointerInInternalField(v8DOMWrapperTypeIndex, const_c ast<WrapperTypeInfo*>(wrapperTypeInfo));
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 v8::Handle<v8::Context> context() const { return m_context; } 173 v8::Handle<v8::Context> context() const { return m_context; }
167 174
168 private: 175 private:
169 bool m_didEnterContext; 176 bool m_didEnterContext;
170 v8::Handle<v8::Context> m_context; 177 v8::Handle<v8::Context> m_context;
171 }; 178 };
172 179
173 } 180 }
174 181
175 #endif // V8DOMWrapper_h 182 #endif // V8DOMWrapper_h
OLDNEW
« Source/bindings/templates/interface.h ('K') | « Source/bindings/tests/results/V8TestNode.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698