V8PerContextData::~V8PerContextData()
{
    v8::HandleScope handleScope(m_isolate);
    V8PerContextDataHolder::from(m_context.newLocal(m_isolate))->setPerContextData(0);

    disposeMapWithUnsafePersistentValues(&m_wrapperBoilerplates);
    disposeMapWithUnsafePersistentValues(&m_constructorMap);
    m_customElementBindings.clear();
}
void V8PerContextData::dispose()
{
    v8::HandleScope handleScope(m_isolate);
    v8::Local<v8::Context>::New(m_isolate, m_context)->SetAlignedPointerInEmbedderData(v8ContextPerContextDataIndex, 0);

    disposeMapWithUnsafePersistentValues(&m_wrapperBoilerplates);
    disposeMapWithUnsafePersistentValues(&m_constructorMap);
    m_customElementBindings.clear();

    m_context.Dispose();
}