void InferredType::removeStructure() { // FIXME: Find an elegant and cheap way to thread information about why we got here into the fire // detail in set(). VM& vm = *Heap::heap(this)->vm(); Descriptor oldDescriptor; Descriptor newDescriptor; { ConcurrentJSLocker locker(m_lock); oldDescriptor = descriptor(locker); newDescriptor = oldDescriptor; newDescriptor.removeStructure(); if (!set(locker, vm, newDescriptor)) return; } InferredTypeFireDetail detail(this, nullptr, oldDescriptor, newDescriptor, JSValue()); m_watchpointSet.fireAll(vm, detail); }