| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 * | 50 * |
| 51 * This class provides the internal pointer to be stored in the wrapper objects, | 51 * This class provides the internal pointer to be stored in the wrapper objects, |
| 52 * and its conversions from / to the DOM instances. | 52 * and its conversions from / to the DOM instances. |
| 53 * | 53 * |
| 54 * Note that this class must not have vtbl (any virtual function) or any member | 54 * Note that this class must not have vtbl (any virtual function) or any member |
| 55 * variable which increase the size of instances. Some of the classes sensitive | 55 * variable which increase the size of instances. Some of the classes sensitive |
| 56 * to the size inherit from this class. So this class must be zero size. | 56 * to the size inherit from this class. So this class must be zero size. |
| 57 */ | 57 */ |
| 58 class ScriptWrappableBase { | 58 class ScriptWrappableBase { |
| 59 public: | 59 public: |
| 60 template <class T> static T* fromInternalPointer(void* internalPointer) | 60 template <class T> static T* fromInternalPointer(ScriptWrappableBase* intern
alPointer) |
| 61 { | 61 { |
| 62 // Check if T* is castable to ScriptWrappableBase*, which means T | 62 // Check if T* is castable to ScriptWrappableBase*, which means T |
| 63 // doesn't have two or more ScriptWrappableBase as superclasses. | 63 // doesn't have two or more ScriptWrappableBase as superclasses. |
| 64 // If T has two ScriptWrappableBase as superclasses, conversions | 64 // If T has two ScriptWrappableBase as superclasses, conversions |
| 65 // from T* to ScriptWrappableBase* are ambiguous. | 65 // from T* to ScriptWrappableBase* are ambiguous. |
| 66 ASSERT(static_cast<ScriptWrappableBase*>(static_cast<T*>(static_cast<Scr
iptWrappableBase*>(internalPointer)))); | 66 ASSERT(static_cast<ScriptWrappableBase*>(static_cast<T*>(internalPointer
))); |
| 67 return static_cast<T*>(static_cast<ScriptWrappableBase*>(internalPointer
)); | 67 return static_cast<T*>(internalPointer); |
| 68 } | 68 } |
| 69 void* toInternalPointer() { return this; } | 69 ScriptWrappableBase* toInternalPointer() { return this; } |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 /** | 72 /** |
| 73 * ScriptWrappable wraps a V8 object and its WrapperTypeInfo. | 73 * ScriptWrappable wraps a V8 object and its WrapperTypeInfo. |
| 74 * | 74 * |
| 75 * ScriptWrappable acts much like a v8::Persistent<> in that it keeps a | 75 * ScriptWrappable acts much like a v8::Persistent<> in that it keeps a |
| 76 * V8 object alive. Under the hood, however, it keeps either a TypeInfo | 76 * V8 object alive. Under the hood, however, it keeps either a TypeInfo |
| 77 * object or an actual v8 persistent (or is empty). | 77 * object or an actual v8 persistent (or is empty). |
| 78 * | 78 * |
| 79 * The physical state space of ScriptWrappable is: | 79 * The physical state space of ScriptWrappable is: |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 // FIXME: I noticed that 50%~ of minor GC cycle times can be consumed | 298 // FIXME: I noticed that 50%~ of minor GC cycle times can be consumed |
| 299 // inside data.GetParameter()->deref(), which causes Node destructions.
We should | 299 // inside data.GetParameter()->deref(), which causes Node destructions.
We should |
| 300 // make Node destructions incremental. | 300 // make Node destructions incremental. |
| 301 releaseObject(data.GetValue()); | 301 releaseObject(data.GetValue()); |
| 302 } | 302 } |
| 303 }; | 303 }; |
| 304 | 304 |
| 305 } // namespace blink | 305 } // namespace blink |
| 306 | 306 |
| 307 #endif // ScriptWrappable_h | 307 #endif // ScriptWrappable_h |
| OLD | NEW |