- V8HiddenValue::setHiddenValue(isolate, owner, V8HiddenValue::condition(isolate), filter);
- m_filter.setWeak(this, &setWeakCallback);
+ // ..acceptNode(..) will only dispatch m_filter if m_filter->IsObject().
+ // We'll make sure m_filter is either usable by acceptNode or empty.
+ // (See the fast/dom/node-filter-gc test for a case where 'empty' happens.)
+ if (!filter.IsEmpty() && filter->IsObject()) {
+ V8HiddenValue::setHiddenValue(isolate, owner, V8HiddenValue::condition(isolate), filter);
+ m_filter.set(isolate, filter);
+ m_filter.setWeak(this, &setWeakCallback);
+ }