- ExternalType get() const { return HandleTypes<T>::getFromSlot(slot()); }
-
- void clear()
- {
- if (!slot())
- return;
- HandleHeap::heapFor(slot())->deallocate(slot());
- setSlot(0);
- }
-
- void set(JSGlobalData& globalData, ExternalType value, WeakHandleOwner* weakOwner = 0, void* context = 0)
- {
- if (!slot()) {
- setSlot(globalData.allocateGlobalHandle());
- HandleHeap::heapFor(slot())->makeWeak(slot(), weakOwner, context);
- }
- ASSERT(HandleHeap::heapFor(slot())->hasWeakOwner(slot(), weakOwner));
- set(value);
- }