Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
#include <qv4internalclass_p.h>
Classes | |
struct | IndexAndAttribute |
Public Types | |
enum | Flag { NotExtensible = 1 << 0 , Sealed = 1 << 1 , Frozen = 1 << 2 , UsedAsProto = 1 << 3 , Locked = 1 << 4 } |
enum | { MaxRedundantTransitions = 255 } |
typedef InternalClassTransition | Transition |
Static Public Member Functions | |
static void | addMember (QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry) |
static void | changeMember (QV4::Object *object, PropertyKey id, PropertyAttributes data, InternalClassEntry *entry=nullptr) |
static void | removeMember (QV4::Object *object, PropertyKey identifier) |
static void | markObjects (Heap::Base *ic, MarkStack *stack) |
Static Public Member Functions inherited from QV4::Heap::Base | |
static void | markObjects (Base *, MarkStack *) |
Public Attributes | |
ExecutionEngine * | engine |
const VTable * | vtable |
quintptr | protoId |
Heap::Object * | prototype |
InternalClass * | parent |
PropertyHash | propertyTable |
SharedInternalClassData< PropertyKey > | nameMap |
SharedInternalClassData< PropertyAttributes > | propertyData |
QVarLengthArray< Transition, 1 > | transitions |
uint | size |
quint8 | numRedundantTransitions |
quint8 | flags |
Public Attributes inherited from QV4::Heap::Base | |
Pointer< InternalClass *, 0 > | internalClass |
Friends | |
struct | ::QV4::ExecutionEngine |
Definition at line 316 of file qv4internalclass_p.h.
Definition at line 336 of file qv4internalclass_p.h.
anonymous enum |
Enumerator | |
---|---|
MaxRedundantTransitions |
Definition at line 324 of file qv4internalclass_p.h.
Enumerator | |
---|---|
NotExtensible | |
Sealed | |
Frozen | |
UsedAsProto | |
Locked |
Definition at line 317 of file qv4internalclass_p.h.
Heap::InternalClass * QV4::Heap::InternalClass::addMember | ( | PropertyKey | identifier, |
PropertyAttributes | data, | ||
InternalClassEntry * | entry = nullptr ) |
Definition at line 572 of file qv4internalclass.cpp.
References changeMember(), findEntry(), QV4::PropertyKey::isStringOrSymbol(), and Q_ASSERT.
|
static |
Definition at line 557 of file qv4internalclass.cpp.
References changeMember(), QV4::Heap::Base::internalClass, and Q_ASSERT.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), QV4::InternalClass::addMember(), and QV4::Object::insertMember().
Heap::InternalClass * QV4::Heap::InternalClass::asProtoClass | ( | ) |
Definition at line 743 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isUsedAsProto(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), QV4::InternalClassTransition::ProtoClass, Q_ASSERT, and UsedAsProto.
InternalClass * QV4::Heap::InternalClass::canned | ( | ) |
Definition at line 711 of file qv4internalclass.cpp.
References engine, and sealed().
Heap::InternalClass * QV4::Heap::InternalClass::changeMember | ( | PropertyKey | identifier, |
PropertyAttributes | data, | ||
InternalClassEntry * | entry = nullptr ) |
Definition at line 426 of file qv4internalclass.cpp.
References QV4::Heap::addDummyEntry(), QV4::Heap::cleanInternalClass(), engine, findEntry(), QV4::PropertyHash::Entry::index, lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, QV4::PropertyHash::Entry::setterIndex, and size.
Referenced by addMember(), addMember(), QV4::InternalClass::changeMember(), changeMember(), removeMember(), and QV4::ArrayObject::virtualDefineOwnProperty().
|
static |
Definition at line 303 of file qv4internalclass.cpp.
References changeMember(), QV4::Heap::Base::internalClass, and Q_ASSERT.
|
inline |
Definition at line 466 of file qv4internalclass_p.h.
References prototype.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), QV4::InternalClass::changePrototype(), QV4::ErrorObject::create(), QV4::ErrorObject::create(), QV4::ErrorObject::create(), QV4::StringPrototype::init(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 461 of file qv4internalclass_p.h.
References vtable.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), and QV4::InternalClass::changeVTable().
InternalClass * QV4::Heap::InternalClass::cryopreserved | ( | ) |
Definition at line 719 of file qv4internalclass.cpp.
References engine, and frozen().
void QV4::Heap::InternalClass::destroy | ( | ) |
Definition at line 270 of file qv4internalclass.cpp.
References QV4::PropertyHash::~PropertyHash(), QV4::Heap::Base::destroy(), engine, QV4::Heap::Base::isMarked(), nameMap, parent, propertyData, propertyTable, Q_ASSERT, and transitions.
|
inline |
Definition at line 374 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyData, propertyTable, Q_ASSERT, and QV4::PropertyHash::Entry::setterIndex.
|
inline |
Definition at line 363 of file qv4internalclass_p.h.
References QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyTable, and Q_ASSERT.
Referenced by addMember(), and changeMember().
|
inline |
Definition at line 394 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
|
inline |
Definition at line 408 of file qv4internalclass_p.h.
References QV4::Attr_Invalid, QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyData, propertyTable, Q_ASSERT, and QV4::PropertyHash::Entry::setterIndex.
Heap::InternalClass * QV4::Heap::InternalClass::frozen | ( | ) |
Definition at line 679 of file qv4internalclass.cpp.
References attrs, engine, QV4::InternalClassTransition::Frozen, Frozen, i, QV4::PropertyKey::invalid(), isFrozen(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, and size.
Referenced by cryopreserved().
|
inline |
Definition at line 427 of file qv4internalclass_p.h.
References QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
void QV4::Heap::InternalClass::init | ( | ExecutionEngine * | engine | ) |
Definition at line 221 of file qv4internalclass.cpp.
References engine, QV4::Heap::Base::init(), QV4::Heap::Base::internalClass, nameMap, QV4::ExecutionEngine::newProtoId(), propertyData, propertyTable, protoId, transitions, and vtable.
Referenced by QV4::ExecutionEngine::ExecutionEngine(), and QV4::ExecutionEngine::newClass().
void QV4::Heap::InternalClass::init | ( | Heap::InternalClass * | other | ) |
Definition at line 245 of file qv4internalclass.cpp.
References engine, QV4::Heap::Base::init(), QV4::Heap::Base::internalClass, QV4::WriteBarrier::isInsertionBarrier, QV4::WriteBarrier::markCustom(), nameMap, QV4::ExecutionEngine::newProtoId(), numRedundantTransitions, other(), parent, propertyData, propertyTable, protoId, prototype, transitions, and vtable.
|
inline |
Definition at line 344 of file qv4internalclass_p.h.
References NotExtensible.
Referenced by nonExtensible(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 346 of file qv4internalclass_p.h.
References Frozen.
Referenced by freeze_recursive(), frozen(), isImplicitlyFrozen(), and sealed().
bool QV4::Heap::InternalClass::isImplicitlyFrozen | ( | ) | const |
Definition at line 727 of file qv4internalclass.cpp.
References attrs, i, isFrozen(), propertyData, and size.
|
inline |
Definition at line 348 of file qv4internalclass_p.h.
References Locked.
Referenced by locked(), QV4::ExecutionEngine::lockObject(), and QV4::Object::virtualSetPrototypeOf().
|
inline |
Definition at line 345 of file qv4internalclass_p.h.
References Sealed.
Referenced by sealed().
|
inline |
Definition at line 347 of file qv4internalclass_p.h.
References UsedAsProto.
Referenced by asProtoClass(), and updateProtoUsage().
ReturnedValue QV4::Heap::InternalClass::keyAt | ( | uint | index | ) | const |
Definition at line 292 of file qv4internalclass.cpp.
References nameMap, Q_ASSERT, and QV4::Encode::undefined().
Referenced by QV4DataCollector::collectScope().
InternalClass * QV4::Heap::InternalClass::locked | ( | ) |
Definition at line 539 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isLocked(), QV4::InternalClassTransition::Locked, Locked, lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), and Q_ASSERT.
InternalClassTransition & QV4::Heap::InternalClass::lookupOrInsertTransition | ( | const InternalClassTransition & | t | ) |
Definition at line 312 of file qv4internalclass.cpp.
References it, and transitions.
Referenced by asProtoClass(), changeMember(), frozen(), locked(), nonExtensible(), and sealed().
|
static |
Definition at line 781 of file qv4internalclass.cpp.
References QV4::Heap::Base::mark(), nameMap, parent, and prototype.
Heap::InternalClass * QV4::Heap::InternalClass::nonExtensible | ( | ) |
Definition at line 521 of file qv4internalclass.cpp.
References engine, flags, QV4::PropertyKey::invalid(), isExtensible(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), QV4::InternalClassTransition::NotExtensible, NotExtensible, and Q_ASSERT.
|
static |
Definition at line 630 of file qv4internalclass.cpp.
References QV4::Attr_Invalid, changeMember(), QV4::Heap::Base::internalClass, and Q_ASSERT.
Heap::InternalClass * QV4::Heap::InternalClass::sealed | ( | ) |
Definition at line 647 of file qv4internalclass.cpp.
References attrs, engine, i, QV4::PropertyKey::invalid(), isFrozen(), isSealed(), lookupOrInsertTransition(), QV4::ExecutionEngine::newClass(), propertyData, Q_ASSERT, QV4::InternalClassTransition::Sealed, Sealed, and size.
Referenced by canned().
void QV4::Heap::InternalClass::updateProtoUsage | ( | Heap::Object * | o | ) |
Definition at line 772 of file qv4internalclass.cpp.
References QV4::EngineBase::Class_Empty, engine, QV4::EngineBase::internalClasses(), isUsedAsProto(), o, prototype, Q_ASSERT, and QV4::Heap::updateProtoUsage().
|
inline |
Definition at line 440 of file qv4internalclass_p.h.
References QV4::PropertyHash::Entry::index, QV4::PropertyHash::lookup(), propertyData, propertyTable, and Q_ASSERT.
|
friend |
Definition at line 482 of file qv4internalclass_p.h.
ExecutionEngine* QV4::Heap::InternalClass::engine |
Definition at line 326 of file qv4internalclass_p.h.
Referenced by asProtoClass(), canned(), changeMember(), QV4::Heap::cleanInternalClass(), cryopreserved(), destroy(), frozen(), QV4::Heap::Atomics::init(), QV4::Heap::JsonObject::init(), QV4::Heap::MathObject::init(), QV4::Heap::Reflect::init(), QV4::Heap::NodePrototype::init(), QV4::Heap::QQuickJSContext2DPixelData::init(), QV4::Heap::ArrayObject::init(), QV4::Heap::ProxyFunctionObject::init(), init(), init(), locked(), QV4::FunctionObject::name(), nonExtensible(), QV4::Object::putValue(), QV4::Heap::VariantObject::removeVmePropertyReference(), sealed(), QV4::ArrayObject::toQStringList(), updateProtoUsage(), and QV4::Heap::updateProtoUsage().
quint8 QV4::Heap::InternalClass::flags |
Definition at line 342 of file qv4internalclass_p.h.
Referenced by asProtoClass(), locked(), and nonExtensible().
SharedInternalClassData<PropertyKey> QV4::Heap::InternalClass::nameMap |
Definition at line 333 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), destroy(), freeze_recursive(), init(), init(), QV4::ExecutionEngine::initializeGlobal(), keyAt(), and markObjects().
quint8 QV4::Heap::InternalClass::numRedundantTransitions |
Definition at line 341 of file qv4internalclass_p.h.
Referenced by QV4::Heap::cleanInternalClass(), and init().
InternalClass* QV4::Heap::InternalClass::parent |
Definition at line 330 of file qv4internalclass_p.h.
Referenced by QV4::Heap::cleanInternalClass(), destroy(), init(), and markObjects().
SharedInternalClassData<PropertyAttributes> QV4::Heap::InternalClass::propertyData |
Definition at line 334 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), changeMember(), destroy(), find(), findValueOrGetter(), findValueOrSetter(), frozen(), indexOfValueOrGetter(), init(), init(), isImplicitlyFrozen(), sealed(), and verifyIndex().
PropertyHash QV4::Heap::InternalClass::propertyTable |
Definition at line 332 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), destroy(), find(), findEntry(), findValueOrGetter(), findValueOrSetter(), indexOfValueOrGetter(), init(), init(), and verifyIndex().
quintptr QV4::Heap::InternalClass::protoId |
Definition at line 328 of file qv4internalclass_p.h.
Referenced by init(), init(), and QV4::Heap::updateProtoUsage().
Heap::Object* QV4::Heap::InternalClass::prototype |
Definition at line 329 of file qv4internalclass_p.h.
Referenced by QV4::Runtime::CallProperty::call(), changePrototype(), init(), markObjects(), updateProtoUsage(), QV4::Heap::updateProtoUsage(), and QV4::Object::virtualSetPrototypeOf().
uint QV4::Heap::InternalClass::size |
Definition at line 340 of file qv4internalclass_p.h.
Referenced by QV4::Heap::addDummyEntry(), QV4::MemoryManager::allocateObject(), changeMember(), QV4DataCollector::collectScope(), freeze_recursive(), frozen(), isImplicitlyFrozen(), QV4::ExecutionContext::newBlockContext(), and sealed().
QVarLengthArray<Transition, 1> QV4::Heap::InternalClass::transitions |
Definition at line 337 of file qv4internalclass_p.h.
Referenced by destroy(), init(), init(), lookupOrInsertTransition(), and QV4::Heap::updateProtoUsage().
const VTable* QV4::Heap::InternalClass::vtable |
Definition at line 327 of file qv4internalclass_p.h.
Referenced by QV4::MemoryManager::allocManaged(), changeVTable(), init(), and init().