Example #1
0
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);
}